SOA分析
摘要:面向服务的架构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元----服务(service),通过服务间定义良好的接口和契约(contract)联系起来,使得这些系统中的服务能够以-种统一和通用的方式进行交互。本文就本人进行开发的项目为例,详细介绍SOA架构。
1、概要叙述你参与分析和开发的软件系统开发项目以及你所担任的主要工作。
近期在参与开发基于计算机视觉的交通场景智能应用项目。运用计算机视觉对交通场景进行智能识别,识别出各种违章行为,并 识别出该违章行为的车牌号进行违章记录,来对公共交通的管理提供便利。本人所担任的主要工作是后台功能的实现,如基本的机动车检测以及车牌识别,识别出违章行为,计算出路口交通的流量统计或饱和度。最终输出场景行为识别行为判断的结果。
2、说明面向服务架构的主要技术和标准,详细阐述每种技术和标准的具体内容。
SOA旨在将单个应用程序功能彼此分开,以便这些功能可以单独用作单个的应用程序功能或“组件”。这些组件可以用于在企业内部创建各种其他的应用程序,或者如有需要,对外向合作伙伴公开,以便用于合作伙伴的应用程序。
SOA相关技术标准的一种分类方式,是根据技术标准在 SOA 中的角色功能,将其分为三大类:服务层次上的信息交互规范、基础通信标准规范、元数据标准规范。
(1)WSDL与OWL-S
W3C 组织提出的标准的Web服务描述语言WSDL,它从句法层面对Web服务的功能进行描述,包括4个不同的粒度:数据类型(Data type)、消息(Message)、方法(Operation)和访问端口(PortType)。这只是提供了Web服务的接口描述,对服务的行为约束和属性描述缺乏进一步的支持。
OWL-S是语义Web服务标记语言的标准,它比WSDL更能向用户提供可理解的服务资源的描述形式,提高服务选取与推荐的准确性。语义Web服务的主要方法是利用Ontology来描述Web服务,然后通过这些带有语义信息的描述实现Web服务来实现服务的自动发现,调用和组合。语义Web和Web 服务是语义Web服务的两大支撑技术。OWL-S是连接两大技术的桥梁,目前对语义Web服务标记语言研究最重要的组织就是DARPA组织,其研究组 OWL Services Coalition提出了语义Web服务标记语言OWL-S(原DAML-S)。语义Web服务及相关标准(OWL-S等)对于Web及Web服务应用的深化具有重要意义,同时也具有很好的发展前景。目前OWL-S等语义Web服务相关标准的应用还主要是研究性、示范性的。
(2)XML Web服务与ebXML
SOA中的服务,当前多以Web服务技术实现和解释,传统的Web服务及其相关协议,都是以XML为基础进行扩展的,因此我们把它称为XML Web服务。其实,在XML Web服务之前,ebXML已经出现,鉴于此标准复杂而完善,因此它在传统的电子商务领域,用处较广。就具体的内容和定位而言,两者有一定的区别。
(3)SCA与JBI
SCA(Service Component Architecture),即服务组件架构,提供了一种编程模型,可以支持基于SOA的应用程序实现。SCA是一种模型,可以支持实现服务组件的各种技术,连接服务组件的各种存取方法。对于组件,不仅包括不同的编程语言,也包括这些语言使用的框架和环境。对于存取方法SCA合成操作支持各种通讯、服务存取技术,如:WS、MQ、RPC。SCA规范包括了Assemble Model和Client Model两部分。前者约定了如何将异种组件(Java类,BPEL,Web Service)组装并发布成SOA服务,是SCA最大的特点和最核心的概念;后者则约定了如何在异种语言环境中调用SOA服务。通过这两部分的规范,就可以完全解决了服务从服务端到客户端的跨语言、跨环境的问题。
JBI 是Java商业集成(Java Business Integration)的简称。JBI的制订者们认为传统的EAI和B2B解决方案使用非标准的技术,这使得用户往往被锁定到特定的方案和产品提供商上,与此同时,没有任何一个单独的提供商可以覆盖EAI和B2B领域的所有问题。因此他们提出这个标准以期解决这个问题。这个标准定义了一个标准的体系结构允许第三方的组件插入到标准的基础设施上,并且即使这些组件是有不同提供商提供的,它们也可以以一种可预见的和可靠的方式互操作。从高层次上看,JBI 定义了可以从可插入组件构建集成系统的体系结构,这一结构中组件的交互使用一种经过中介的消息交换机制,而这一消息交换模式是基于WSDL 2.0或WSDL 1.1的。
(4)WS4BPEL与WS-CDL
WS4BPEL,即Web服务业务流程执行语言,它是一种可执行语言,能够与各种促使业务流程自动化的软件系统相兼容。Web服务编制,通过说明性的方式(而不是编程的方式)表达了进行Web服务合成的需求。此标准主要用于组织内部的业务流程管理及服务编排,目前越来越多的BPM产品基于此规范实现。
WS-CDL,即Web Services Choreography Definition Language,Web服务编排定义语言,它定义为在多个交易伙伴之间建立形式化关系,它不要求所有被集成的端点(endpoints)都有Web服务基础设施。此规范更多地用于组织之外的服务与流程编排,目前在国内还不常用。另外,XPDL也可以用于服务的编排和组合,但它主要用于传统的工作流定义,目前它也是BPM产品实现的重要技术标准。
(5)JSR168与WSRP
JSR168 是java 规范要求,它为创建portlet建立标准的api,它是为实现porltet、基于java的门户服务器和其他web应用程序之间的互操作性而设计的。 JSR168的主要价值在于它被独立软件开发商(isv)所广泛采用。在采用JSR168之前,企业应用程序开发商不得不支持所有开发商门户的不同 portlet集,支持多个门户开发商不同的portlet集在类似业务信息、内容管理、检索和分析这样的领域中非常令人头疼。使用JST168规范,现在开发商只需要支持一种portlet集。目前,JSR168在基于Java技术开发Portal产品上,得到了广泛的支持,但也仅限于Java技术。
WSRP,即Web Services for Remote Portlets的缩写,它定义了如何利用基于 SOAP 的 Web 服务在门户应用程序中生成标记片断的规范。通过定义一组公共接口,WSRP 允许门户在它们的页面中显示远程运行的 portlet,而不需要门户开发人员进行任何编程。对于最终用户,这些 porlet 就和运行在他们本地的门户上一样,但是实际上这些 portlet 来自于远程运行的 portlet 容器,并且交互是通过 SOAP 消息的交换来实现的。在面向服务的体系结构中利用 WSRP 将是一个强大的组合,从而使面向呈现的 portlet 应用程序可以被发现并重用而不用任何额外的开发和部署活动。
总结:webService三要素
SOAP WSDL(WebServicesDescriptionLanguage)UDDI(UniversalDescriptionDiscovery andIntegration), soap用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口, uddi用来管理,分发,查询webService 。具体实现可以搜索 Web Services简单实例 ; SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。
3、详细说明你所参与的软件系统开发项目中,构建SOA架构时遇到了哪些问题,具体实施效果如何。
本项目的所有功能结合在了一起,没有划分单独的务功能服务和流程,导致开发起来不太容易,系统很复杂,代码难以维护。因为技术不是很好,构建SOA架构难以把各个功能做成独立的可调用的接口,再有,这是首次接触SOA架构,对SOA架构的理解不是很深,SOA的很多知识还不了解,暂时很难应用到自己的项目中,想更好的应用到自己的项目中,还需要学习更多的知识。本系统在尝试SOA架构后,没有完成所预期的结果,难以进一步实施SOA 架构。一个SOA系统要包括以下几方面的工作:首先需要设计开发出符合标准的服务,这是整个SOA系统最核心的要素。基于标准服务,借助流程编排工具和建模工具,组织构造流程,生成流程模型,更好地满足业务需求。实际构建和开发SOA系统,具体包括服务和应用程序的开发,数据的访问、处理和管理,及对服务各种形式的展现等。在第一步实际开发符合标准的服务中我们就难以进行,今后的时间,我会不断的学习相关知识,将SOA架构应用到更多的项目之中。