使用Web服务时dto对象的正确方法

时间:2017-02-10 10:56:38

标签: c# .net asp.net-mvc asp.net-web-api

我的申请分为3个项目

  • ui.web.mvc

  • webservices.webapi

内部域我有两个模型

Car
Engine

我的webservices项目引用域对象以检索数据。 如果mvc项目使用复杂的viewmodel或dto将数据发送到webservice和 webservice然后将该模型映射到域一,这是正常的想法 两个项目(webservicesmvc)上是否存在viewmodel或dto?

1 个答案:

答案 0 :(得分:0)

enter image description here

(未图示:MVC还需要引用具体实现,或者使用XML配置,以便设置IoC容器)

对于初学者,您的MVC应用程序不应该了解Web服务。它应该在接口后面抽象(Dependency Inversion原则)。

public HomeController(IRepository repository, IService service)
{
    this.repository = repository;
    this.service = service;
}

我的假设是Domain Objects也有持久性注释。这是最常见的情况,因为其他两个选项是a)贫血模型或b)域模型,它们都是极端的。如果假设是正确的,则Repo和服务都应该与域对象一起使用。我没有看到你提到的DTO的地方。

'模式'很简单:检索域对象(来自Service或Repo),在其上调用一些业务逻辑,将其传递回Service / Repo。