[ELMA3] Создание модуля для приложения
Типичная структура модуля
Типичный модуль состоит из трех концептуальных частей:
- Серверная часть – сборка типа Библиотека классов, в которой содержатся модели объектов, менеджеры и другие глобальные сервисы (например привилегии);
- Веб-модуль – сборка типа Веб-приложение, которая подключается как модуль Orchard, и находится в подпапке Modules основного веб-приложения;
- Модуль для Дизайнера – сборка типа Библиотека классов, которая добавляет или изменяет логику в Дизайнере приложения (этот модуль не обязателен и добавляется только в очень редких случаях).
Таким образом структура для создания нового модуля выглядит следующим образом:
- Extensions\Modules\<Ваш модуль, серверная часть>;
- Applications\BPM\EleWise.ELMA.BPM.Web\Modules\<Ваш модуль, веб часть>;
- Extensions\DesignerModules\<Ваш модуль, дизайн часть>.
Правила именования
Для названия модулей необходимо использовать определенные правила:
- все сборки и пространства имен должны быть на английском языке;
- модуль должен содержать корневое пространство имен, относящееся к вашей организации и продукту. В случае с компанией EleWise это будет EleWise.ELMA;
- для серверной сборки название должно дополняться логичным английским названием модуля (лучше всего использовать множественное число, если вы отталкиваетесь от названия сущности). Например, мы делаем модуль Управление проектами, для него логичным названием будет Projects (от сущности Project), а значит для сборки мы используем название EleWise.ELMA.Projects;
- для сборки веб-модуля необходимо дополнить название серверной сборки постфиксом Web, т.е. в нашем случае это будет сборка EleWise.ELMA.Projects.Web;
- для сборки веб-модуля необходимо дополнить название серверной сборки постфиксом Design, т.е. в нашем случае это будет сборка EleWise.ELMA.Projects.Design.
Структура папок и пространств имен
Для лучшего восприятия и единообразности модулей рекомендуется соблюдать определенную структуру папок в обоих частях модуля.
Серверная сборка
Для серверной части структура очень простая:
- \Models\ – в эту папку необходимо складывать все модели (сущности и перечисления) вашего модуля;
- \Managers\ – тут должны находиться все менеджеры сущностей специфичные для модуля;
- \DTO\ – если вы пишете модуль для дизайнера, в эту папку должны быть добавлены все модели для отображения и маппинги;
- \Types\ – если у вас есть собственные типы данных, складывайте их в эту папку;
- \ – все остальное можно смело складывать в корень проекта, т.к. это переиспользуемый код (сервисы, расширения, обработчики);
- \<Ваша папка> – естественно, если у вас есть потребность выделить определенный блок модуля, никто не запретит вам создавать и другие папки и пространства имен.
Вы должны помнить о том, что в дальнейшем данный код может использоваться клиентом и другими разработчиками, и было бы неправильно заставлять его лишний раз задумываться, где взять тот или иной класс.
Веб-часть модуля
Для веб-части структура папок во многом руководствуется обычной структурой для проектов ASP.NET MVC или руководством по работе с MVC.
Дизайн-часть модуля
Для модуля в Дизайнере необходимо руководствоваться структурой папок, описанной на странице Создание нового модуля в Дизайнере.