Лучшие подходы для разработки хорошо организованного приложения ASP.NET с модульностью - PullRequest
7 голосов
/ 19 ноября 2010

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

  1. Приложение будет представлять собой набор различных модулей, таких как CRM, Bugtracker, Управление запасами, Управление финансами и т. Д.

  2. Каждый модуль должен иметь свои собственные библиотеки DLL.

  3. Один проект должен быть для внешнего контейнера приложения (например, фреймворка), и этот проект должен перенести все другие модули (типа веб-приложения) в решении во внешний контейнер. (Некоторые вещи, как у нас есть рамки в HTML). Поэтому мы опубликуем внешнее контейнерное веб-приложение только в конце дня, и через него будут доступны все другие проекты веб-приложений.

Мне бы хотелось иметь отдельную DLL для каждого модуля, поэтому мне не нужно опасаться взлома приложения при развертывании моей единственной DLL, которая контролирует весь пакет.

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

Это веб-формы ASP.NET, а не MVC. Я буду использовать VS2010 для разработки.

Как лучше всего это сделать?

Редактировать:

Термин внешний контейнер означает, что он действует как главная страница, на которой есть ссылки на различные модули, и различные модули не всегда находятся в одном проекте. Они могут быть отдельным проектом под одним и тем же решением. И у меня сложилось впечатление, что к концу дня я опубликую только этот проект, и он принесет в него различные модули.

Ответы [ 4 ]

3 голосов
/ 19 ноября 2010

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

Это все новые модули?Тогда просто начните писать первый.Используйте лучшие практики, применимые к отдельным модулям.

Затем напишите второй.Вы обнаружите, что хотите использовать вещи, которые вы уже написали в первом модуле.Отлично.Вот для чего нужен рефакторинг.Сгруппируйте эти вещи в один или несколько «библиотечных» проектов, перезапустите все свои модульные тесты, затем перейдите ко второму модулю.

Повторяйте, пока все модули не будут выполнены.этого процесса, если вам нужна архитектура, которую вы обрисовали в общих чертах, то она у вас будет.Если вам нужно меньше, у вас будет меньше, и вы не потратите время на создание архитектуры, которая не связана с реальными требованиями.

2 голосов
/ 19 ноября 2010

Я не собираюсь говорить, что это "лучший подход", но я бы порекомендовал просмотреть Dot Net Nuke (DNN), чтобы получить некоторые идеи. Это началось как старый стартовый веб-проект «Я покупаю шпиона», который Microsoft распространил, чтобы показать проекты ASP.NET, и он взлетел оттуда.

редактировать:

1.Приложение будет представлять собой набор различных модулей, таких как CRM, Bugtracker, управление запасами, управление финансами и т. Д.

Вы можете сделать это с DNN. Их также называют «модулями» в DNN и Drupal.

2.Каждый модуль должен иметь свои собственные DLL.

Да, это хорошая идея. И вы увидите подобные вещи в нескольких системах управления контентом, таких как DNN и Drupal. Таким образом, не во всех реализациях одного и того же веб-сайта должны быть установлены все модули.

У нас есть значительный веб-сайт, который используется для размещения приложения «услуга как решение», за которое мы взимаем плату (если вы не актуарий или бухгалтер, вы о нем не слышали). Ведущий разработчик за последние пару лет использовал более раннюю версию DotNetNuke в качестве модели для того, чтобы реорганизовать части приложения, которые ему было разрешено изменять.

1 голос
/ 20 ноября 2010

Назовите основной проект в честь вашей компании / продукта и сделайте его кратким и простым. Вам, вероятно, понадобится один или два библиотечных проекта для их поддержки - они будут содержать повседневную общую логику для таких вещей, как сообщение об ошибке , методы веб-утилиты и т. Д.

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

Сполосните и повторите. Возможно, посмотрите на что-то похожее на проект Sueetie , который включает в себя несколько подпроектов, таких как CMS, блог, календарь, форум и т. Д.

Следующая статья помечена как устаревшая в MSDN, но я все же думаю, что вам стоит взглянуть на нее:

Структурные решения и проекты

Также что-то похожее из группы «Образцы и практики»:

Структурирование проектов и решений в Team Foundation Source Control

1 голос
/ 20 ноября 2010

Как и другие предположили, DNN, вероятно, будет работать для того, что вы пытаетесь сделать. Если вы хотите полностью перевернуть свой собственный файл, я бы обратился к некоторой комбинации контейнера «Framework» и группы пользовательских элементов управления (.ascx). Контейнер может быть таким же простым, как главная страница с меню. В зависимости от того, насколько гибким вы хотите свой дизайн, вы можете изготовить много разных страниц, каждая из которых содержит свой элемент управления (отдельный dll по вашему желанию). Если вы хотите, чтобы она была немного более динамичной, вы можете иметь одну страницу контента, которая будет динамически загружать в нее нужный пользовательский элемент управления. Опять же, это всего лишь общий подход, вероятно, 30000-футовый обзор того, как DNN реализован в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...