【问题标题】:Communicating between multiple decoupled systems在多个解耦系统之间进行通信
【发布时间】:2014-03-27 13:02:18
【问题描述】:

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

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

创建安全的 API 调用

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

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

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

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

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

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

这是 WCF 的工作吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    HTTP 的优点在于它可以让您随时轻松地缓存查询,因为有几十种现成的 HTTP 缓存解决方案。当您的用户群增长时,负载平衡也是如此。

    因此我会为此使用 HTTP。

    【讨论】:

      【解决方案2】:

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

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

      用 WCF 和 Web API 之间的差异衡量您的优先级。见this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多