如何将服务层公开给UI组件

时间:2011-05-17 15:15:04

标签: c# .net wcf appfabric

我们有一个应用程序,我们在其中创建了一个包含大多数业务逻辑和实用程序服务(日志记录,异常,缓存等)的服务层。我们必须提供一种方法来将此服务公开为UI组件的API。以下是我们的一些要求:

  • 我们想创建多个 基于服务的组件。
  • 我们希望第三方开发者 用我们的服务来创造他们的 自己的组件或利用我们的数据。
  • 我们希望拥有可扩展性 安装了多个实例 不同的盒子。同样在那里 可能不仅仅是一个例子 相同的UI组件。

公开服务层的一种方法是在基于REST的WCF层下托管它。

另一种方法是在ASP.Net MVC项目的模型层中托管服务。 UI组件将托管在他们自己的MVC项目中。 UI组件视图中的Javascript将直接调用服务项目的控制器。

WCF应该是非常重量级的选择。另一方面,我对MVC方法并不太信服,因为我认为这不是它的目的。

请您在Microsoft世界中向我推荐一种方式来公开我们的服务层。

3 个答案:

答案 0 :(得分:4)

模型不是服务。模型是保存数据的POCO。

您可以通过WCF服务公开您的服务,并让您的ASP.NET MVC应用程序使用它。如果您始终确定该服务将与客户端应用程序在同一个框上运行,则可以使用命名管道进行传输 - 然后与优势相比,WCF的开销很小。

答案 1 :(得分:4)

WCF似乎是去这里的方式。虽然WCF最初(在我的观点中)作为一个野兽开始,但多年来它已经被驯服了更好的HTTP和JSON支持以及更少的自定义配置(尽管仍然允许您基本上模拟服务的每个小方面)。

将您当前的服务层公开为REST服务是轻而易举的,并允许您的客户/您自己在支持HTTP的任何设备上轻松使用它。

请参阅:http://codebetter.com/glennblock/2010/11/01/wcf-web-apis-http-your-way/

答案 2 :(得分:1)

WCF似乎是微软的目标,并且有充分的理由。 WCF服务是最好的选择,因为您提到了第三方开发支持。因为这些Web服务是由WSDL定义的,所以它们是跨平台的,可以由非.NET应用程序使用。

它完美地隔离了您的服务层,供任何组件使用。