设计选择:WCF还是服务堆栈?

时间:2012-02-09 12:14:37

标签: asp.net-mvc wcf web-services architecture

我有三个核心应用程序,它们有自己的业务功能(网络,活动目录和帮助台)。每个都运行ASP.NET v2或v3,并拥有各自的数据库。但是,应用程序功能已经合并了一些,因此在每个应用程序和应用程序逻辑中都会重新创建模型。所以现在我有一些难以维护的代码。所以这是我的问题:

  1. 将我的模型和存储库移植到WCF是这种架构的合理选择吗?

  2. 使用序列化json等服务堆栈是一个更好的选择吗?我想这会比设置一个中央wcf应用程序更快。

  3. 我不太熟悉asp.net mvc网络应用之间的沟通,所以请指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

我建议开发service layer per the design pattern described by Fowler。此服务层封装了各种域模型和存储库,并处理不同域/模型之间的交互。这将是一个程序集,而不是WCF或任何其他类型的Web服务。如果您需要WCF Web服务,那么它将是一个非常薄的层,它基本上具有模仿服务层的合同,并且唯一的目的是提供Web服务接口或API。

MVC应用程序可以通过两种方式与您的服务层进行交互。如果要在控制器中创建视图模型,则可以直接访问服务层程序集。通过在这种情况下很可能不需要的Web服务调用它会增加额外的开销。使用这种方法,服务层几乎就是MVC三重奏中的模型。

访问服务层的另一种方法是使用AJAX进行富客户端的Views / client。在这种情况下,您将使用MVC在服务层之上放置REST API,以便您可以使用类似JQuery之类的AJAX POST直接向Web服务更新和检索网页数据。

请注意,使用此架构,您可以结合使用这两种方法。您可以直接从Controller访问服务层以呈现一些初始页面,然后在用户交互期间使用Web服务REST接口进行AJAX调用。