Предполагая, что у вас есть приложение, для которого требуются 2 службы, например. Application
, Service1
, Service2
Если вы создадите дополнительный уровень косвенности и продвинете одну из служб в службу приложений, а другую понизите до службы домена, следуя этому луковая архитектура.
Или вам нужно подключить Application
напрямую к Service1
и Service2
?
С другим уровнем косвенного обращения вы можете уменьшить зависимость от уровня Application
, особенно по отношению к внешним службам, например. «Paypal», «Facebook», «CyberSource» и создайте адаптеры сервисов приложений, которые больше подходят для вашей парадигмы программирования. В конце концов, если все разработчики знакомы со всеми этими широко разнообразными API, это действительно пагубно сказывается на производительности. Фасад / адаптер упростит разработку, защищая приложение от изменений инфраструктуры. например. Компания потерпела неудачу с CyberSource и решила вместо этого использовать Paypal, к счастью, ваше приложение защищено, и вам нужно было только заменить адаптер и ничего больше.
Тем не менее, адаптер определенно создает негибкость. По мере роста сложности приложения адаптер также становится негерметичным. Тогда у вас потенциально есть 3 проблемы: негерметичная абстракция, ленивый слой (слой, который недостаточно работает из-за слишком большого количества дыр) и нарушение общего принципа закрытия, поскольку каждый раз, когда вам нужно изменить пользовательский интерфейс, вы должны изменить не только ваше приложение, но также и ваши адаптеры.
А что произойдет, если Service2
уже является внутренней службой той же компании? Стоит ли по-прежнему создавать адаптер для каждой подсистемы? Что делать, если у вас небольшая команда? Что, если у вас есть десятки команд с разнообразным набором технологий? Есть ли какие-либо рекомендации по правильности добавления еще одного уровня косвенного обращения, а не простого вызова службы напрямую?