[置顶] 某大型银行深化系统技术方案之十二:服务层之服务分类
传送门 ☞ Android兵器谱 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229
服务层
服务层主要体现了SOA体系下的组件复用和业务复用机制。服务的边界定义决定于粒度和耦合度。
粒度表示的是一个服务的大小,它可以理解为服务操作的范围,粗粒度的服务,操作的内容广而且杂;细粒度的服务,操作的内容细而且简单。粗粒度的服务设计,可以减小服务之间的耦合性,但付出的代价就是增加服务的复杂性,服务具备了太多的功能,增加了设计的复杂性和维护的难度;细粒度的服务,可以让服务的实现变得简单,但这样会增加服务的数量,服务过细过多,这样必然有一些服务需要组合才能实现一定的功能,那样就增加了服务之间的耦合度,只要其中一个服务发生了变动,势必牵一发而动全身。
耦合代表的是服务与服务之间的关系。SOA的初衷就是为了降低系统各个部分之间的耦合性,使得服务可以重用。但很显然,耦合性是受到服务粒度很大的影响,而且从某种程度上讲,粒度的选择就决定了系统内部的耦合性。
服务分类
SOA提倡服务要粗粒度,即应该具有更大的闭包集合。因此按照粒度来分,可以把服务分解为四种类型:基本服务、组合服务、合成服务和流程服务。
一、基本服务
例如核心层中的SSO验证模块等等。基本服务即是系统提供的最小粒度的服务,或者说是原子服务。这类服务考虑的是利用它们的可重用性,它们是组成一些较大粒度的服务的基础。基本服务可以说是原有系统跟业务需求细分的中间结合点,它既是原有系统能够提供的最细粒度的服务,同时也是要设计的系统最细粒度的服务。
二、合成服务
是基本服务简单的组合,只是为了把具有相同功能但操作不同的业务对象的基本服务组合到一起,形成一个对外提供相同功能的服务。它类似设计模式里面的工厂模式,只要告诉服务接口传进来的是哪一个业务对象,那么服务就能自动识别应该调用哪一个基本服务。
三、组合服务
组合服务是系统里面最复杂的部分,它不是基本服务的简单堆积到一块,它是最大粒度的服务,里面各个基本服务的关系受到工作流程的控制。它是基本服务与工作流程的结合。
四、流程服务
流程服务是业务流程的技术实现载体,根据业务和管理领域划分流程服务域,不同的服务域实现不同的业务和管理流程。流程服务调用基础服务获得业务功能和数据,流程服务之间也可以通过互相调用以实现不同流程的串接。根据业务负载的大小规划每个服务域内流程服务的数量,比如业务推动服务域通常负载较重,则构建多个处理不同类流程的流程服务以分担业务负载。原则上业务流程应独立于应用系统,但在部署一体化套装软件的情况下,应优先使用套装软件提供的业务流程功能,此时对应的服务域内不需部署同类功能的流程服务。
基于上面的理解,我们的服务设计遵循这样的设计思路:先从功能模块分离出基本服务,各个功能模块可以看成是合成服务,由功能模块分离出来的就是基本服务;然后在基本服务的基础上设计组件和业务对象;设计完组件和业务对象之后再来设计组合服务;与提供核心数据和业务功能的基础服务不同,流程服务实现的是有人机交互的长时处理流程,对于短时的全自动不需人工参与的处理流程,一般由基础服务域内基于服务编排成的合成服务来实现。这样不管组合服务需要多少,组合服务多复杂,都可以通过基本服务和工作流程进行各种形式组合起来。而且组合服务经常需要变动,这样的设计能够保证这些变动不会引起太大的改动。因此我们根据功能分主要分为两类:包括录入、验印、扫描、数据核对、版面分类等人工处理服务,以及记账、影像切分、OCR等自动服务。