Как организовать композитные приложения для предприятия (CAG)
-
23-10-2019 - |
Вопрос
Все примеры QuickStarts и RI в документации CAG хороши, но мне не хватает примеров корпоративных масштабов.
Допустим, у нас есть более 40 модулей, каждый из которых содержал прокси, фасад, презентацию, модель и представления. Каждый модуль также делает вызовы в службу WCF, специфичную для модуля, которая должна быть размещена в IIS или на отдельном консольном хосте. Наш подход заключался в том, чтобы включить модуль UI, модуль сервиса и связанные с ними тесты в одно решение, чтобы их можно было разработать и протестировать отдельно от других модулей.
Моя проблема заключается в том, как следует выполнять хостинг служб, когда службы находятся в отдельных модулях и как фактически запустить отдельный модуль вместе с остальными модулями приложения, когда я нажимаю на F5. Есть ли лучшая практика для этого? Я думаю, это было сделано раньше?
Решение 2
В итоге мы получили довольно простое решение, где мы включили проект хостинга в качестве проекта «стартап» в решение. Проект настроен не создавать и иметь зависимости модуля.
Все услуги DLL: S выводится в общую папку, где хост -проект динамически загружает их, ищите атрибут ServiceContract и запускает хост.
Другие советы
Вы, безусловно, можете разместить каждый модуль в качестве приложения или экземпляра виртуального каталога для точек обслуживания, но я думаю, что можно сказать, что вы позволяете разработке «удобство» раздела решения диктуйте архитектуру производства для ваших услуг? Обычно мы обрабатывали это на основе слоев, а не на модульных разделах - другими словами, у вас будет проект с доменами/моделями, а другой - с услугами, тогда каждый «модуль» может ссылаться на общий пул услуг. Я предполагаю, что это зависит от того, насколько взаимосвязаны модули, сколько там кросс -общения и т. Д.
Каждая служба может быть настроена на запуск в разных портах или целях, но, опять же, я чувствую, возможно, ваша проблема проистекает из архитектуры услуг, и вы можете извлечь выгоду из того, что общий сервисный проект, который разделяется по модулям.