【问题标题】:How is the SOA pattern different from the client-server pattern?SOA 模式与客户端-服务器模式有何不同?
【发布时间】:2019-11-08 21:54:38
【问题描述】:
  • SOA 模式由服务提供者和服务消费者组成。

  • 似乎反对单体应用。

以上两个也适用于客户端-服务器模式。那么 SOA 模式与客户端-服务器模式有什么不同呢?

SOA 模式必须使用客户端-服务器模式吗? SOA模式不能使用客户端-服务器模式吗?

【问题讨论】:

    标签: architecture client-server soa software-design architectural-patterns


    【解决方案1】:

    面向服务的架构实际上是关于耦合的,并且与所有架构一样,对实现不太感兴趣。

    理想的做法是解耦服务,以便公开自治功能。该服务的实现方式应该无关紧要。您甚至可以公开遗留单体应用程序的功能。

    伴随着耦合还有我所说的可达性。您需要执行一些代码,并且有几种方法可以做到这一点:

    • 复制和粘贴
    • 调用现有函数
    • 参考程序集
    • 通过网络/进程外调用

    为了拥有autonomous business components,您需要制定一些部署策略。这就是涉及更多事情的地方,因为更新暴露服务的遗留系统比将有界上下文(在领域驱动的设计术语中)作为微服务更难。

    如果您的服务器 以一种相当易于访问的方式(例如 REST API)公开服务,则客户端/服务器实现可能看起来非常像 SOA。如果您从足够高的层次逻辑地看待事物,它们就会开始看起来非常相似。在这方面,SOA 实际上是相当老的帽子,即使我们有“更新”的技术,它们仍然真正属于 SOA 的旗帜下。

    【讨论】:

    • 谢谢。 SOA 模式必须使用客户端-服务器模式吗? SOA模式不能使用客户端-服务器模式吗?
    • Client/Server 通常是指一种比较具体的实现方式,两端是紧密耦合的,通常使用一些通信机制,使得服务器难以暴露。但是,SOA 绝不需要客户端/服务器实现。但同样,在逻辑层面上,任何服务器都会有客户端。
    • 谢谢。 (1) 客户端/服务器“通常使用一些难以暴露服务器的通信机制。”那是什么通信机制? “暴露服务器”是什么意思? (2) “SOA 绝不需要客户端/服务器实现”。 SOA 可以使用什么替代客户端/服务器实现?
    • 一个例子是客户端和服务器之间的自定义 TCP 套接字。 SOA 是关于公开“服务”的。例如,这些可以通过 REST 端点向外部公开。您可能在内部有消息传递端点(因为您不希望直接暴露这些端点)。您的服务有消费者,但它不是传统意义上的“客户端/服务器”。这些概念之间存在细微差别,因此很难识别和解释,但希望这是有道理的。
    猜你喜欢
    • 2017-04-30
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 2019-04-30
    • 2012-07-04
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多