Шаблон уровня сервиса - Можем ли мы избежать уровня сервиса в конкретном случае? - PullRequest
5 голосов
/ 09 апреля 2010

мы пытаемся реализовать приложение, используя шаблон сервисного уровня, потому что нашему приложению тоже нужно подключаться к нескольким нескольким приложениям, и, покинув веб-сайт, мы нашли эту ссылку демонстрационной графики для «правильного» способа применения картина:

martinfowler.com - Шаблон уровня обслуживания

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

Service Layer Patter by matinfowler

Как кажется, для этого будет не нужно реализовывать сервисный уровень; будет более практичным избежать уровня обслуживания и просто перейти от пользовательского интерфейса к бизнес-уровню (например). Каким должен быть правильный путь в этом случае для реализации шаблона уровня сервиса? Что вы предлагаете нам для сценария, подобного тому, который я вам рассказал?

Заранее спасибо.

Ответы [ 2 ]

9 голосов
/ 09 апреля 2010

«Сервисный уровень» - это просто абстракция над логикой вашего домена. Абстракция может быть любой степени, в том числе прозрачной.

Термин «слой» вводит в заблуждение. Я думаю, что сам Мартин согласился бы с тем, что его лучше называть границей контекста (из доменного дизайна). Это означает, что у вас может быть много уровней обслуживания, которые в разной степени абстрагируют ваш домен. API «слоя» службы, который вы предоставляете своему пользовательскому интерфейсу, может делать намного больше в вашем домене, чем уровень службы, который вы предоставляете шлюзу интеграции.

Я бы порекомендовал разбить эти порции сервисов по функциональным контурам. (Например, набор служб, которые используются для массового импорта данных, и набор служб, с которыми пользователи обычно взаимодействуют, должны быть почти полностью отделены.) Таким образом, если вам нужно предоставить API другому приложению, которое вы ожидаете взаимодействовать с вами точно так же, как пользователь может сделать так, чтобы он использовал тот же API, что и пользовательский интерфейс.

1 голос
/ 09 апреля 2010

Как упоминалось в опубликованной вами ссылке, сервисный уровень определяет «интерфейс» для клиентов, инкапсулируя (сложную) бизнес-логику и , централизуя управление транзакцией с участием нескольких ресурсов. Сервисный уровень используется не только тогда, когда вам нужно «поделиться» сервисами, он просто делает его проще. Но даже с одним потребителем имеет смысл централизовать контроль транзакций.

...