使用ASP.NET Web API的N-Teir架构

jkr*_*r01 7 c# n-tier-architecture asp.net-web-api

我只是想绕过这个概念.我编写了几个不同的Web API,但它们一直被网站使用并通过JSON进行交互.我有一个关于如何在Windows服务使用Web API时构建实现的问题.

在这种情况下,已经有一个现有的数据库,所以我想使用Entity Framework的Database First方法.

我为模型创建了一个类库项目,并使用Entity Framework查看现有数据库并生成所有必需的类.

然后,我创建一个Web API项目,并将包含所有模型的类库添加到其中.到目前为止,我很好.

我的问题是,当我构建将与Web API交互的Windows服务时,如何从类库模型项目中访问类?我知道我可以将该项目添加到我的Windows服务中,但这似乎不是正确的方法,因为这几乎会绕过Web API.

我想我的问题是,如果我想从我的Windows服务创建并将一个Employee对象传递给我的Web API(因此它可以将其插入到数据库中),Windows服务如何获取Employee对象而不将类库添加到Windows服务项目?

Mat*_*zer 10

在n层解决方案中,您不会跨物理边界传递域对象,但是您实现的数据传输对象(DTO)只能由消费者/调用者保存所需的信息.

通常,您将创建一个具有整个数据传输对象共享库,这将由服务器和客户端引用.

之后,所有关于使用JSON序列化程序来序列化和/或反序列化数据传输对象.

域对象将始终映射到数据传输对象,因为它们比完整对象更轻.问自己一个问题:如果消费者只需要某人的名字第二个名字,为什么你需要通过网络发送更多数据?

此外,避免客户端应用程序和服务中的服务器依赖性也很重要.

一些有用的提示: