Решение об архитектуре веб-приложения

Мне нужно принять решение об архитектуре веб-приложения, над которой я буду работать. Мы небольшая команда, и на самом деле я буду работать над этим в одиночку (все будут работать над чем-то другим).

Это приложение будет состоять из интерфейсной сборки на библиотеке ExtJS и он будет использовать модель «загрузить страницу, построить графический интерфейс и никогда не обновляться».
На веб-"рабочем столе" будет много окон данных, видов карты (с использованием openlayers + GeoExt) и прочего.
Графический интерфейс пользователя должен быть гибким и позволять каждому пользователю изменять (и сохранять) макет в соответствии с его / ее потребностями.

Должна быть возможность разделить приложение на модули / части / ... и затем позволить пользователям в определенных группах использовать только конкретные модули. Другими словами, каждая группа пользователей может иметь другой графический интерфейс, доступный на "рабочем столе" в Интернете.

Вопросы:

  1. Прежде всего, хорош ли этот подход?
    Будет много вызовов AJAX от клиентов, может быть, это может быть проблемой.

  2. Как справиться со сложностью кода на стороне клиента?
    Пока я решил использовать функцию dojo.require / dojo.provide и разделить клиентский код на модули (для производства они будут собираться с использованием системы сборки dojo) Я подумываю использовать какой-то контейнер IoC на стороне клиента, но пока не знаю, какой именно.
    Очень вероятно, что я напишу его для себя, это не должно быть трудным на динамическом языке, таком как JavaScript.

  3. Как обрабатывать вызовы AJAX на сервере?
    Должен ли я использовать WCF на стороне сервера? Или просто обычный обработчик ashx?

  4. Как справиться со сложностью кода на стороне сервера?
    Я хочу использовать Spring.NET. Может быть, этот подход поможет решить проблему модульности.

  5. Доступ к данным - здесь я почти уверен, что использовать: Для классов DAL я буду использовать nHibernate. Затем я объединяю их с бизнес-классами, используя Spring.NET.

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

5
задан DavRob60 7 June 2011 в 13:05
поделиться