Мне нужно принять решение об архитектуре веб-приложения, над которой я буду работать. Мы небольшая команда, и на самом деле я буду работать над этим в одиночку (все будут работать над чем-то другим).
Это приложение будет состоять из интерфейсной сборки на библиотеке ExtJS
и он будет использовать модель «загрузить страницу, построить графический интерфейс и никогда не обновляться».
На веб-"рабочем столе" будет много окон данных, видов карты (с использованием openlayers + GeoExt) и прочего.
Графический интерфейс пользователя должен быть гибким и позволять каждому пользователю изменять (и сохранять) макет в соответствии с его / ее потребностями.
Должна быть возможность разделить приложение на модули / части / ... и затем позволить пользователям в определенных группах использовать только конкретные модули. Другими словами, каждая группа пользователей может иметь другой графический интерфейс, доступный на "рабочем столе" в Интернете.
Вопросы:
Прежде всего, хорош ли этот подход?
Будет много вызовов AJAX от клиентов,
может быть, это может быть проблемой.
Как справиться со сложностью кода на стороне клиента?
Пока я решил использовать функцию dojo.require / dojo.provide и разделить клиентский код на модули
(для производства они будут собираться с использованием системы сборки dojo)
Я подумываю использовать какой-то контейнер IoC на стороне клиента, но пока не знаю, какой именно.
Очень вероятно, что я напишу его для себя, это не должно быть трудным на динамическом языке, таком как JavaScript.
Как обрабатывать вызовы AJAX на сервере?
Должен ли я использовать WCF на стороне сервера? Или просто обычный обработчик ashx?
Как справиться со сложностью кода на стороне сервера?
Я хочу использовать Spring.NET. Может быть, этот подход поможет решить проблему модульности.
Доступ к данным - здесь я почти уверен, что использовать: Для классов DAL я буду использовать nHibernate. Затем я объединяю их с бизнес-классами, используя Spring.NET.
Я действительно был бы признателен за совет о том, какой путь лучше всего использовать.
Я знаю много технологий, но использовал лишь небольшую их часть.
У меня нет времени исследовать их все и принять решение.