![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
mdevils |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Я хотел немного рассказать о проекте, который пришел мне в голову, надеюсь на помощь в его реализации.
В настоящее время ASP.NET контролы очень тяжелые и неповоротливые. Будучи очень универсальными они выполняют много лишней работы, хранят очень много лишних данных в ViewState, из которых я, например, использую максимум 10%. Также скудно обстоят дела с JavaScript. Очень много работы производится на сервере, минимум на клиенте. Серверные контролы слабо поддаются управлению на клиентской стороне. Падает интерактивность сайта. Идея состоит в том, чтобы разработать библиотеку базовых классов для разработки легких, быстрых и интерактивных компонентов. Суть в том, чтобы: 1. Обойти использование ViewState, а использовать другой, более производительный метод. 2. Создать возможность легкой разработки объектного представления серверного контрола на клиентской стороне и реализовать все возможности для простого взаимодействия контролов на клиенте, который будет не сильно уступать серверному. 3. На основе пункта 2 реализовать AJAX-библиотеку, суть работы которой будет состоять не в обмене HTML-кодов и переправкой огромных ViewState с клиента на сервер, а в отсылке клиентским реализациям контролов только данных! Чтобы они на их основе обновляли свое представление. Идея еще сырая, надо думать. Кто хотел бы присоединиться? |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
Нда... ну сейчас многие контролами занимаются. Но давайте поконкретнее?
Какой? "Легкой разработки" и "реализовать все возможности"? Тут с существующими, "допотопными" (с Вашей точки зрения) контролами море проблем, даже когда просто к разным браузерам адаптируешь. Не до того, чтобы "реализовать все возможности". Тем более, что "все возможности" подразумевают активную работу с серверными хранилищами данных... Так что будут проблемы с пунктом 3. Во-первых, можно и без AJAX-библиотек. Напрямую через скрипты и XMLHttpRequest работать - это ИМХО больше будет соответствовать планам пункта 2. Ну а во-вторых, ViewState как раз и содержит данные. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
mdevils |
|
||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Например, Hidden-поля. Причем по-умолчанию сделать хранение в них открытым текстом, но с возможность выборочно включить шифрование для конфиденциальных данных. Такой метод даст возможности чтения данных JS-скриптам, что очень важно!
Я не говорю о готовых AJAX-Библиотеках. Реализовав подобную схему - несложно будет написать свою AJAX-систему без явных недостатков MS AJAX и тп. |
||||
|
|||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
Замечательно!!!
А чем ViewState - не Hidden-поле?! К тому же открытый текст .... Данные открытым тектстом?! Я правильно понял? Т.е. кто-то там SSL, https разрабатывает, на VPN лицензии покупают, а мы тут все проблемы им решить нашими контролами предложим?! Я небольшой специалист по веб-хакингу, но думаю это будет просто новый виток карьеры многих и многих поколений этих креативных товарищей. P.S. А да, просмотрел фразу "но с возможность выборочно включить шифрование"... Т.е. клиент наших контролов (или вообще дэвишка-веб-клиент) должен включать шифрование сам, для каждого контрола по-отдельности (и может быть даже алгоритм шифрования для каждого контрола выбирать)? Нет. По судам затаскают. ![]() Это сообщение отредактировал(а) tol05 - 13.12.2007, 23:31 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
mdevils |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
ViewState - это Hidden-поле, в котором данные хранятся одним фрагментом, сериализованные и переведенные в Base64. Такие даные невозможно прочитать из JS'а, изменить с помощью JS и тп. Я говорю о том, что каждое отдельное значение следует хранить в отдельном скрытом поле. Причем каждый контрол сам определяет какие свойства он хранит в открытом виде(и которые будут доступны для JS), а какие данные только серверные и должны быть зашифрованы симметричным методом с переменным(возможно сессионным, тут думать надо) ключем на сервере. Соответственно, шифрованные данные не доступны для JS. А к открытым данным не надо будет применять Base64 и сериализацию. Можно использовать конверторы. Это, возможно, потребует больше усилий для хранения данных на первых этапах, но со временем можно реализовать нужные интерфейсы для наиболее популярных типов. Конверторы работают гораздо быстрее сериализаторов. |
|||
|
||||
Zakonnic |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 25.4.2006 Репутация: 3 Всего: 6 |
Ну зачем так с человеком? Он и сам на все грабли наступит, а тут его этими граблями сразу по голове.
![]() mdevils, ![]() В общем библиотека быстрых компонентов - это хорошо. Серьезно. Давай думать. 1. ViewState используется чтобы запоминать состояние контролов, когда оно изменяется программно. Label1.Text="Hello,world!"; -> записалось во ViewState. Опытные погроммисты используют это аккуратно и не раздувают его. Но если надо радикально, убираешь нафиг постбаки - вот и не нужен вьюстейт. Постбаки, как я понял, в твоей модели заменяются аяксом. Одна беда - синхронизация клиента и сервера. Как заставить их "думать об одном и том же" при сохранении "простоты разработки" с помощью таких контролов? Хорошо бы пару идей сюда... 2. Я не представляю, какое может быть взаимодействие контролов на клиенте в HTML. Поэтому во-первых ![]() 3. Аякс никогда не отправляет на сервер вьюстейт. Для этого нужен сабмит формы. А чтобы построить html по данным требуется очень серьезный код. Переправка кода может обойтись довольно дорого. Для самопальных контролов без настроек это еще работает, но в общем случае отправить готовый html может быть даже выгоднее. --------------------
...и никогда не пишите в комментариях правду |
|||
|
||||
mdevils |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
1. Постбеки сохраняются в такой модели, но: Данные хранятся не во ViewState, а в скрытых полях, что дает JavaScript'у возможность читать их(открытые). + Для ограничения размера таких данных ввести возможности частичного отключения хранения таких данных. Например, в 95% случаев оформление хранить не надо, т.к. оно задается на стадии Init декларативно. 2. Silverlight и Flash пролетают. Есть много статей с критикой. Например, Silverlight и Flash нереально полно индексировать поисковиками, а если они еще и подгружают что-то - то [censored 6]). Взаимодействие на клиенте подобно взаимодействию на сервере, только без конвейра. Каждый контрол - класс. Он содержит все необходимые методы работы с контролом. Тут надо учитывать тот момент, что необходимо сохранить функциональность для броузеров без JavaScript. ASP.NET не смогли даже в этом плане до ума довести. Элемент LinkButton не работает без JS. В нем надо было делать наоборот: Обработчик писать в onclick, а href оставить по умолчанию "#", чтобы можно было указать адрес для поисковиков и броузеров без JS. По этим причинам ASP.NET сайты нормально не индексируются, и приходится прикладывать много сил чтобы наладить индексацию. 3. Microsoft AJAX при каждом асинхронном запросе полностью отправляет ViewState на сервер и обратно. Все библиотеки AJAX для .NET работают аналогично. |
|||
|
||||
mdevils |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Также хочется встроить в данную библиотеку DragAndDrop возможности, эффекты.
Такие вещи могут привлечь людей не только функционалом, но и визуальным представлением. |
|||
|
||||
Zakonnic |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 25.4.2006 Репутация: 3 Всего: 6 |
Ага. Понятно... что ничего не понятно. :( То есть я конечно могу предположить, что задача сводится к переписыванию System.Web на JS + кучу серверных классов, рулящих потоками JS, но все таки не буду -
![]() И еще - как их писать? Если я хочу изменить цвет текста по нажатию кнопки, нужен JS. Сделать это я могу и сейчас. Чем оно будет лучше? PS. Сильверлайт кстати теоретически можно успешно индексировать - XAML все-таки. И ссылки почти как настоящие ![]() --------------------
...и никогда не пишите в комментариях правду |
|||
|
||||
Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
mdevils, у тебя не получится созвать команду до тех пор, пока ты не начнешь писать хоть что-нибудь сам. Т.е. напиши хотя бы один сложненький контрол, типа GridView пускай у него будет только способность редактировать, вставлять и отображать записи (не нужно там всякие провайдеры подключать). Покажи его достоинства, чем твой GridView лучше другого.
Но словах оно то красиво звучит, но ребята в M$ далеко не дураки, и я совсем не согласен, что asp.net ajax коряво реализован (где-то там вверху видел). А ты пробовал реализовывать его самому ??? ты пробовал управлять событиями, восстанавливать состояние страницы. Ведь это все тоже не так уж и просто. Да и потом, программисты по своей натуре народ ленивый ![]() -------------------- |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |