【问题标题】:How to seperate two projects from one solution and communicate with each other?如何从一个解决方案中分离两个项目并相互沟通?
【发布时间】:2021-09-15 10:02:33
【问题描述】:

我有两个相互链接的项目,项目 A 和项目 B 在同一个 VS 解决方案中。 现在的要求是,我必须做单独的项目,这意味着单独的数据库、网站名称、服务器等。

现在我想知道如何使用 Web API 将两个项目相互通信?

【问题讨论】:

    标签: api web microservices


    【解决方案1】:

    在开始分开之前,我建议阅读有关 DDD(域驱动设计)的内容,以便正确选择一个微服务或另一个微服务中的功能和类。

    不管怎样,一旦你把两个服务分开了,那么它们之间的通信就会最少,主要有两种方式来相互通信。

    一种是使用HTTP调用的同步通信,使用一些HTTP客户端为你的语言,例如,在java-spring应用程序中使用Webclient是很常见的。这种方法的优点是您不必处理最终一致性,因为所有事情都发生在同一个线程中,主要缺点是您正在耦合服务,如果其中一个失败,另一个也会失败。

    第二种方法是使用一些消息代理(如 kafka)使用异步消息传递。使用这种方法,当其中一个服务发生某些事情时,它将在消息代理中发布该事件,并由另一个服务使用。没有直接通信,因此不会出现级联故障,但问题是您不知道消息何时会被消费(最终一致性)

    正如您所见,这两个选项各有利弊,选择其中一个取决于您的用例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多