引言
介绍
Tuscnay近日将推出 1.0版本,它在实现了 SCA1.0的基础上,还开发了一些扩展内容,为开发者提供了将更多主流技术一直到Tuscany环境下的手段。
目标
本文是在认真研究 Tuscany SCA环境的前提下,总结以前我们在 SOA方面所作的研究,提出了 一个利用 Tuscany1.0的技术能力构建一个具有分布式特点的服务化的应用系统,读者可以从中看出 SCA1.0和Tuscany1.0为我们所展现的SOA前景。
术语和缩略语
构件:本文将SCA中的Component译为构件。
组件:本文将SCA中的Composite译为组件。
--------------------------------------------------------------------------------
背景介绍
SCA首先是想解决 SOA平台之间的兼容性问题,但是道路漫长。 Tuscany目前已经做到了这样一个服务环境:
他首先提供了一个本地构件运行环境,这与 Spring所做的工作是相同的。本地系统可以运行于 Tuscany提供的 IoC环境/容器之上。但是该环境比 Spring更加易于将异构系统所提供的服务通过 WS集成到本地系统中。本文将要展现的是两个本地系统在Tuscnay1.0的帮助下,简单地将构件服务化,而彼此可以享用来自其他系统的服务功能。
--------------------------------------------------------------------------------
分析内容
利用 Tuscany IoC实现本地应用
在本文中,我们将实现以下用例。
插图 1
图中包含两个用例:用户管理和邮件递送,对于用户管理系统来说,需要使用邮件递送系统中的某个功能,邮件系统可能是一个已经存在的系统,但是它是使用Tuscany环境的系统,在这个假设下,用户管理系统可以轻松使用由递送系统所提供的服务。
两个用例分别在两个应用中被实现,他们原本非别服务于自己的系统中,本来他们并不相关。
插图 2
图中,用户管理和邮件管理系统分别位于两个应用节点上,从设计初衷来讲,它们之间并无关联。而本文的用例中,用户管理系统的某个(新)功能将要使用邮件管理系统的某个功能(而不是自己去重新实现相同的功能)。
本文以WebX1.0为例说明系统的开发过程。
实现用户管理系统
图中,我们创建了UserManager,它包含一个UserDao对象,在WebX1.0中,这个依赖关系由 spring管理,而在本文介绍的这个系统中,该关系由Tuscany管理。
插图 3
运行时管理构件属性
SCA 1.0规定了构件的属性化,其意义在于构件被引用时,由引用方给定这些属性的值,从而实现动态配置的目的。
SCA1.0的构件由配置文件和osoa的标准annotation共同描述。
本例中,UserManager对UserDAO的引用,要求UserManger在setter方法上使用 @Reference。而userManager中的待配置属性必须附加osoa的标准annotation:@Property
Tuscany配置文件
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://application-1" name="application-1-composite">
<component name="UserManager">
<implementation.java class="com.sitechasia.UserManager"/>
<reference name=”ref1” target=”UserDao”/>
</component>
<component name=”UserDao”>
<implementation.java class=”com.sitechasia.UserDao”>
</component>
</composite>
实现邮件管理系统
我们通过实现以下类实现邮件递送功能,该系统是一个独自运行的系统,独自完成与邮件管理有关的各种功能。
插图 4
图中,MailManager包含一个MailGateway的实例,这个依赖关系由Tuscany管理。
Tuscany配置文件
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://application-2" name="application-2-composite">
<component name="MailManager">
<implementation.java class="com.sitechasia.MailManager"/>
<reference name=”ref1” target=”MailGateway”/>
</component>
<component name=”MailGateway”>
<implementation.java class=”com.sitechasia.MailGateway”>
</component>
</composite>
通过 Tuscany管理构件的实例
在 spring管理的 context中, bean的实例在却生条件下都是单例的,开发者也可以将某个 bean标注为多例。同样地, Tuscany也可以通过标准的 osoa的SCA api 1.0的annotation控制一个构件的实例。
Web应用加载 SCADomain以及构件描述文件
插图 5
图中,TuscanyServlet是一个标准的HttpServlet,Web应用必须在web.xml中描述这个 Servlet,容器将在启动时加在这个Servlet。TuscanyServlet包含了一个WebAppServletHost,它是一个ServletHost的具体实例。
每个binding.ws都对应一个AxisServletServlet,它们由Axis2ServletProvider在加载过程中创建,并保存在WebAppServletHost中。
TuscanyServlet被map到某个url/*上,从而来自其他系统的SOAP over HTTP就可以通过这个 url/*来获得 web service。
对于web应用自己来说,TuscanyServlet将一个SCADomain实例存储于ServletContext中,本地的jsp可以从ServletContext中获得这个SCADomain的实例。
插图 6
该图描述了TuscanyServlet与SCADomain以及具体应用中的StrutsAction的静态关系。
插图 7
上图描述了StrutsAction对象与SCADomain以及构件接口的动态关系。StrutsAction通过 SCADomain实例的getService方法获得构件的接口。
App1引用 App2的服务
将邮件管理服务化
现在,由于用户管理系统需要使用邮件系统中的某些功能,而这些功能正好是 MailManager可以提供的。所以,我们需要将构件MailManager服务化。Tuscany在这里提供了很好的支持,我们只需要在原有的 composite文件中增加服务华标注,然后为原来的 MailManager类增加一个接口,然后在这个接口上使用osoa标准annotation: @Remotable
下面是描述MailManager的composite文件。
<component name="MailManager">
<implementation.java class="com.sitechasia.MailManager"/>
<reference name=”ref1” target=”UserDao”/>
<service name="IMailManager">
<binding.ws/>
</service>
</component>
图4中, MailManager实现了一个 IMailManger接口,目前, Tuscany已经能够为这个接口自动生成wsdl。
用户管理系统引用邮件服务
在图 3中, UserManager引用了一个 MailService接口,该接口无需由邮件系统提供,只要该接口中的方法与wsdl中的相应的PortType相符即可。
<reference name=”mailservice”>
<interface.wsdl interface=”[namespace]#interface(portType)”/>
</reference> <component name="UserManager">
......
<reference name=”ref2” target=”mailservice”/>
......
</component>
但是目前 Tuscnay服务引用的一个缺陷在于引用方不能直接通过 URL,如 http://[hostname]:[port]/[servicename]?wsdl来引用服务提供者的接口定义,而只能将 wsdl文件存储至 classpath中。
事务(期待)
目前, Tuscnay仍然不能解决甚至是本地的事物问题,但是这无疑将是 Tuscany的发展过程中必须要解决的问题。
SCA1.0时使用 Policy框架来描述事物的,但是这种描述并不包含应如何实现事务,所以绝大多数工作都是由SCA Runtime提供者自行实现的。
安全性(期待)
在传统应用中已经有了一些成熟的安全性框架,如 WebX1.0采用的acegi框架。
SCA1.0时使用 Policy框架来描述安全性的,与事务问题相同, Tuscnay可能在今后的工作中逐个解决这些问题,但是目前并不支持这些特性。
分享到:
相关推荐
提供的“sca1.0规范(中文翻译版)”文件,是对原版SCA规范的中文解读,对于不熟悉英文文档的开发者来说,这是一个非常宝贵的资源。这个文件详细解释了SCA1.0中的概念、架构、组件模型、组装模型、部署模型以及相关...
当安装了SCA 1.0.1.5或更高版本的功能包后,WebSphere应用服务器的用户可以利用这一功能来连接和协调不同来源的服务。 总的来说,WebSphere V7的这些新特性极大地提升了应用程序的可维护性和可扩展性,开发者可以...
【SCA介绍及应用实例】 SCA,全称为Service Component Architecture,是面向服务架构(SOA)的一个关键框架,旨在简化服务的构建、...通过理解和应用SCA,开发人员可以构建出更加高效、可扩展和适应性强的业务系统。
2007年,SCA 1.0和SDO 2.1版本发布,并提交给了OASIS,最终成为正式的开放标准。 #### 三、SCA/SDO的作用与框架结构 ##### 3.1 SCA组件模型 SCA组件模型的核心是组件和服务的概念。一个组件可以提供服务,也可以...
综上所述,SOA SCA服务构件架构Spring构件实现方案是当前企业级应用开发中的一个重要方向。通过将Spring框架的强大功能与SCA服务构件架构相结合,可以构建出高度模块化、易于扩展和维护的企业级服务系统。对于开发...
该规范旨在定义一个通用的、开放式的框架,使不同厂商开发的应用程序能够在同一硬件平台上运行,并实现各种无线电信号处理功能之间的有效交互。 SCA 2.2.2版本规范发布于2006年5月15日,由JTRS Standards联合计划...
EOS6是Primeton Technologies公司开发的SOA应用平台,采用了先进的SOA架构和SCA1.0、SDO2.1标准规范。EOS6提供了一个完整的SOA解决方案,包括SOA架构、数据处理原理、开发和配置、部署和管理应用等多个方面。 本...
尽管这些产品提供了SOA实施的基础,但它们可能尚未完全符合最新的SCA 1.0和SDO 2.1规范。此外,这些产品仍处于发展初期,功能可能不够成熟,且实际应用的用户相对较少。 【总结】 SCA和SDO是SOA领域的关键规范,...
在2.2版之前,SCA标准经历了1.0、1.1、2.0、2.1等多个版本的迭代。每次版本更新都包含了对先前提出的变更提案(Change Proposals)的采纳和整合,以增强标准的适用性和功能性。例如,在1.1版中,就包含了97、99、110...
EOS是一款基于SOA架构的领先应用平台,遵循SCA1.0和SDO2.1标准,为开发者提供了一种理解和实践SOA核心理念的途径。 首先,我们来理解SOA(Service-Oriented Architecture,面向服务架构)。SOA是一种设计方法,它将...
- **服务层**:基于SCA1.0标准,用于服务的创建和组装。 - **流程层**:使用BPS进行流程管理和执行,确保事务安全和嵌入流程。 - **任务中心**:负责端到端流程的执行。 3. **EOS开发版的安装**: 文件中未详细...
这款产品由普元公司推出,遵循SOA(面向服务的架构)理念,支持SCA1.0和SDO2.1规范,旨在提供符合国际标准、易于扩展和集成的解决方案。 **1. EOS6产品概述** 1.1.1 软件业现状与发展趋势 随着中国经济的快速发展,...
- **EOS Studio (EOS集成开发环境)**:EOS Studio是一个集面向构件应用的设计、开发、组装、调试、维护、部署、管理和发布为一体的集成开发环境,提供SOA应用和服务全生命周期的支持。 - 设计与开发:支持面向构件...
在"Fortify19.1.0&解决方案手册1.0.zip"中,包含的两个主要文件分别是"Fortify-解决方案手册v1.0.pdf"和"Fortify SCA 19.1.0.zip"。前者是官方提供的解决方案手册,详细介绍了如何利用Fortify 19.1.0进行代码安全...
EOS是全球领先的SOA应用平台,采用了先进的SOA架构和SCA1.0、SDO2.1标准规范。EOS可以帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,并帮助企业系统架构者以更迅速、更可靠、更具...
Primeton EOS 是一种面向构件的 SOA 中间件,采用了先进的 SOA 架构和 SCA1.0、SDO2.1 标准规范。 如何开发 SOA 应用? 开发 SOA 应用需要了解 SOA 的核心思想和实现原理,然后使用面向构件的 SOA 中间件来构建和...
- EOS6基于SOA架构设计,支持SCA1.0和SDO2.1标准规范,能够实现面向构件的编程模式。 - **EOS6的特点:** - EOS6具备高度灵活性和可扩展性,能够帮助企业快速响应市场变化。 **1.2 EOS6组成** - **EOSServer:**...