`
javasee
  • 浏览: 970469 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

服务导向架构(Service Oriented Architecture SOA)

阅读更多

随着企业快速反应(agile)的需求与日俱增,异质型信息系统的整合与重用,确保投资等议题日益重要。信息系统不但要能彼此沟通,还要支持企业再造的重组与分合,进一步结合供应链与消费者等企业外的系统。

服务导向架构(Service Oriented Architecture SOA)应运而生。它代表着分布式松散偶合(loosely coupled)的服务,也就是系统间彼此互为服务,遵循沟通标准呼叫对方,传递 XML 讯息,但不拘平台与开发技术。

何谓服务导向架构

软件架构与方法论一直在演进,有价值的观念与做法依然持续传承着,在正式讨论 SOA 之前,我们先回顾一下历史:1980 年卷起的对象导向风潮让软件有了架构(framework),可以重用。而 1990 的组件导向,让软件易于重用,且在分散架构下动态结合。而 2000 的服务导向可以跨平台与因特网让整个系统动态整合与重用。

而在服务导向架构下设计软件时,依然本着对象导向分析设计组件,清楚划分层次(layer)来规划与部署组件,再将服务平台架构在组件与模块的合作上。

笔者曾就何谓 SOA 广泛地询问各领域的信息从业人员,结论是众说纷纭。由于它仅是概念的集成,似乎连规范都谈不上,实做这些概念的底层技术才有一堆规范,例如 Web Services/SOAP/HTTP/XML。就笔者个人觉得,它并不是新的技术或想法,而是软件设计的理念经沉淀后,再次举起的架构。

软件架构师长久以来关心的就是如何建立一种系统架构蓝图,该架构允许可重复使用,以更松散耦合的方式工作。例如系统架构建立后要修改功能,但无需打破原有设计。又如何在流程中整合异质的信息系统。SOA 支持可重复使用的组件或服务,搭配商业流程的系统架构,这些组件或服务独立于它们执行的平台。

此波 SOA 的浪潮与以往不同的地方是众信息大厂都遵循标准组织所订立的规范,共通发表朝向 SOA 远景迈进的产品/平台/整合开发环境/软件 Framework。广泛地支持标准能帮助客户降低风险。在这种形势下建置 SOA 变得有前景。

SOA 主要的诉求如下:

l 系统整合与分布式架构:一般来说,服务的存取本就多是透过网络在进行,而 SOA 兴起的背景需求是整合,不管是平台、服务流程,还是供应链的整合,大都是分散在不同软硬件上的系统,透过网络串起来。

l 强调界面与松散偶合:继结构化、模块化、对象化、组件重用后,SOA 是再造的传统价值。它要求系统间清楚地的切割,标准化地设计程序接口与存取机制,服务间以讯息沟通。呼叫服务者不需要了解该服务是执行在什么平台,用什么开发技术完成的。而这些特征也就是结构化、封装(对象化)、二进制重用(组件化)等想法的延续,高内聚低偶合仍是基本精神。

l 走开放标准(Open standard)存取服务方法与沟通协议的标准化是整合的基本,且必须是开放的标准。以往 CORBA/IIOPCOM/DCOMJava Bean/RMI 等各擅胜场,但都是专属的协议,使得不同平台的组件无法沟通。现今的运作大都能遵循标准组织( W3COASISWS-I )的规范,让各软件平台虽底层架构与技术不同,但依然能透过标准接口藉由 Web Service/SOAP 沟通。

l 商业流程整合:在建构系统时,强调厘清商业流程,并对应到特定工作的流程,再将其切割成服务界面,开发者依据服务界面开发,整合者透过微软 BizTalk Server 等流程整合的软件平台设计软件运行流程。

开发的难易度与成熟度

软件开发本身具备着高难度,这与采用何种架构没有很大的关系,无论 SOA 为何,分析设计、切割、开发、测试、组合、项目进行都还是老问题。主要看团队成员对解决问题的经验。若单就以 SOA 架构当作指导原则,是否会增加系统开发的难度?在笔者来看初期因为观念不一致、设计没有固定 pattern、对实做技术不熟悉等情况下,一定比较难。

或许我们可以将 SOA 的推广分为几个阶段:

1. 实做服务:将个别功能需求以 Web Services 架构来实做,或是透过 Web Services 包装旧有系统。
单就这一个阶段而言,熟悉 HTTP/SOAP/XML 等技术,将功能需求化为接口/服务/组件,学习驾驭程序语言与软件开发环境,了解系统平台对 Web Services 的支持等,都是采用 Web Services 需做的额外付出。
另外,要强调的是若预期在第二阶段整合时,将与异质型技术合作,则需要尽量避免传递本身开发架构上特有的对象,如 .NET DataSet Java Vector 等,因为对方平台无法了解这些对象的数据结构,当接到这些 XML 序列化后传递的对象,将无法反序列化成原对象。必须当成 XML 数据本身,用 XPath 语法来解析。但这是一体两面的,若不用专属软件架构,则该软件平台( .NET Framework)所提供的效益就大打折扣。在开发系统的功能与整合所需要的弹性间,设计者需做明智的抉择。

2. 流程整合:组合多个 Web Services,强调系统间彼此合作的稳定与正确,强化安全、交易管理、流程的弹性。
只要是跨平台、跨系统的整合,交易/安全/稳定/管理等需求的复杂性就变成两个系统的乘积,长时程的补偿式交易、单一签入等一堆问题会冒出来。而系统间的除错会让问题雪上加霜,因为互动而直接地跨异质型平台除错几乎不可能,只有靠两个系统完备的纪录、监控与细心地判读来除错。

3. 商用服务:期待动态的服务整合。企业间签订SLA(服务级别协议 service level agreements),透过 Web Services/UDDI/WS-* 等技术进行实时地、动态地商业协同运作。
就这阶段而言,光是商务流程规范就是冗长的进程,企业间的整合有许多非信息技术的问题,而是商业利益的纠葛。若第二阶段的技术扎实,此时信息技术的问题只是扩大了规模。

SOA 本身只是个架构,无所谓成熟,但可从设计者的喜好、能力、开发软件的方便性(.NET/Java)、平台的稳定性( Windows IISIBM WebShpere)、产品的支持性(BizTalkSQL ServerDB2...)来评估成熟度。由于众家大厂的共识,并协力鼓吹其架构的优点,在操作系统与软件整合开发环境支持下,要达到上述的第 1 阶段,或第 2 阶段的需求不复杂之前提下,是容易建置与维护的。

成本与效益

单就开发系统时,遵循 SOA 的想法,将功能都用 Web Services 包装起来,初次或许会增加分析、设计的成本,这是缺乏经验所致。但并不必然需要额外购买软硬件,所以相较于传统的开发模式,SOA 在购置成本上不会有多大差异。

虽然 Web Services 所规范的都是标准化技术,你可以用任何熟悉的语言来解析 WSDL、撰写 SOAPHTTP 协议,但事倍功半,不若用专属的 .NET Java 开发环境来得便捷。若要加上自动化、弹性的流程整合,则还需 BizTalk Server 一类的软件平台。若开发团队已经熟悉 .NET Java,则人力成本也与一般系统开发无异。

由于 SOA 可以提升系统的弹性与重用性,且信息系统整合后,可发挥更深更广的效用,长期而言,这两者都有可观的效益。

结论

这几年来 EAI(Enterprise Application Integration)A2A(Application to Application)B2Bi(Business to Business integration)BPM(Business Process Management)…等等,其行情不断的轮动,都因为是在谈整合,需解决乘积倍增的困难而起起落落。

SOA 大旗之下,MicrosoftIBMOracleSAPBEA…等诸多大厂,提供了标准的执行与开发平台、沟通机制、流程整合、讯息绕送/交易管理/安全等规范。但信息系统的基本:如何满足使用者的需求,整体系统可信赖,并不会因 SOA 而有什么大幅进步,它仅是企业整合比较好的方案。

企业核心竞争力为何?核心竞争力如何换成商业流程?商业流程又如何凝结成商业服务单元,最后再将商业服务切割成服务导向架构的信息服务等,这是一连串长远的规划。

参考数据

http://en.wikipedia.org/wiki/Service-oriented_architecture#SOA_definitions

http://www.ws-i.org/

http://channel9.msdn.com/

http://www-306.ibm.com/software/solutions/soa/

http://www.oracle.com/technology/global/cn/tech/soa/index.html

分享到:
评论

相关推荐

    Soa Service-Oriented Architecture

    服务导向架构(Service-Oriented Architecture,简称 SOA)是一种设计复杂应用和服务的方式,它强调通过一组定义良好的服务来构建应用程序。这些服务通过标准协议进行通信,使得它们可以在不同的平台上无缝集成,...

    a research agenda for service-oriented architecture.pdf soa

    标题与描述均提到了"服务导向架构(Service-Oriented Architecture,简称SOA)的研究议程",这表明文档主要探讨了SOA领域的研究方向、挑战及未来趋势。以下是对标题、描述、标签以及部分内容中提及的关键知识点的...

    A Service Oriented Architecture SOME/IP

    服务导向架构(Service Oriented Architecture, SOA)是一种软件设计范式,它提倡将应用程序的不同功能单元通过服务的方式进行组织和交互。在汽车行业中,SOME/IP(Scalable Service-Oriented Middleware over IP)...

    Applied SOA: Service-Oriented Architecture and dedign strategies

    服务导向架构(Service-Oriented Architecture, SOA)是一种软件架构设计方法论,它将应用程序的不同功能单元(称为服务)通过统一的通信协议进行连接。这种架构方式能够使各个组成部分之间的交互变得更加灵活高效,...

    The OMG and Service Oriented Architecture

    服务导向架构(Service Oriented Architecture,简称SOA)是一种以服务为中心的架构模式,它通过将业务流程分解为独立的服务组件来实现系统间的交互。这种架构模式的主要目标是提高企业的敏捷性和响应速度,使企业...

    面向服务的体系结构(SOA)的实施者指南An Implementor's Guide to Service Oriented Architecture (SOA)

    最后,文档提到了SOA与软件开发生命周期的关系,指出了SOA如何与软件开发生命周期的各个阶段相结合,以及如何在这个过程中实现服务导向的架构。SOA的实施者在设计和部署服务时,需要将这些考虑因素融合到他们的实施...

    Service-Oriented Architecture - Thomas Erl 2016.12 page452

    服务导向架构(Service-Oriented Architecture,简称SOA)是一种设计方法论,它定义了一组原则和模型,用于创建灵活且可重用的应用程序和服务。在Thomas Erl所著的《Service-Oriented Architecture》这本书中,对SOA...

    Packt - Service Oriented Architecture with Java (Jun 2008)

    《Java面向服务结构》这本书是2008年出版的,专注于讲解如何使用Java技术来构建服务导向架构(Service-Oriented Architecture, SOA)。SOA是一种设计模式,它允许不同系统之间的服务进行交互和协作,以实现业务流程...

    Prentice.Hall.PTR.Enterprise.SOA.Service.Oriented.Architecture.Best.Practices

    《企业SOA:服务导向架构最佳实践》是Prentice Hall PTR出版的一部经典著作,主要探讨了在企业环境中如何有效地实施服务导向架构(Service-Oriented Architecture, SOA)。这本书详细介绍了SOA的设计原则、实施策略...

    Auerbach.Publications.Service-oriented.architecture.SOA.strategy.methodology.and.technology.2008.pdf

    根据提供的文件信息,我们可以深入探讨服务导向架构(Service-Oriented Architecture, SOA)的战略、方法论和技术等关键知识点。 ### 一、SOA战略 #### 1.1 战略简介 - **定义**: SOA是一种设计思路,强调通过服务...

    正确认识SOA的架构与规划

    服务导向架构(Service Oriented Architecture,简称SOA)是现代IT领域的核心概念,被IT行业分析公司Gartner视为主导软件创建和交付的主要框架。SOA的重要性在于它能够帮助企业构建灵活且可重用的业务功能,以适应...

    Apress - Expert Service-Oriented Architecture In C#, Using The Web Services Enhancements 2.0

    - 本书主要关注的是服务导向架构(Service-Oriented Architecture, SOA)在.NET平台上的实现,特别是利用了.NET Framework 2.0中的Web Services Enhancements (WSE) 2.0组件。 - **服务导向架构(SOA)**:一种软件设计...

    Access Control Service Oriented Architecture Security

    ### 服务导向架构(SOA)安全性概览 在当今高度互联的世界中,服务导向架构(SOA)作为实现计算系统的一种流行概念被广泛应用。SOA 的核心在于它能够通过松耦合的服务来构建复杂的软件系统,这些服务彼此之间通过...

    Building Service Oriented Architectures (SOA) with the J2EE Platform

    服务导向架构(Service-Oriented Architecture,简称SOA)是一种设计方法论,它强调通过定义一系列可重用的服务来构建复杂的业务流程。这些服务可以独立于其实现细节进行描述,并且可以通过标准化的协议进行交互。...

    Expert.Service.Oriented.Architecture.in.C.Sharp.2005

    服务导向架构(Service-Oriented Architecture, SOA)是一种软件设计方法,旨在通过标准化的服务接口将功能模块化。这种架构方式支持跨系统的数据共享和服务复用,从而降低了系统集成的成本并提高了灵活性。在本书...

    Pattern-Oriented Software Architecture 全集(vol1到vol5)

    第三卷《On Demand Software Services》探讨了服务导向架构(SOA)的概念,包括服务的发现、组合和管理。书中详细阐述了Service-Oriented Design(SOD)和Service-Oriented Implementation(SOI)的模式,如Service ...

    Prentice.Hall.PTR.Service.Oriented.Architecture.Concepts.Technology.and.Design

    《Prentice.Hall.PTR.Service.Oriented.Architecture.Concepts.Technology.and.Design》是一本关于服务导向架构(Service-Oriented Architecture,SOA)的权威著作,旨在深入探讨SOA的基本概念、技术实现以及设计...

Global site tag (gtag.js) - Google Analytics