从企业的IT战略角度而言,经过多年的发展,各个企业都已经在不同业务支撑领域架构了一系列的IT系统,甚至是一个完善的企业架构,或者是已经完成了部门级的垂直整合。可是,在日新月异的商业环境下,产品的生命周期变得越来越短,客户的需求也在随时变化,新的业务模式持续地酝酿生成。
新的业务模式需要新的业务流程来支撑,要求更有效率的合作,这不仅仅发生在同一个垂直的部门内部,对跨部门的业务合作和整合的需求也被提到议事日程上。有效的部门间合作,或者企业间的合作,能够满足客户需求并响应外界变化的灵活业务流程,是现代企业竞争力的根本。这不仅仅是一个企业管理和文化能解决的问题,也对企业的IT系统提出了进一步的需求。
随着全球经济一体化的深入发展,敏捷的、不受限制的业务集成的需求已经成为关键的业务需求。企业希望能够是吸纳集成企业内外的信息,同时又能够随时更新这样的集成。SOA就实现了企业的这个想法。
1 SOA简介
SOA的英文全称是“Service Oriented Architecture”,也即“面向服务的架构”。这里的服务,可以说是一种既超越具体技术,又包容具体的实现技术的业务功能。SOA是一个完整的软件系统建构体系,包括运行环境、编程模型、架构风格和相关的方法论等。其核心是服务,并涵盖服务的整个生命周期,建模—开发—装配—运行—管理。SOA的核心理念是业务驱动,采用松耦合的、灵活的体系架构来满足随需而变的业务需求。SOA的服务理念思想,本质上是一种业务和技术的完全分离,业务又能和技术自由组合的思想,它达到了目前软件设计思想的最高境界,SOA的出现,预示着一个以服务为导向的新的IT时代的到来。
2 SOA为企业带来革新
随着行业发展越来越专精,越来越多的专业服务被提供出来。比如说,自古以来饭店总是要雇用一些洗碗工清洁堆积如山的碗筷。可是现在出现了一种专业服务,回收用过的碗筷,清洗、消毒,然后包装好派送各个饭店。于是,饭店便无需雇用专门的洗碗工,也无需使用一次性筷子,还可以向消费者收取碗筷清洁消毒的费用——相当于原来的一次性筷子的费用,所以消费者也不会抱怨。这是一个标准的三赢场景:首先,饭店省去了雇用洗碗工的成本;其次,消费者避免使用浪费资源并可能有卫生问题的一次性筷子;最后,洗碗服务的提供者也获得了相应的利润。其中的理念是,饭店要正常经营,清洁碗具是每个餐馆不得不做的事情。但大家都知道,洗碗并不是餐馆最擅长的事,餐馆最擅长的事是烹制美食,而专业的洗碗店最擅长洗碗。所以,自然而然出现的场景是:饭店只做自己最擅长的事——烹制美食,把自己不太擅长的事——洗碗外包给最擅长做这些事的公司——洗碗公司,这样强强联手,给消费者提供更好的服务。
反观IT业界,同样的场景也会发生。企业可以使用第三方提供的更好服务来支持自身业务流程实现的需要,而不用事必躬亲,这样可以大大节省IT开发和维护成本。例如:企业内部资源包括部门资源和共享服务资源两部分。在客户使用这一业务流程时,企业业务流程不仅仅是使用自己的既有服务,还整合了供应商的服务,进而供应商又整合了一些外包商的服务。在这样一个场景中,供应商和外包商提供了流程中的一些专业服务使得业务流程更加敏捷有效,犹如上面例子中的洗碗店一样。服务的核心理念是业务,服务定义了一个与业务功能或者业务数据相关的接口,以及约束这个接口的契约,是粗粒度的。服务是中立的,不依赖于特定的技术和平台。多个服务可以被组装成一个业务流程,完成一个特定的业务功能。由此可见,服务是可重用的,一个定义良好的服务可以被用于组装多个业务流程。SOA的概念架构模型如图1所示。
图1 SOA的概念架构模型
3 程序设计思想
面向过程语言是最早出现的大众化的编程语言,C语言是典型的代表,是一种紧密耦合的软件语言技术,用C语言编写的应用程序完成一大堆函数的编写,整个应用程序依赖于一些预先定义的全局变量。函数的可重用性很差。
面向对象编程将面向过程的相关函数封装起来,消除全局变量,形成能够独立调用的对象。相对于面向过程的含有全局变量的编程,其耦合性已经降低。对象可以重用,可以继承和扩展。而对象之间还有相互调用的现象,还存在一定的耦合性。这些对象只能本地调用,不能远程调用。
面向组件的编程将面向对象的程序进行封装,定义一些接口让外部调用。但是客户端和远程服务器端的传输协议是特定的,需要和特定的程序实现语言绑定。
从本质上来讲,面向对象是对面向过程的一次解耦和封装,就是把面向过程的程序进行分解,把逻辑紧密相关的程序结合在一起,发布成独立的对象单元,对象单元里面含有API。面向组件的编程是将面向对象的程序进行进一步的封装,发布成独立的组件,里面含有一些粒度大于API的接口。面向组件和面向对象的最大区别在于组件是通过传输协议来进行远程调用的,组件是和传输协议绑定、应用服务器的端口绑定在一起的。面向服务的编程是对面向组件的编程的进一步解耦和封装。所谓解耦,就是将业务组件和传输协议、端口解耦。也就是说业务组件可以自由地绑定各种传输协议。作为面向服务的编程,由于服务组件可以和各种传输协议自由绑定。这样作为服务的消费者,就不需要特别关心服务提供者的具体的技术细节,只需要知道有这么一个完全和技术无关的业务接口。SOA的服务调用方式如图2所示。从图中可以看出,传输协议和位置都是透明的,不论实际服务者的传输协议和位置如何修改,客户端都不需要相应的程序。
图2 SOA的传输协议和位置透明的调用方式
4 小结
SOA是为软件集成而服务的,它实现了技术和架构的完全分离,消除了软件服务集成的所有障碍。可以重用定义好的服务,无论是包装已有系统功能,还是新开发的业务功能,甚至是采用合作伙伴所提供的服务。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:SOA在信息化和企业应用中的研究