Asp.net mvc 设计选择:WCF还是服务栈?

Asp.net mvc 设计选择:WCF还是服务栈?,asp.net-mvc,wcf,web-services,architecture,Asp.net Mvc,Wcf,Web Services,Architecture,我有三个核心应用程序,它们有自己的业务功能(网络、active directory和帮助台)。每个都运行ASP.NET v2或v3,并有各自的数据库。然而,应用程序功能已经合并了一点,因此在每个应用程序和应用程序逻辑中都重新创建了模型。所以现在我有一些难以维护的代码。所以我的问题是: 将我的模型和存储库移植到WCF对于这种类型的体系结构来说是合理的选择吗 使用服务堆栈(如序列化json调用)是更好的选择吗?我想这比设置一个中央wcf应用程序要快 我不太熟悉asp.net mvc web应用程序之

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

  • 将我的模型和存储库移植到WCF对于这种类型的体系结构来说是合理的选择吗

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


  • 我不太熟悉asp.net mvc web应用程序之间的通信,因此请为我指出正确的方向。

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

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

    访问服务层的另一种方法是使用AJAX从视图/客户端访问富客户端。在本例中,您将使用MVC在服务层的顶部放置一个RESTAPI,这样您就可以使用类似JQuery的东西将AJAX POST直接发送到web服务,以更新和检索web页面的数据


    注意:对于这种体系结构,您可以使用这两种方法的组合。您可以直接从控制器访问服务层以呈现一些初始页面,然后在用户交互期间使用web服务REST接口进行AJAX调用。

    我不理解您直接访问服务层的意思。一个MVC应用程序联系另一个MVC应用程序的服务层的方法是什么?网络客户端。网络远程处理?我希望能够直接访问另一个应用程序的数据上下文或存储库。我所指的服务层是.NET程序集或DLL。因此,它只是一个库,任何需要使用它的应用程序都会引用它。您不希望将其作为一个单独的物理层,除非由于与之相关的成本而带来真正的好处。如果确实需要将其放在另一层中,则围绕此程序集/库创建一个WCF服务包装器。web服务接口的类型取决于使用它的客户机(例如:对于web客户机,REST使用JSON)。如前所述,您可以使用WCF和library进行混合和匹配。