单体架构和 SOA 之间的差异

Differences between Monolithic Architecture and SOA

我混淆了这两种架构的差异。

一般来说,Monolithic Architecture 是指将应用程序的不同组件组合成一个业务逻辑。
并且,Service Oriented Architecture 指的是由执行所需功能的离散且松散耦合的软件代理组成的应用程序。

但我了解到,OOP 和设计模式的目标是 "One function should have One responsibility" 和 "Decrease dependencies to increase reuse of function"。

所以我的问题是:
1.单体架构是否遵循OOP?
2. 这两种架构的区别

1.单体架构是否遵循 OOP?

好的人会。是的。如果它是程序性的,或者如果它是功能性的,那将更像是一团意大利面条式代码混乱。在我工作过的所有专业公司中,他们都拥有 OOP 和 MVP 等框架。根据我为有问题产品的公司提供支持的经验,它们往往是一团糟。真的很麻烦,很少重用,如果需要扩展一个 1MB 的东西,唯一的方法就是扩展整个 100MB 的解决方案。

2。这两种架构的区别。

面向服务的架构 IMO 认为每个功能都可以是一个 API,其面向服务。面向对象编程有几个租户,多态,可重用,封装(和抽象),它是一种编程风格,几乎与过程编程等相反

当您设计一项服务时,假设它是一个天气应用程序,可以告诉温度并进行预测。你会想要一个抽象泛型 Weather class,让它支持摄氏度和华氏度实现,你可以获得一些多态性,或者添加一个接口来支持不同的位置或高度,并使用真正的通用函数听起来抽象的名称,如 GetTemp(具有按城市、州、海拔高度的函数重载)将其封装在 Weather class.

所以在这里您设计它时考虑了面向服务和可靠的 OOP 程序集。

"One function should have One responsibility" and "Decrease dependencies to increase reuse of function".

对于第二个预测温度的服务,它会进行一些计算并需要时间来计算,因此我们需要隔离它,以便我们可以独立扩展它。您可以通过使用不同的项目来做到这一点,而不是相互引用,而是使用消息技术(SQS、RabbitMQ 等)使它们松散耦合。

注意:我们可以简单地将静态 GetTemp 结果缓存在其他项目中,以轻松扩展系统的那部分。