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

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

我们有多个分离的系统。这些系统提供由移动应用程序和其他客户端应用程序使用的公共(public) API。

我们现在需要这些系统在某些调用期间(无论出于何种原因)在内部相互通信。我在可能的解决方案之间左右为难。

创建安全的 API 调用

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

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

解决方案之间的引用存储库项目

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

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

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

这是 WCF 的工作吗?

最佳答案

Very slow. An HTTP request is deathly slow when compared to a database query. This could severely affect the speed of our public calls

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

我的意思是 HTTP 引入的开销是微不足道的。

HTTP 的优点在于它使您能够随时轻松地缓存查询,因为有许多 HTTP 的现成缓存解决方案。当您的用户群增长时,负载平衡也会发生同样的事情。

因此我会为此使用 HTTP。

关于c# - 在多个解耦系统之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22011947/

相关文章:

javascript - 将数据从 Chrome 扩展程序传递到 .net 应用程序

.net - 使用真实IP加密发送到托管在服务器上的WCF服务的消息

wcf - 从 wcf 服务返回 xdocument

c# - Visual Studio 解决方案不可用(重新加载不起作用)

c# - 如何使用 C# 从 PKCS#12 (.p12) 文件获取私钥

c# - 正则表达式如何匹配 2 个字段

c# - 确定堆上对象的对象分配发生的位置

.Net Remoting - 按值编码

asp.net - WCF vs ASPX webmethods vs ASMX webmethods

wcf - 是否有用于为 Unity IOC 配置 WCF 应用程序的 Nuget 包?