洋葱架构 - 模型服务可以参考另一个模型服务吗?

时间:2013-06-05 15:27:17

标签: design-patterns repository-pattern onion-architecture

我正在开发一个遵循洋葱架构的ASP.NET MVC应用程序 我想知道Core中的ModelServices可以引用另一个ModelService吗?

ModelServices是具体实现,不继承任何接口。我在模型服务中编写业务逻辑,它取决于存储库。

我这样做是否正确?

1 个答案:

答案 0 :(得分:1)

  

ModelServices是具体实现,不继承任何   接口

如果我引用你的评论说:

  

ModelServices是业务/域服务

...那么这些服务显然应该继承接口!

应用程序(包括UI)中需要访问服务的每个层都将在不知道服务实现的情况下操纵服务接口。 请记住,洋葱体系结构的最外层是依赖性解析层,这是服务接口在运行时与正确的服务实现绑定的地方。

现在回答你的问题:

  

我想知道Core中的ModelServices可以引用另一个   ModelService?

服务实现类仅引用其他服务接口。在以下示例中,FooService需要service1& service2到他的工作:

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

    ...
  }
}

一切都将在运行时绑定!