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

Jim*_*iny 5 architecture asp.net-mvc wcf web-services

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

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

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

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

Kev*_*ans 1

我建议根据 Fowler 描述的设计模式开发一个服务层。该服务层封装了各种域模型和存储库,并处理不同域/模型之间的交互。这将是一个程序集,而不是 WCF 或任何其他类型的 Web 服务。如果您需要 WCF Web 服务,那么它将是一个非常薄的层,基本上有一个模仿服务层的契约,唯一的目的是提供 Web 服务接口或 API。

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

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

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