1

Я разрабатываю приложение ASP.NET MVC после архитектуры Onion.
Я хотел бы знать, что ModelServices в Core может ссылаться на другой ModelService?Луковая архитектура - Может ли модель обслуживать другую модель Сервис?

ModelServices являются конкретными реализациями и не наследуют никаких интерфейсов. Я пишу бизнес-логику в Model Services, и это зависит от репозиториев.

Я делаю это правильно?

+0

Пожалуйста, объясните, что вы подразумеваете под «ModelServices»? Поиск Google «Архитектура лука» и ModelServices возвращает только два вопроса. –

+0

У меня такое чувство, что ModelServices - это бизнес/доменные службы. – MikeSW

+0

Да, это BusinessService. Не обслуживание приложений или внешние службы. – Saanch

ответ

1

ModelServices - это конкретные реализации и не наследует никаких интерфейсов .

Если я ссылаюсь на Ваш комментарий, который говорит:

ModelServices являются Бизнес/Domain Services

... то эти услуги должны, очевидно, наследоваться от интерфейсов!

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

Теперь, чтобы ответить на ваш вопрос:

Я хотел бы знать ModelServices в Ядро может ссылаться другой ModelService?

Сервисные классы реализации будут ссылаться только на другие сервисные интерфейсы. В следующем примере FooService необходимо service1 & Service2 к к своей работе:

namespace MyBusiness.Core.Services 
{ 
    internal class FooService: IFooService 
    { 
    public FooService(IService1 service1, IService2 service2) 
    { 
     _service1 = service1; 
     _service2 = service2; 
    } 

    ... 
    } 
} 

Все будет связан во время выполнения, как хорошо!