Решение об архитектуре веб-приложения - PullRequest
5 голосов
/ 07 июня 2011

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

Это приложение будет состоять из предварительной сборки библиотеки 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.

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

Ответы [ 3 ]

2 голосов
/ 10 июня 2011

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

  1. Это, кажется, работает очень хорошо для нас. Чем больше у вас js, тем сложнее его поддерживать, поэтому проведите как можно больше автоматических js-тестов и постарайтесь разбить свою js-логику в режиме mvc. 4.0 должно сделать это намного проще.
  2. В Ext 4.0 это встроено, если вы пытаетесь ограничить код, который вы используете. Если у вас одни и те же пользователи день за днем, то я думаю, что было бы лучше просто отключить весь исходный код (сжатый и минимизированный) и кэшировать его.
  3. Мы обнаружили, что asmx работает очень хорошо. Я ничего не имею против wcf, но в последний раз я выглядел так, будто было больше проблем, чем оно того стоило Я знаю, что они сделали много улучшений в последнее время. Хотя asmx просто работает (с несколькими изменениями заголовка запроса и управлением "d." на стороне клиента).
  4. Наш уровень доступа к данным на стороне сервера довольно сложный, но интерфейс для вызовов ajax довольно прост. Вы действительно не дали достаточно информации, чтобы ответить на эту часть. Я бы начал как можно проще и часто проводил рефакторинг.
  5. Мы также используем nHibernate. У нас отлично работает. Мы построили модель DDD вокруг него. Это может занять много работы, чтобы понять это правильно (не уверен, что у нас это есть сразу после нескольких месяцев работы над ним).

На вашем месте я бы начал с extjs, вашей технологии веб-сервиса и nHibernte.

1 голос
/ 23 августа 2011

Я бы порекомендовал ASP.NET MVC 3 с Razor вместо большого количества Javascript и вызовов Service, вы можете просто выполнять ajax-вызовы Action в контроллере, и это позволит вам иметь больше поддерживаемого кода и использовать IoC, такой как Ninject.EF вместо NHibernate.Но это ваше решение.

0 голосов
/ 21 августа 2011

Я хотел бы использовать такой инструмент, как Google Closure Compiler , особенно если вы имеете дело с очень большим проектом. У меня нет большого опыта работы с ExtJS, но большие проекты на JavaScript - сложные , и что-то вроде Closure Compiler делает его проще.

...