Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проект: Библиотека GUI для ASP.NET 
:(
    Опции темы
mdevils
Дата 13.12.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Я хотел немного рассказать о проекте, который пришел мне в голову, надеюсь на помощь в его реализации.

В настоящее время ASP.NET контролы очень тяжелые и неповоротливые. Будучи очень универсальными они выполняют много лишней работы, хранят очень много лишних данных в ViewState, из которых я, например, использую максимум 10%.
Также скудно обстоят дела с JavaScript. Очень много работы производится на сервере, минимум на клиенте. Серверные контролы слабо поддаются управлению на клиентской стороне. Падает интерактивность сайта.

Идея состоит в том, чтобы разработать библиотеку базовых классов для разработки легких, быстрых и интерактивных компонентов. Суть в том, чтобы:
1. Обойти использование ViewState, а использовать другой, более производительный метод.
2. Создать возможность легкой разработки объектного представления серверного контрола на клиентской стороне и реализовать все возможности для простого взаимодействия контролов на клиенте, который будет не сильно уступать серверному.
3. На основе пункта 2 реализовать AJAX-библиотеку, суть работы которой будет состоять не в обмене HTML-кодов и переправкой огромных ViewState с клиента на сервер, а в отсылке клиентским реализациям контролов только данных! Чтобы они на их основе обновляли свое представление.

Идея еще сырая, надо думать. Кто хотел бы присоединиться?
PM MAIL   Вверх
tol05
Дата 13.12.2007, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



Нда... ну сейчас многие контролами занимаются. Но давайте поконкретнее?

Цитата(mdevils @  13.12.2007,  19:57 Найти цитируемый пост)
Обойти использование ViewState, а использовать другой, более производительный метод

Какой?

Цитата(mdevils @  13.12.2007,  19:57 Найти цитируемый пост)
Создать возможность легкой разработки объектного представления серверного контрола на клиентской стороне и реализовать все возможности для простого взаимодействия контролов на клиенте, который будет не сильно уступать серверному.

"Легкой разработки" и "реализовать все возможности"? Тут с существующими, "допотопными" (с Вашей точки зрения) контролами море проблем, даже когда просто к разным браузерам адаптируешь. Не до того, чтобы "реализовать все возможности". Тем более, что "все возможности" подразумевают активную работу с серверными хранилищами данных... Так что будут проблемы с пунктом 3.

Цитата(mdevils @  13.12.2007,  19:57 Найти цитируемый пост)
На основе пункта 2 реализовать AJAX-библиотеку, суть работы которой будет состоять не в обмене HTML-кодов и переправкой огромных ViewState с клиента на сервер, а в отсылке клиентским реализациям контролов только данных! Чтобы они на их основе обновляли свое представление.

Во-первых, можно и без AJAX-библиотек. Напрямую через скрипты и XMLHttpRequest работать - это ИМХО больше будет соответствовать планам пункта 2.
Ну а во-вторых, ViewState как раз и содержит данные.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
mdevils
Дата 13.12.2007, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Цитата

>> Обойти использование ViewState, а использовать другой, более производительный метод

Какой?


Например, Hidden-поля. Причем по-умолчанию сделать хранение в них открытым текстом, но с возможность выборочно включить шифрование для конфиденциальных данных.
Такой метод даст возможности чтения данных JS-скриптам, что очень важно!

Цитата

Во-первых, можно и без AJAX-библиотек. Напрямую через скрипты и XMLHttpRequest работать - это ИМХО больше будет соответствовать планам пункта 2.
Ну а во-вторых, ViewState как раз и содержит данные.


Я не говорю о готовых AJAX-Библиотеках. Реализовав подобную схему - несложно будет написать свою AJAX-систему без явных недостатков MS AJAX и тп.
PM MAIL   Вверх
tol05
Дата 13.12.2007, 23:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



Замечательно!!! 
А чем ViewState -  не Hidden-поле?!

К тому же открытый текст .... Данные открытым тектстом?! Я правильно понял? Т.е. кто-то там SSL, https разрабатывает, на VPN лицензии покупают, а мы тут все проблемы им решить нашими контролами предложим?!

Я небольшой специалист по веб-хакингу, но думаю это будет просто новый виток карьеры многих и многих поколений этих креативных товарищей.

P.S. А да, просмотрел фразу "но с возможность выборочно включить шифрование"... Т.е. клиент наших контролов (или вообще дэвишка-веб-клиент) должен включать шифрование сам, для каждого контрола по-отдельности (и может быть даже алгоритм шифрования для каждого контрола выбирать)?

Нет. По судам затаскают. smile

Это сообщение отредактировал(а) tol05 - 13.12.2007, 23:31


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
mdevils
Дата 14.12.2007, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Цитата

Замечательно!!! 
А чем ViewState -  не Hidden-поле?!

К тому же открытый текст .... Данные открытым тектстом?! Я правильно понял? Т.е. кто-то там SSL, https разрабатывает, на VPN лицензии покупают, а мы тут все проблемы им решить нашими контролами предложим?!

Я небольшой специалист по веб-хакингу, но думаю это будет просто новый виток карьеры многих и многих поколений этих креативных товарищей.

P.S. А да, просмотрел фразу "но с возможность выборочно включить шифрование"... Т.е. клиент наших контролов (или вообще дэвишка-веб-клиент) должен включать шифрование сам, для каждого контрола по-отдельности (и может быть даже алгоритм шифрования для каждого контрола выбирать)?

Нет. По судам затаскают. smile


ViewState - это Hidden-поле, в котором данные хранятся одним фрагментом, сериализованные и переведенные в Base64. Такие даные невозможно прочитать из JS'а, изменить с помощью JS и тп.
Я говорю о том, что каждое отдельное значение следует хранить в отдельном скрытом поле. Причем каждый контрол сам определяет какие свойства он хранит в открытом виде(и которые будут доступны для JS), а какие данные только серверные и должны быть зашифрованы симметричным методом с переменным(возможно сессионным, тут думать надо) ключем на сервере. Соответственно, шифрованные данные не доступны для JS. А к открытым данным не надо будет применять Base64 и сериализацию. Можно использовать конверторы. Это, возможно, потребует больше усилий для хранения данных на первых этапах, но со временем можно реализовать нужные интерфейсы для наиболее популярных типов. Конверторы работают гораздо быстрее сериализаторов.
PM MAIL   Вверх
Zakonnic
Дата 14.12.2007, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 25.4.2006

Репутация: 3
Всего: 6



Ну зачем так с человеком? Он и сам на все грабли наступит, а тут его этими граблями сразу по голове.  smile 

mdevils,  smile  я бы даже к тебе присоединился - люблю велосипеды делать, хобби такое, но времени нет - надо настраивать убийцу моего последнего велосипеда. Потому что мой трехколесный, двигатель барахлит иногда и хорошо работает только одно колесо, пятиугольное, а технология треугольного колеса все еще нуждается в доработке.

В общем библиотека быстрых компонентов - это хорошо. Серьезно. Давай думать.

1. ViewState используется чтобы запоминать состояние контролов, когда оно изменяется программно. Label1.Text="Hello,world!"; -> записалось во ViewState. Опытные погроммисты используют это аккуратно и не раздувают его. Но если надо радикально, убираешь нафиг постбаки - вот и не нужен вьюстейт. Постбаки, как я понял, в твоей модели заменяются аяксом. Одна беда - синхронизация клиента и сервера. Как заставить их "думать об одном и том же" при сохранении "простоты разработки" с помощью таких контролов? Хорошо бы пару идей сюда...

2. Я не представляю, какое может быть взаимодействие контролов на клиенте в HTML. Поэтому во-первых  smile , а во-вторых с этим пунктом пока справляются Flash и уже Silverlight. Последний вообще выполняет свой код (dll) на клиенте. Ээээ... уж не он ли убийца твоего велосипеда?

3. Аякс никогда не отправляет на сервер вьюстейт. Для этого нужен сабмит формы. А чтобы построить html по данным требуется очень серьезный код. Переправка кода может обойтись довольно дорого. Для самопальных контролов без настроек это еще работает, но в общем случае отправить готовый html может быть даже выгоднее. 
--------------------
...и никогда не пишите в комментариях правду
PM MAIL ICQ   Вверх
mdevils
Дата 14.12.2007, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Цитата(Zakonnic @ 14.12.2007,  15:44)
Ну зачем так с человеком? Он и сам на все грабли наступит, а тут его этими граблями сразу по голове.  smile 

mdevils,  smile  я бы даже к тебе присоединился - люблю велосипеды делать, хобби такое, но времени нет - надо настраивать убийцу моего последнего велосипеда. Потому что мой трехколесный, двигатель барахлит иногда и хорошо работает только одно колесо, пятиугольное, а технология треугольного колеса все еще нуждается в доработке.

В общем библиотека быстрых компонентов - это хорошо. Серьезно. Давай думать.

1. ViewState используется чтобы запоминать состояние контролов, когда оно изменяется программно. Label1.Text="Hello,world!"; -> записалось во ViewState. Опытные погроммисты используют это аккуратно и не раздувают его. Но если надо радикально, убираешь нафиг постбаки - вот и не нужен вьюстейт. Постбаки, как я понял, в твоей модели заменяются аяксом. Одна беда - синхронизация клиента и сервера. Как заставить их "думать об одном и том же" при сохранении "простоты разработки" с помощью таких контролов? Хорошо бы пару идей сюда...

2. Я не представляю, какое может быть взаимодействие контролов на клиенте в HTML. Поэтому во-первых  smile , а во-вторых с этим пунктом пока справляются Flash и уже Silverlight. Последний вообще выполняет свой код (dll) на клиенте. Ээээ... уж не он ли убийца твоего велосипеда?

3. Аякс никогда не отправляет на сервер вьюстейт. Для этого нужен сабмит формы. А чтобы построить html по данным требуется очень серьезный код. Переправка кода может обойтись довольно дорого. Для самопальных контролов без настроек это еще работает, но в общем случае отправить готовый html может быть даже выгоднее.

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 работают аналогично.
PM MAIL   Вверх
mdevils
Дата 15.12.2007, 04:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Также хочется встроить в данную библиотеку DragAndDrop возможности, эффекты.
Такие вещи могут привлечь людей не только функционалом, но и визуальным представлением.
PM MAIL   Вверх
Zakonnic
Дата 17.12.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 25.4.2006

Репутация: 3
Всего: 6



Ага. Понятно... что ничего не понятно. :( То есть я конечно могу предположить, что задача сводится к переписыванию System.Web на JS + кучу серверных классов, рулящих потоками JS, но все таки не буду -  smile . Допустим, это уже написано, тогда как будет вести себя приложение с такими контролами? Хотелось бы поподробнее рассмотреть сценарий работы на любом примере.

И еще - как их писать? Если я хочу изменить цвет текста по нажатию кнопки, нужен JS. Сделать это я могу и сейчас. Чем оно будет лучше?

PS. Сильверлайт кстати теоретически можно успешно индексировать - XAML все-таки. И ссылки почти как настоящие smile Думаю, когда распространится, и поисковики к нему приспособятся. Но уж больно похожая там идея.
--------------------
...и никогда не пишите в комментариях правду
PM MAIL ICQ   Вверх
Mymik
Дата 17.12.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



mdevils, у тебя не получится созвать команду до тех пор, пока ты не начнешь писать хоть что-нибудь сам. Т.е. напиши хотя бы один сложненький контрол, типа GridView пускай у него будет только способность редактировать, вставлять и отображать записи (не нужно там всякие провайдеры подключать). Покажи его достоинства, чем твой GridView лучше другого.
Но словах оно то красиво звучит, но ребята в M$ далеко не дураки, и я совсем не согласен, что asp.net ajax коряво реализован (где-то там вверху видел). А ты пробовал реализовывать его самому ??? ты пробовал управлять событиями, восстанавливать состояние страницы. Ведь это все тоже не так уж и просто.
Да и потом, программисты по своей натуре народ ленивый smile. Так что пример своей работы в студию и только после этого ты сможешь расчитывать на хоть какую-нибудь поддержку со стороны посетителей форума. 


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0775 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.