ASP & MVC
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
ASP & MVC
I have worked some time with JSP and servlets, and of course followed MVC model.
Now need to do some stuff in ASP, and immediately discover a lot of limitations.
If somebody can share experience, that would be great.
Several questions i have:
1. How to reduce the overall page count? Let's say i have table and would like to browse and edit it. Then i must have browse page and one page for every operation like insert and update.
2. ASP does not allow put objects in Response. Is it good to put them in session?
I worry about performance, threading issues and so on.
3. I don't know how to determine if the session was reinstantiated. I need to track that issue. The only way i know is to check it for some object existence. If object is nothing, then session is new.
4. Is there any way to do something in object oriented style? I have to deal with plain ASP, no business objects written in C or VB or any other language. I guess i can create object in ASP, i would like to call it form other page. Seems like Server.Execute allows me to call another page, but that will lead to excessive amount of pages.
It's more architectural then programming questions. Just wondering how people do it right now. I din't use ASP for a long time and now need refresh everything.
Now need to do some stuff in ASP, and immediately discover a lot of limitations.
If somebody can share experience, that would be great.
Several questions i have:
1. How to reduce the overall page count? Let's say i have table and would like to browse and edit it. Then i must have browse page and one page for every operation like insert and update.
2. ASP does not allow put objects in Response. Is it good to put them in session?
I worry about performance, threading issues and so on.
3. I don't know how to determine if the session was reinstantiated. I need to track that issue. The only way i know is to check it for some object existence. If object is nothing, then session is new.
4. Is there any way to do something in object oriented style? I have to deal with plain ASP, no business objects written in C or VB or any other language. I guess i can create object in ASP, i would like to call it form other page. Seems like Server.Execute allows me to call another page, but that will lead to excessive amount of pages.
It's more architectural then programming questions. Just wondering how people do it right now. I din't use ASP for a long time and now need refresh everything.
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
Расскажу как я делаю. Для затравки.
1. Для каждой области (например для работы с одной таблице) пишется одна страничка, которая выполняет роль контроллера. Все запросы идут через нее, она определяет какую акцию выполнить и тренсферит запрос в другую страничку. Перед трансфером, обработанные данные сохраняются в сессии.
Для каждой процессинговой формы имеется своя акция. Таких несколько: browse, inserе, update, delete. Данные обрабатываются контроллером, все остальные странички, только показыват результат. В крайнем случае на них может быть клиентский скрипт. Все состояние приложения, такой как статус менюшек и контролов, хранится в сессии. Менюха в отдельном инклуде просто вставляется там где нужно. Она себя в зависимости от состояния, сохраненного в сессии, обрабатывает. Получается унифицрованно и кодируется только в одном месте.
2. Данные храняться в сессии и это гемморойно. Нужно их постоянно чистить, так как объекты не освобождаются пока на них есть ссылки. Думаю не собрать ли их в Dictionary и грохать только его? Ну почему нет возможности хранить объект, только во время обработки запроса?
3. Попрежнему не решил, стоит ли юзать куцые объектные возможности ASP.
Разделил функциональность по уровням и раскидал ее по отдельным includ'am. Представление таким образом вообще не общается с базой, все спятанов в бизнес слое. Это конечно все еще далеко от того, что предлагает делать MS, но кроме ASP ничего юзать нельзя.
Может кто предложить, что-нибуть более продвинутое? А если кто так делает, интересно знать какие грабли бывают. Меня несколько напрягает тот факт, что все сделано на скриптах. Производительность наверное будет не лучшая.
Еще как всегда вопрос - кто как делает пейджинг данных? Фильтры?
Работал ли кто с XML и Data Binding. На примерах то оно красиво, а как на практике сложно сказать.
1. Для каждой области (например для работы с одной таблице) пишется одна страничка, которая выполняет роль контроллера. Все запросы идут через нее, она определяет какую акцию выполнить и тренсферит запрос в другую страничку. Перед трансфером, обработанные данные сохраняются в сессии.
Для каждой процессинговой формы имеется своя акция. Таких несколько: browse, inserе, update, delete. Данные обрабатываются контроллером, все остальные странички, только показыват результат. В крайнем случае на них может быть клиентский скрипт. Все состояние приложения, такой как статус менюшек и контролов, хранится в сессии. Менюха в отдельном инклуде просто вставляется там где нужно. Она себя в зависимости от состояния, сохраненного в сессии, обрабатывает. Получается унифицрованно и кодируется только в одном месте.
2. Данные храняться в сессии и это гемморойно. Нужно их постоянно чистить, так как объекты не освобождаются пока на них есть ссылки. Думаю не собрать ли их в Dictionary и грохать только его? Ну почему нет возможности хранить объект, только во время обработки запроса?
3. Попрежнему не решил, стоит ли юзать куцые объектные возможности ASP.
Разделил функциональность по уровням и раскидал ее по отдельным includ'am. Представление таким образом вообще не общается с базой, все спятанов в бизнес слое. Это конечно все еще далеко от того, что предлагает делать MS, но кроме ASP ничего юзать нельзя.
Может кто предложить, что-нибуть более продвинутое? А если кто так делает, интересно знать какие грабли бывают. Меня несколько напрягает тот факт, что все сделано на скриптах. Производительность наверное будет не лучшая.
Еще как всегда вопрос - кто как делает пейджинг данных? Фильтры?
Работал ли кто с XML и Data Binding. На примерах то оно красиво, а как на практике сложно сказать.
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
-
- Уже с Приветом
- Posts: 1165
- Joined: 03 Jul 2002 20:43
- Location: AU
Re: ASP & MVC
NNemo wrote:1. How to reduce the overall page count? Let's say i have table and would like to browse and edit it. Then i must have browse page and one page for every operation like insert and update.
1. Уменьшить количество страниц существенно без усложнения приложения нельзя. Печальный факт. Ну можете обработку всех действий объединить на одной странице, передавая идентификатор действия в хидден поле типа action="insert".
NNemo wrote:2. ASP does not allow put objects in Response. Is it good to put them in session?
I worry about performance, threading issues and so on.
2. В Сессиии хранить стоит только идентификатор сессии, все остальное - избегать. Данные не стоит хранить в сессии. Плохо сказывается на perfomance and scalability. Тем более объекты. Для передачи данных от страницы к странице используйте хидден поля формы. Кстати, а какие объекты вы хотите хранить в сессии? Для доступа к БД используется пулинг (включить надо, если вдруг нет), а значит один из наилучших вариантов хранить ADOString переменную, хоть на уровне апликейшена, и RS.Open sql, ADOString откроется гораздо быстрее, чем с глобальным коннекшеном на странице (при присвоении строки коннекшена выбирается из пула свободный коннекшен соответсвующий заданной строке коннекшена). Execute команду коннекшена таким образом не используешь, но вместо можно использовать Command объект.
NNemo wrote:3. I don't know how to determine if the session was reinstantiated. I need to track that issue. The only way i know is to check it for some object existence. If object is nothing, then session is new.
3.Гм... Вопрос не вполне понятен. Думаю ответ где-то в описании объеката Session и обработке событий Session_OnStart, Session_OnEnd в global.asa.
NNemo wrote:4. Is there any way to do something in object oriented style? I have to deal with plain ASP, no business objects written in C or VB or any other language. I guess i can create object in ASP, i would like to call it form other page. Seems like Server.Execute allows me to call another page, but that will lead to excessive amount of pages.
4. Всю функциональность тоже выношу в отдельные инклюды, как NNemo. чтобы отделить бизнес-логику хоть сколько-нибудь. Объектный стиль оставим для ASP.NET
для NNemo
И по поводу XML - мне приходилось использовать его в основном для того чтобы наложить XSL файл с форматированием на XML, сформированный in memory из данных, полученных из файла либо из БД - работает неплохо, но конечно следует помнить от чувствительности DOM модели к объему данных.
Ну и по поводу пейжинга - хоть конкурс проводи, кто предложит наиболее красивое решение Все через RS.PageSize, PageCount, и так далее, ничего революционного. Вот через XML можете красиво организовать, тогда в XML заносите данные только одной страницы, а XSL форматирует их, даже с номерами страниц при желании.
Не сиди, сложа руки... Сегодня первый день из тех, что тебе остались!
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
Re: ASP & MVC
Lightik wrote:NNemo wrote:1. How to reduce the overall page count? Let's say i have table and would like to browse and edit it. Then i must have browse page and one page for every operation like insert and update.
1. Уменьшить количество страниц существенно без усложнения приложения нельзя. Печальный факт. Ну можете обработку всех действий объединить на одной странице, передавая идентификатор действия в хидден поле типа action="insert".NNemo wrote:2. ASP does not allow put objects in Response. Is it good to put them in session?
I worry about performance, threading issues and so on.
2. В Сессиии хранить стоит только идентификатор сессии, все остальное - избегать. Данные не стоит хранить в сессии. Плохо сказывается на perfomance and scalability. Тем более объекты. Для передачи данных от страницы к странице используйте хидден поля формы. Кстати, а какие объекты вы хотите хранить в сессии? Для доступа к БД используется пулинг (включить надо, если вдруг нет), а значит один из наилучших вариантов хранить ADOString переменную, хоть на уровне апликейшена, и RS.Open sql, ADOString откроется гораздо быстрее, чем с глобальным коннекшеном на странице (при присвоении строки коннекшена выбирается из пула свободный коннекшен соответсвующий заданной строке коннекшена). Execute команду коннекшена таким образом не используешь, но вместо можно использовать Command объект.NNemo wrote:3. I don't know how to determine if the session was reinstantiated. I need to track that issue. The only way i know is to check it for some object existence. If object is nothing, then session is new.
3.Гм... Вопрос не вполне понятен. Думаю ответ где-то в описании объеката Session и обработке событий Session_OnStart, Session_OnEnd в global.asa.NNemo wrote:4. Is there any way to do something in object oriented style? I have to deal with plain ASP, no business objects written in C or VB or any other language. I guess i can create object in ASP, i would like to call it form other page. Seems like Server.Execute allows me to call another page, but that will lead to excessive amount of pages.
4. Всю функциональность тоже выношу в отдельные инклюды, как NNemo. чтобы отделить бизнес-логику хоть сколько-нибудь. Объектный стиль оставим для ASP.NET
для NNemo
И по поводу XML - мне приходилось использовать его в основном для того чтобы наложить XSL файл с форматированием на XML, сформированный in memory из данных, полученных из файла либо из БД - работает неплохо, но конечно следует помнить от чувствительности DOM модели к объему данных.
Ну и по поводу пейжинга - хоть конкурс проводи, кто предложит наиболее красивое решение Все через RS.PageSize, PageCount, и так далее, ничего революционного. Вот через XML можете красиво организовать, тогда в XML заносите данные только одной страницы, а XSL форматирует их, даже с номерами страниц при желании.
В том то и дело что нет у меня форм, в большинстве случаев, обработка выполняется на сервере. Какие там могут быть формы? Или мы говорим о scripting model из VS Interdev?
Объект Server вызывает методы из другой странички через метод transafer. Нет дополнительного похода на клиент. Одна засада - данные можно передать только через Session. Это меня и напрягает, так как передавать приходится объекты типа рекордсетов и т.п. Для клиента это выглядит так, как будто он работает все время с одной страничкой.
Что касается, событий, то от них то толку никакого нет, потому что когда сессия закрыватся, то это событие сохранить уже негде. Сессии то больше нет...
Давно когда-то, я писал все на скрипте и DHTML юзался для построения странички уже прямо на клиенте. Т.е сервер выдавал рекордсеты в виде XML, а клиент сам с ними разбирался. Но геммороя было очень много.
Борланд что-то подобное делает в InternetExpress.
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
Я всегда считал, JSP скриптовым интерпретируемым языком наподобие PHP или ASP, немногого стоящим без JavaBeans. Выходит я ошибался? Т.е. в JSP можно внедрять (embed) чистую Java со всей поддержкой классов, наследования, интерфейсов и т.п, что ставит его в один ряд с ASP.NET? Я что-то не очень уверен, что правильно понимаю вас.NNemo wrote:...
Все что пишется внутри JSP - пишется на жабе.
Есть виртуальная машина и компилятор, чего же еще?
...
...а мы такой компанией, возьмем, да и припремся к Элис!
-
- Уже с Приветом
- Posts: 1935
- Joined: 15 Sep 2003 17:49
- Location: Ukraine, Mariupol -> USA everywhere :-)
Честно сказать до такого изврата не доходил, но думаю что принципиальных ограничений нет. Сама JSP страничка является расширением одного из классов имплементации сервлета, так что наследование как минимум там имеется. Ничего не мешает мне перекрыть этот класс и наследоваться от него. Далее, JSP это по сути дела препроцессор, выдающий на выходе код сервлета, который компилируется и выполняется как обычный класс. Соответственно и все остальные навороты там имеются.
До появления ASP.NET, JSP был (да и есть) намного круче чем ASP.
Что там такого есть в ASP.NET чего нельзя сделать на JSP?
А вот в ASP.NET можно ли сохранить объект, только на время выполнения странички, не заморачиваясь с его освобождением? Вызвать другую страничку, обработать этот объект? Я понимаю что с появлением полноценных классов, это не так уже необходимо, но в ASP это серьезно отравляет жизнь.
До появления ASP.NET, JSP был (да и есть) намного круче чем ASP.
Что там такого есть в ASP.NET чего нельзя сделать на JSP?
А вот в ASP.NET можно ли сохранить объект, только на время выполнения странички, не заморачиваясь с его освобождением? Вызвать другую страничку, обработать этот объект? Я понимаю что с появлением полноценных классов, это не так уже необходимо, но в ASP это серьезно отравляет жизнь.