我们有多个分离的系统。这些系统提供由移动应用程序和其他客户端应用程序使用的公共(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/