目前主流的软件项目的架构类似“竖井”,在这个“竖井”中有数据库,中间层、客户端表现层等。每个应用系统的数据库分属在不同的竖井中,当我们的信息化发展到一定程度,已开发和上线运行的系统需要整合或实现数据共享时,我们不得不在竖井中“穿洞”透过不同的“竖井”来访问数据库。一个数据库中的对象发生了变化,对其他系统的影响就变得“不可知”和“不可控”了。
![](https://images.cnblogs.com/cnblogs_com/utopia/绘图1.jpg)
当我们想调用系统的服务时也要突破竖井。如果将企业的IT资源,如:客户端程序、中间层业务处理、支撑平台、数据处理、原始数据和规范数据源,按照分层再通过消息机制将各个应用系统的这个资源都整合在一起,根据每一层不同的功能和作用统一组织在一起。
我们现在使用新的设计思想,SOA是面向服务的体系架构,更确切地说是一种架构的风格;SOA是一种风格和理念,强调的是资源共享和复用、企业架构动态和柔性的组合;SOA通过模块化和开放标准接口设计,使企业实现IT与业务紧密结合,提高企业业务流程的灵活性。
在 SOA 系统中不同的功能模块可以被分为7层:第一层就是系统已经存在的程序资源,例如ERP或者CRM系统等。第2层就是组件层,在这一层中我们用不同的组件把底层系统的功能封装起来。第3层就是 SOA 系统中最重要的服务层,在这层中我们要用底层功能组件来构建我们所需要的不同功能的服务。总的来说,SOA 中的服务可以被映射成具体系统中的任何功能模块,但是从功能性方面可以大致划分为以下三种类型:(1)商业服务(business service) 或者是商业过程(business process)。这一类的服务是一个企业可以暴露给外部用户或者合作伙伴使用的服务。比如说提交贷款申请,用户信用检查,贷款信用查询。(2)商业功能服务(business function service), 这类服务会完成一些具体的商业操作,也会被更上层的商业服务调用,不过大多数情况下这类服务不会暴露给外部用户直接调用,比如说检索用户帐户信息,存储用户信息等。(3)技术功能服务(technical function service),这类服务主要完成一些底层的技术功能,比如说日志服务以及安全服务等。在服务层之上的第4层就是商业流程层,在这一层中我们利用已经封装好的各种服务来构建商业系统中的商业流程。在商业流程层之上的就是第5层表示层了,我们利用表示层来向用户提供用户接口服务,这一层可以用基于portal的系统来构建。以上这5层都需要有一个集成的环境来支持它们的运行,第6层中的企业服务总线(ESB)提供了这个功能。第7层主要为整个 SOA 系统提供一些辅助的功能,例如服务质量管理,安全管理这一类的辅助功能。