1,
SOA应用是面向服务的业务应用,是采用SOA的思想、模块化、可复用的业务应用。通过将SOA应用作为业务的载体,利用服务化的接口,实现在系统间、部门间甚至企业间的复用。


和以往应用相比,SOA应用具有模块化、服务化、数据标准化、易集成、用户体验良好、灵活业务定制6个显著特点。


(1)模块化


SOA应用采用模块化划分、构件化方法开发,一个SOA应用由多个模块组成,每个模块完成单独功能,并可独立部署。模块化的方式使SOA应用中每个模块具有动态更新、可插拔、分布式部署等特性,提高了SOA应用的灵活性和可扩展性,使应用更加稳定、高效。


(2)服务化


和以往的模块和构件概念相比,SOA由于采用了服务化的思想,统一了原来各种不同的构件标准,实现了完美的构件服务化组装和服务化编制。


(3)数据标准化


SOA应用提供了一种端到端的统一的数据模型,为企业应用间的数据交互提供了统一的数据模型,为包括关系数据库、非关系数据源在内的异构数据源提供统一的标准化数据访问接口。


(4)易集成


SOA应用具有很多天然的集成优势,通过SCA、SDO、BPEL等技术可以比较完美地解决应用间的顺利交互即集成问题,包括服务集成、数据集成、流程集成和展现集成4种方式。


(5)用户体验良好


SOA应用克服了传统B/S应用的缺陷,通过综合Web 2.0、RIA等技术,带来了统一、高效的用户体验,提高了企业用户的工作效率,减少了学习成本。


(6)灵活业务定制


以业务为导向,将流程、服务、规则做业务化的抽象,通过二次开发工具快速响应业务需求,缩短交付时间。


2,
模块化SOA应用的特点


SOA的一个显著特点就是模块化。模块化具有以下特点。


(1)模块可插拔的应用


采用模块化设计是一种合理有效的应用设计方法,将应用划分为功能模块,具有"高内聚、低耦合"的特征,从而为SOA应用中的功能模块采用类似OSGi的格式进行动态部署和可插拔提供了基础。每一个模块都是一个可交付的软件单元,可以在应用运行状态下动态增加、停止、更新,这种热插拔的能力提高了应用的可管理性和可维护性。


(2)高效稳定的应用


模块化使得应用可以基于一个微内核的模块容器运行,这种微内核的机制保证了应用的稳定性,只要微内核正确运行,应用就不会崩溃。这种微内核的机制也为应用的可扩展性提供了基础。


(3)大规模应用和粗粒度复用


模块化有利于团队的大规模并行开发。以往的产品、项目开发中,每个模块的架构、设计以及开发模式往往依赖于架构师的经验、喜好,各项目之间并不统一,造成了模块之间的匹配度不高,只能实现基于代码的复用。基于这种清晰接口和基于构件组装等标准化手段开发的模块很容易实现复用,为企业积累已有模块提供了基础。


3,
应用模块的划分原则


设计一个良好的SOA应用,需要对应用进行模块切分,以下是一些模块切分的基本原则。


(1)模块进行切分时要大小适中,具有清晰的模块结构。一般情况下要求切分的模块功能相对独立和完整,适合1~2人独立完成。一个模块是一组相对独立的构件集合。在这里引入组合构件这个概念,将组合构件作为构件的容器对构件进行包装和组织,并作为可发布的单元进行部署。一个模块下定义合适数量的组合构件。


(2)建立模块间合理的依赖关系。特别是大型应用项目设计,需要避免多个模块之间建立复杂的网状依赖关系,需要规避循环依赖。在项目初期就需要设计合理的模块依赖关系。


(3)作为独立模块的情况。一个模块一般是具有相对独立的一组功能的应用子集。会被多个模块调用的基础业务数据和功能,如数据实体、通用服务等最好作为独立的模块存在。Web应用元素建议放在一个单独的模块中进行存放,这样可以对所有Web元素进行版本管理。




>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
a,企业体系架构与企业的内部组织、流程和业务模型密切相关,因此必须长期保持企业架构的可维护性和可更改性。为提高IT敏捷性和效率,企业体系架构必须具备简单性、灵活性和可维护性以及可重用性等特性。
b,企业架构从企业的战略目标和愿景出发,用统一、条理化的架构描述企业的所有关键元素和它们之间的联系,从业务、数据、应用系统、技术标准和基础设施等方面进行细化,以期给出完整的企业业务蓝图和IT解决方案。
c,SOA的企业架构要求在架构设计中更多体现SOA的思想,通过松耦合的理念和企业业务模块的复用,针对灵活的业务从架构适应性、投资回报率、业务流程等方面要求IT的快速响应。SOA独立于标准,提供了架构蓝图。架构蓝图解耦、分块和组合企业应用程序层,并在组织内构建应用程序构件,将这些构件创建和表示为SOA中的"服务"。虽然服务技术上独立于业务功能,却与业务功能直接相关,最终实现在企业架构下全局范围内集成这些构件。




信息架构:
信息架构是一个广义的概念,在国外信息架构常等同于数据架构。SOA企业架构的信息(数据)架构使用服务元数据进行信息组合管理、信息分类、Schema开发、记录和内容。SOA企业架构的信息(数据)架构包括数据战略、数据定义、数据分布和数据管理4部分


技术架构:
企业IT技术架构的演进大致经历3个主要阶段,即主机架构、客户机/服务器架构和企业服务架构
1)在主机架构下,数据和逻辑是一体的,采用面向过程的设计方法,每个应用是一个孤立的系统,维护相对容易,但是难于相互集成。


(2)客户机/服务器架构将逻辑与数据进行了分离(不论C/S还是B/S 模式,本质都是客户机/服务器架构),采用面向对象的设计方法,每个应用是一个孤立的系统,提供了一定后台集成的能力,典型的客户机/服务器架构就是MVC架构。


(3)企业服务架构把流程从逻辑中抽象出来,逻辑成为系统对外的服务,通过统一的用户界面、流程打破竖井式结构,采用面向服务的设计方法,企业多个应用之间将成为一个有机的整体。




目前企业应用IT架构正在从关注单系统、单应用的MVC架构向关注多系统、多应用的企业服务架构发展。IT架构的演变,其实都是在追寻一个目标,试图通过实现模块的松散耦合来提高应用的灵活性和业务流程的变化能力。伴随着这种系统架构建设模式的发展,新的支撑技术和产品已经出现。




SOA企业架构的技术架构通过引入服务层,降低了企业架构各层次间的耦合程度,SOA技术架构分为协同层、流程层、服务层、逻辑层、资源层等五层,以及相关的基础设施。SOA企业架构的基础设施包括企业应用集成机制和管理功能,如服务质量、安全、SOA服务管理、组合管理、监视等。


作为企业服务架构的一种体现形式,SOA技术参考架构自顶向下        分为协同层、流程层、服务层、逻辑层和资源层等5个层次,如图4-6所示。


(1)资源层。包含现有的自定义构建的应用程序(遗留系统),现有的CRM和ERP打包应用程序,以及原有的面向对象的系统实现、业务智能应用程序。SOA利用现有系统并且用基于服务的集成技术来集成它们。资源层解决如何整合数据的问题,需要通过一个统一的数据编程模式统一对不同数据源的访问。


(2)逻辑层。逻辑层实现了具体的业务逻辑,包括UI逻辑和后台逻辑。逻辑层由多个构件组成,这些构件将以可插拔的方式部署,使用AOP、依赖注入的方式编程,提供逻辑的编排能力。


(3)服务层。服务层将应用系统提供的逻辑以标准化的方式暴露出来,使开发者不需要关心逻辑的对外协议、逻辑的实现方式、逻辑的部署位置,并提供事件的方式降低逻辑间的耦合度,为非侵入式的操作提供基础。


(4)流程层。流程层维护跨系统之间的业务状态,企业应用的核心是业务流程,流程包括端到端流程和人工参与的流程,流程会产生任务,推送到工作平台。流程把企业中多个应用连接起来。


(5)协同层。协同层为用户提供了一个统一的交互门户和工作平台,通过RIA(Rich Internet Application)的方式在应用程序人机接口或者表现层来利用 Web 服务,以服务的形式进行界面的组装和重用,提升用户体验,用户通过协同层更容易与其他人进行协作,例如即时通信、查看任务列表、查看发布信息,也能够把已有数据、服务或界面快速组合到新应用中。通过协同层,用户不再与多个孤立的系统进行交互,而是面对一个有机的整体




  基础设施包括企业服务平台、流程平台、业务工作台








使用流程对服务进行编制,组合成业务流程,以任务的形式体现工作活动,并允许配置参与者、规则和过程来进行执行和监控,从而提升生产组织水平和工作效率






流程层。流程层维护跨系统之间的业务状态,企业应用的核心是业务流程,流程包括端到端流程和人工参与的流程,流程会产生任务,推送到工作平台。流程把企业中多个应用连接起来。




协同层为用户提供了一个统一的交互门户和工作平台,通过RIA(Rich Internet Application)的方式在应用程序人机接口或者表现层来利用 Web 服务,以服务的形式进行界面的组装和重用,提升用户体验,用户通过协同层更容易与其他人进行协作,例如即时通信、查看任务列表、查看发布信息,也能够把已有数据、服务或界面快速组合到新应用中。通过协同层,用户不再与多个孤立的系统进行交互,而是面对一个有机的整体。




一套好的业务流程管理系统可以随着流程的执行流转,以简单直观的图形报表报告哪些流程制定得好,哪些流程需要改善,以便提供科学合理的决策依据给决策者,从而达到不断优化的目的,呈螺旋式上升的趋势。




流程的运行环境要完成如下工作。


(1)以正确的顺序调用或者执行任务;


(2)把任务分配和路由给授权用户;


(3)跟踪流程的当前状态,包括哪些任务已经完成、哪些任务可被执行、流程及相关任务的最后期限等;


(4)通过访问各IT系统,获取流程需要的信息,更新流程产生的信息,执行流程定义的事务;


(5)对违反了业务规则的流程自动报警。








参考:http://book.51cto.com/art/200912/173757.htm