【问题标题】:Onion Architecture - Can model service refer another model Service?Onion Architecture - 模型服务可以引用另一个模型服务吗?
【发布时间】:2013-06-05 15:27:17
【问题描述】:

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

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

我做得对吗?

【问题讨论】:

  • 请解释一下“ModelServices”是什么意思?谷歌搜索“洋葱架构”和 ModelServices 只会返回您提出的两个问题。
  • 我感觉 ModelServices 是业务/域服务
  • 是的,它是 BusinessService。不是任何应用程序服务或外部服务。

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


【解决方案1】:

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

如果我参考您的评论:

ModelServices 是业务/领域服务

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

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

现在回答你的问题:

我想知道 Core 中的 ModelServices 可以参考另一个 模型服务?

服务实现类只会引用其他服务接口。在以下示例中,FooService 需要 service1 和 service2 来完成他的工作:

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

    ...
  }
}

一切都将在运行时绑定!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多