Разработка многофункциональных интернет-приложений - это еще очень молодая тема, и существует множество различных подходов, с каждым днем появляется все больше и больше. Кроме того, JavaScript - это совсем не тот язык, к которому привыкли разработчики.
Чего вы НЕ должны делать, так это пытаться избежать разработки на JavaScript напрямую. Конечно, есть много Frameworks, которые, кажется, помогают вам обойти часть JS (GWT и .NET Framework AJAX работают довольно хорошо), но вы никогда не сможете использовать весь потенциал самого языка и Ваше многофункциональное интернет-приложение навсегда будет привязано к вашему серверному языку / фреймворку программирования и его возможностям, что вовсе не является необходимым, и, на мой взгляд, плохим дизайном. Я бы максимально отделил программирование на стороне сервера от программирования клиента. В отличие от веб-приложений старой школы, вы можете запрашивать и обрабатывать любые данные асинхронно, поэтому вашему веб-серверу не нужно вообще генерировать (я имею в виду генерацию HTML с языком на стороне сервера) любой HTML. С разделением между данными на стороне сервера и представлением на стороне клиента вы потеряете много сложности, которую разработка RIA может принести с другими подходами (например, попытка использовать ее в одной из старомодных инфраструктур MVC на стороне сервера).
На стороне клиента, это зависит от ваших предпочтений. Существует множество различных фреймворков, основанных на разных идеях. Вы можете сфокусироваться на манипулировании DOM , на компонентной основе с фокусом на элементах графического интерфейса или на одном из следующих шаблонов MVC на стороне клиента ... и и так далее.