在多个解耦系统之间进行通信

时间:2014-02-25 10:51:56

标签: c# .net wcf asp.net-web-api wcf-web-api

我们有多个解耦系统。这些系统提供移动应用程序和其他客户端应用程序使用的公共API。

我们现在需要这些系统在某些调用期间(无论出于何种原因)在内部进行内部通信。我在可能的解决方案之间徘徊。

创建安全的API调用

为每个系统托管一个内部ASP.NET Web API,以便它们可以相互公开数据和功能。

  • 优势:低耦合。只要API调用结构没有改变,系统就可以自行发展。
  • 缺点:很慢。与数据库查询相比,HTTP请求非常慢。这可能严重影响我们的公共电话的速度。

解决方案之间的参考存储库项目

在多个项目之间共享并包含存储库(数据访问)代码库。

  • 优势:非常快。检索相关数据将非常快,因为它只是一个数据库查询。
  • 缺点:高度耦合。系统A上的重建和发布可能对系统B意味着相同,因为它们将共享公共代码。

这些解决方案似乎都不理想。

这是WCF的工作吗?

2 个答案:

答案 0 :(得分:3)

  

很慢。与数据库查询相比,HTTP请求非常慢。这可能严重影响我们公共电话的速度

好。没有。例如,RavenDb客户端API是使用HTTP构建的。其中的所有数据库查询都是通过HTTP执行的。您还应该知道大多数数据库引擎通过网络与客户端通信(使用套接字或命名管道)。

我所说的是HTTP引入的开销很小。

使用HTTP的好处在于,它可以让您随时轻松地缓存查询,因为有数十种即用型HTTP缓存解决方案。当用户群增长时,负载平衡也是如此。

因此我会使用HTTP。

答案 1 :(得分:3)

我们正在为此目的使用WCF。通常,这是处理您提到的场景的方式,我认为,除非您有非常具体的要求。

如果您在其间使用消息传递代理,则(WCF)服务解决方案可以很好地扩展。

根据WCF和Web API之间的差异权衡您的优先级。见this