Сейчас на рынке я вижу две модели:
- Смешанный интерфейс. Сервер все еще участвует в работе по созданию пользовательского интерфейса, но большая часть его выгружена в javascript. Вот как работает множество инструментов javascript (кроме dojo, extjs, ...).
- Отдельные вопросы. Сервер рассматривается только как метод хранения и синхронизации данных. Приложение работает полностью на стороне клиента, возможно, даже с локальным хранилищем. Вот как работает flex.
Я думаю, что мы собираемся перейти ко второй модели, потому что это означает, что вам не нужно отслеживать состояние пользовательского интерфейса на сервере, что значительно упрощает архитектуру. Я играл с ExtJS и Flex, и опыт разработки во многом похож на создание настольного приложения, только без модной интегрированной среды разработки с перетаскиванием. Трудно представить себе такие большие различия между трехуровневым настольным приложением и веб-приложением.
Так что мой совет: перестаньте думать, что вы создаете веб-приложения, всегда ставьте под сомнение принадлежность чего-либо на сервере, потому что в новой модели это часто не будет. Кроме того, эффективно используйте механизмы или кэш браузера, потому что, если ваше приложение на стороне клиента, загрузка всего этого кода каждый раз будет слишком медленной.