在上一章中我们简单介绍了,SOA的一些基本概念,在本章中我们主要介绍SOA中的三种角色,以及解决上一章中的问题。由于SOA是分布式架构,服务提供者和使用者会出现以下问题。1.服务使用者是怎么知道服务提供者是否正在运行。2.服务提供者是否正常工作。3.服务提供者与服务使用者是处于同一设备还是不同设备。
为了解决上述的问题,我们需要说明SOA中三种角色的定义。
1.服务提供者(server):利用服务中心对外提供自身服务,响应client的请求。
2.服务使用者(client): 利用服务中心查询自身感兴趣的服务。
3.服务中心(对于server):注册且保存服务提供者所提供的服务,并对外进行广播.
4.服务中心(对于client):查询网络中的有效服务,并通知client该服务是否可用.
总的来说,服务中心具有服务发现与保存注册并进行广播的功能。不管是设备内还是设备外的服务使用者与提供者通过服务中心对服务进行交互。值得注意的是,相同设备上可以有多个server或者client但是只能有一个服务中心.还有一个不要以为是服务中心提供了服务,其实打个形象的比喻,这个服务中心就相当于婚介所,一方给婚介所上传自己的资料付钱,婚介所就广播,另一方也可以通过婚介所查询。配对好之后,他们之间提供服务就不关服务中心什么事了。
SOA的优势与劣势
优势
由于SOA是分布式架构,且因为是提供服务。需要什么服务直接就增加或删除进程就可以了,无需改变其他进程架构。这提供了极佳的松耦合与隔离性,同时因为特定服务端的数据只发给特定的客户端这就可以降低网络负担。而且不管接口是什么,只要使用相同的通信标准就可以进行跨平台通信。
劣势
性能成本:用网络通信的肯定比不过系统内部调用
维护成本:当每个服务都依赖于其他服务反而会变得复杂,也就是服务粒度问题,这时候就该聚合服务