首页 > 服务分层和SOA的初衷是什么?

服务分层和SOA的初衷是什么?

抛开实际业务来谈架构,就是耍流氓

现在一提到电商网站架构,首先想到的就是SOA服务化

仔细想想,我们SOA的目的是什么,SOA的粒度怎么掌握(换句话说就是怎么去抽象一个服务)以及SOA以后,服务的上层怎么去分层?

先谈谈SOA。我们平时写代码,会各种抽象,其实我也思考过抽象的目的是什么?想了许久以后,得出了一个结论,抽象的目的是为了划分实体的边界,尽可能的让代码可以复用,以及增加代码的可读性。
而SOA我觉得和抽象的目的其实是殊途同归的。SOA最主要的目的就是划分服务的边界,提高服务的复用率(也包括以后扩展性)。
SOA以后,我们必须要在基础服务上面加一层,来组合这些基础服务。这个时候就有分歧出现了。在服务上面是加一层还是加两层。我觉得在前期的时候业务不是很复杂的场景下完全可以用一层。随着业务发展,发现在这一层业务变得越来越复杂,为了增加代码的复用率,组合服务之间的调用关系就会变得越来越复杂,这个时候就可以把这一层变成两层,抽出一些公有的逻辑,让抽象层次更加分明。

不管是SOA还是服务分层,就是一个抽象过程。而在这个抽象过程中会涉及到抽象层次的划分和抽象边界定义


关于SOA的目的是什么,请先思考三个问题

  1. 在单机应用时代,业务的接口是什么?

  2. 在最初用Socket实现C/S的时代,业务的接口又是什么?

  3. 在现在的多终端(PC桌面、移动App、Web等)时代,业务的接口又应该是什么?

然后你大概会发现接口的变化是这样一个过程:Function→RMI→基于Web Service等接口技术的SOA

所以SOA的本质就是接口的抽象,接口的主要作用之一就是划分边界,提高复用率。

而接口,本来不一定是平面的,而有可能是多层次的。所以SOA也不一定要在一个层次内完成。
另外,每一层次的接口也不一定是同一种技术,比如从下往上有可能分别使用了Function、RMI和WebService等。

总的来说,我认为你的理解是对的,但是关于SOA的应用,不是一个简单的公式可以解决的,而需要大量的实践经验,不断的完善,并在这个过程中理解,深化,改进……

个人观点,仅供参考

【热门文章】
【热门文章】