前言
随着互联网技术的发展,基于B/S结构的软件架构,呈现出多样化,所涉及到的富客户端、Webservice、WEB 2.0、HTML5等技术也粉墨登场,本文将介绍基于OpenText Cordys产品的SOA体系架构和相关开发技术,为开发人员分享另一种软件系统开发实践。
其中,富客户模型将界面分解成许多的既可以和用户直接交互又可以和服务器进行通信的小单元模块,所涉及到开发语言是JavaScript,以及围绕HTML DOM开发动态网页。
关于SOA
SOA是面向服务的体系结构,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以使用一种统一和通用的方式进行交互。
面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸。
SOA的核心要素
要准确全面理解SOA,首先必须理解SOA的核心要素:
SOA的目标就是实现灵活可变的IT系统。要达到灵活性,通过三个途径来解决:标准化封装、复用、松耦合可编排。
SOA实践
在工程上,SOA的重点是服务建模和基于SOA的设计原则进行架构决策和设计。
从建模和设计的角度来说,SOA更多地侧重在业务层次上,也就是通过服务建模将业务组件化为服务模型,它是业务架构的底层,是技术架构的顶层,承上启下,是灵活的业务模型和IT之间的桥梁,保证二者之间的”可追溯性”。从这里往下,是基于已有的方法,比如OO/CBD来进行的。从架构的层次上,SOA更多地侧重于如何将企业范围内多个分布的系统(包括已有系统/遗留系统)连接起来(ESB,Adapter/Connector),如何将它们的功能、数据转化为服务,如何通过服务中介机制(ESB,Service Registry)保证服务之间以松散耦合的方式交互,如何组装(集成)服务为流程,如何管理服务和流程等。
SOA的架构特性,使得敏捷过程非常适合SOA项目的实施。在SOA架构中,服务的独立性,使得每个服务可以被单独地开发、测试和集成。一个企业中的IT系统,如果是基于SOA的计算环境,那么这个环境就是一个服务的生态系统,每开发一个服务,马上就可以独立部署,成为这个生态系统中的一部分。这样既很好地支持了持续集成、持续质量保证,又很好地使得这个服务马上产生业务价值,而不是苦等其他服务的到位。
服务的松耦合与无状态
松耦合——服务的粗细粒度:
- 一般主张使用粗粒度
- 显然,为了实现最大程度重用,创建细粒度的服务也是必要的。
无状态
服务应该是独立的、自包含的请求,在实现时它不需要获取从一个请求到另一个请求的信息或状态。服务不应该依赖于其他服务的上下文和状态。
- 服务设计简单化
- 提升了运算能力和效率
- 重用性
Web service
Web service是一个平*立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
WebService三要素:
SOAP用来描述传递信息的格式;
WSDL(WebServicesDescriptionLanguage) 用来描述如何访问具体的接口;
UDDI(UniversalDescriptionDiscovery andIntegration)用来管理,分发,查询。
Web Services 的理解及SOAP、WSDL、UDDI的关系
Web Services 是一个可以将应用程序变为web应用程序,将自己本地的应用程序信息通过网络,发布到网络当中,让别人通过浏览器等访问本地的信息。
- SOAP 是定义访问Web Services 的协议,也就是哪些是可以访问的,怎样的格式才能够访问,返回的格式又是什么样的,这些都是SOAP定义的。
- WSDL 是描述SOAP协议的具体语言,用WSDL实现SOAP协议,把它写成文件,直接访问。
- UDDI,是把这些web services 收集和存储起来,这样当别人访问这些信息的时候就从UDDI中查找,看有没有这个信息存在。
简单对象访问协议 (SOAP)
简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息。通常,使用 HTTP 作为传输协议。
SOAP 消息包含以下元素:
- Envelope:必需的元素,用于将文档标识为 SOAP 消息
- Header:包含应用程序特定的信息
- Body:必需的元素,定义调用和响应信息
- Fault:包含有关出现的错误的信息
- SOAP 内容可由 WSDL 文件确定。
关于WEB服务和网页
WEB服务
Apache HTTP Server(简称Apache),是Apache软件基金会的一个开放源代码的网页服务器,可以在大多数电脑操作系统中运行,由于其具有的跨平台性和安全性,被广泛使用,是最流行的Web服务器端软件之一。
HTML网页
HTML DOM
HTML DOM是HTML Document Object Model(文档对象模型)的缩写,HTML DOM则是专门适用于HTML/XHTML的文档对象模型。熟悉软件开发的人员可以将HTML DOM理解为网页的API。它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言获取或者编辑。 例如Javascript就可以利用HTML DOM动态的修改网页。
HTML网页与WEB服务
HTML网页部署在Apache HTTP Server上,并可以携带JavaScript编写的文件(.JS),以及样式文件(.CSS)、图片等。
OpenText Cordys BOP 4 产品架构
Cordys BOP是完全构建在标准、前瞻的架构之上,从一开始就设计成业务运营的支撑平台。客户可以利用BOP平台的SOA架构和完整的BPM能力,并与现有或新建的共享服务组合在一起,具有优异的兼容性,构建完整的业务运营环境。Cordys BOP不仅满足面向业务层面的流程建模与设计,还包括将业务流程真正落地实现,从而驱动企业内部的创新、敏捷性。
产品重要构成:
- SOA Grid:包含通常意义上的ESB模块,以及一些额外的功能,如安全文档传输与数据同步。由于Cordys是一个彻底的SOA体系架构,采用标准的Web服务,因此上层的BPM和CAF也可以不用Cordys自身的ESB,而是和第三方的ESB无缝集成,对第三方ESB开放出来的Web服务,进行组合与流转;
- BPM:一体化的建模、执行、监控环境,也就是通常意义上的业务流程管理工具。
产品主要特点:
- 一体化平台,包含了集成、业务流程管理以及复合应用开发
- 通过协同工作工间真正实现了业务与IT人员的协同
- 支持任何类型的流程,包括工作流、集成流程以及混合流程,并提供端到端的监控
- 完全支持开放标准,提供了高可用和可线性扩展的架构
Web访问原理
了解基于OpenText Cordys产品的Web访问原理,有助于设计、开发、运维等工作,也是建立另一种思维体系——简洁的SOA架构体系。
如上图Web访问过程图所示,简单描述如下:
- 客户端使用浏览器向Web服务器(Apache HTTP)发Soap请求(SOAP Request);
- Web服务器通过Web Gateway,到LDap服务中查询Webservice接口(Webservice interface)查询提交是命名空间(Namespace)和操作方法(operation);
- 通过Webservice接口获取服务组(Service Group);
- 再获取服务连接点(Connection Point);
- 再通过连接点连接到服务容器(Service Container);
- 服务容器内包括应用连接器(Application Connector);
- 应用连接器连接到后台应用服务;
- 最后,返回Soap响应(SOAP Response)到客户端。
开发技术与系统架构层次
基于OpenText Cordys产品的SOA技术架构,相对来说是比较简洁方案,笔者所了解的SOA方案中,这个Cordys SOA方案是最简洁者之一。
Less Coding
在CORDYS上进行开发,与传统的基于J2EE或者.Net这样纯粹的代码开发环境有很大不同。一个最大的不同点就在于Less Coding这样的理念。传统的开发方式是基于三层架构体系完成的,即数据层、逻辑层、与展现层。中间的逻辑层需要且只能通过大量编码的形式完成。而CORDYS采用的是基于SOA与BPM的多层体系,除了部分Web Service的编写和页面Javascript需要涉及代码编程之外,其他各个部分的实现和开发均以建模为主。
CORDYS还原生提供多租户的支持,无需开发人员特意写代码,只要在CORDYS上开发的应用,本质上都是SaaS应用。
关于云计算支持
Gartner划分多租户模型如下图所示:
第7种多租户模型必须要在单个应用内部加入区分租户的业务逻辑,只能提供单一应用内部的多租户,而无法提供一个能开发各种多租户应用的开发和运行平台。CORDYS提供的是开发和运行平台,可以提供从第1-6种的多租户平台部署和技术支撑。
WS-AppServer数据模型
WS-AppServer数据模型有如下三种:标准数据模型、自定义类数据模型、复合类数据模型。
标准数据模型(Standard Class)
标准的数据模型直接映射数据库的表结构,在创建WS-AppServer Package时直接从数据库导入自动生成,每一个表创建一个Class并且存储在WS-AppServer Package中,表中每个字段对应Class中的一个属性。
自定义类数据模型(Custom Class)
自定义类模型是在标准模型无法满足特定业务逻辑需求的时候自定义的灵活类,既可以基于数据库,也可以不依赖于数据库,用户可以任意添加,修改,扩展业务逻辑来满足当前的需求。
复合类数据模型(Composite Class)
复合类是在标准类的基础上由多个标准类组合而成的复合类,在1:1,1:N,N:1的特定场合下特别适合使用。
生产运维及开发生态环境
生产运维环境
基于SOA架构体系,最小生产运维环境由生产环境、测试环境、运维开发环境构成。
开发环境
开发环境依赖配置管理服务器,控制代码在Cordys平台上和本地客户端(Eclipse)间传输,并保障代码版本一致。
参考:
1.部分资料来源于原Cordys培训材料。