2012-07-12 71 views
12

通常当我布置的n层体系结构的一个项目,我有以下几层:Web API适用于典型的n层体系结构?

  • (域模型库合同)
  • 数据(库域模型之上工作)
  • 服务(聚集体回购,缓存,验证)
  • 演示(MVC的应用程序)

在哪里将ASP.NET MVC 4 Web API纳入考虑它将被实际应用程序和外部客户端使用?它是否是服务图层的一部分,还是使用服务图层,并与MVC应用程序处于同一级别?

+0

在那个特定的层分解中,我会说Presentation ..就Web API而言*使用服务层。 – 2012-07-12 03:56:37

+2

@pst,这是我最初做的,但对我来说这似乎很奇怪,因为它没有提供任何内容。那么,Web API是否会充当服务层的HTTP包装? – 2012-07-12 03:59:28

+0

@pst,你的评论几乎证实了我的想法。你为什么不作为答复发布,我会接受它。谢谢:) – 2012-07-12 04:07:39

回答

8

有可能是2点的方法:

  1. 你决定从通过HTTP调用的MVC应用程序消耗你的Web API。在这种情况下,调用代码(HttpClient)位于您的数据层。无论您是从数据库中获取数据还是从远程Web服务调用中获取数据,都无关紧要。在这种情况下,由于Web API可能已经封装了许多业务逻辑,所以您的服务层将变得非常简单,只是数据访问层的包装,或者如果它不带来任何附加价值,则甚至是不存在的。

  2. 由于Web API是用.NET编写的,因此您可以决定在您的MVC应用程序中直接引用包含此API服务层的程序集。在这种情况下,Web API应用程序的服务层将成为您的MVC应用程序的服务层。

+0

我认为第一种方法与我的想法是一致的。你提到HttpClient位于数据层,这对我来说有点不清楚。 API是否应该位于数据层之上的服务层之上,并且本质上充当HTTP包装器?我认为你所描述的是API应该替换这两个层,而数据层是一个简单的HttpClient或某种查询API的SDK。我的理解是否正确? – 2012-07-12 14:06:54

+2

如果采用第一种方法,将Web API看作完全外部的东西。在这个API里面,你可以再次拥有一个暴露的数据访问层,服务访问层和视图模型。但就您的Web API客户而言,这并不重要。这是一个实现细节。 – 2012-07-12 14:42:16

+0

啊哈,我想你最近的评论让它点击了。我想我可以在服务层之上构建API,并且可能只是使用RestSharp为应用程序层和任何外部客户端公开.NET SDK。谢谢你的回答! – 2012-07-12 18:24:26

0

有两种可能性

  • 中间层或中间件:这就是典型的Web服务和WCF服务一直在努力。使用REST比SOAP轻得多,所以这是事实上的用例。 Web和WCF服务在客户端生成方面更好,但Web API将逐渐赶上。
  • 表示层:这将为单页面应用程序或任何使用客户端上的数据和呈现的现代网站/应用程序提供数据。
+0

downvote的任何理由? – Aliostad 2012-08-08 10:27:10