利用SDO体系结构简化和统一数据.docx

上传人:小飞机 文档编号:5044249 上传时间:2023-05-31 格式:DOCX 页数:12 大小:234.59KB
返回 下载 相关 举报
利用SDO体系结构简化和统一数据.docx_第1页
第1页 / 共12页
利用SDO体系结构简化和统一数据.docx_第2页
第2页 / 共12页
利用SDO体系结构简化和统一数据.docx_第3页
第3页 / 共12页
利用SDO体系结构简化和统一数据.docx_第4页
第4页 / 共12页
利用SDO体系结构简化和统一数据.docx_第5页
第5页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《利用SDO体系结构简化和统一数据.docx》由会员分享,可在线阅读,更多相关《利用SDO体系结构简化和统一数据.docx(12页珍藏版)》请在三一办公上搜索。

1、利用SDO体系结构简化和统一数据简介:本文阐述了服务数据对象(SDO)体系结构的关键概念,以及它所提供的强大功能和灵活性。SDO体系结构在Java(TM) 2 Platform Enterprise Edition (J2EE)社区正获得越来越广泛的普及,它也用于构建面向服务的体系 结构(SOA)的环境。在IT解决方案日趋复杂和越来越多地采用分布式体系结 构的今天,它可以满足异构数据集成的需要。引言服务数据对象(SDO)通过 Java Specification Request (JSR) 235 得到了 Java社区的认可,它也是CommonJ的一部分,CommonJ是IBM和BEA共同 制

2、定的规范。如何访问不同数据源类型的数据在IT业界变得越来越重要,SDO 是一种应用程序编程接口(API),可以简化和统一对异构数据的访问。目前单一 数据类型的应用程序已经不再常见,信息通常都存储在不同类型的数据源中(比 如数据库、Web服务、轻量级目录访问协议(LDAP)、遗留应用程序等等)。这 种复杂性要求开发人员熟悉许多APK比如Java数据库连接(JDBC)、基于XML 的远程过程调用的JAVA API (JAX-RPC)、或者J2EE连接器体系结构(JCA)等 等)。SDO 简化和补充了 Java 2 Platform Enterprise Edition (J2EE)的开 发模式,提

3、供了一种独特的访问异构数据源的API,同时也可用于数据处理的其 他方面,本文将对此进行详细说明。SDO的目标SDO的目标有很多,从某种程度上讲SDO看起来好像是J2EE的一把多功能“瑞 士军刀”,因为它包含的特性可实现多种不同种类的功能,基本来讲,SDO及其 相关的技术设计有以下五大主要专题:简化数据访问:第一个目标是提供对多种企业信息系统(EIS)的统一的 数据访问,包括数据库、遗留应用程序(使用JCA)、XML或者是Web服 务数据源。通过使用SDO的一种独特而简单的模型,应用程序摆脱了使 用多种API和框架进行数据访问的复杂工作。数据提取:使用SDO后,数据的表示是独立于其数据源的,它采

4、用了一 种叫做Domain Store的J2EE模式,这种级别的数据提取有很多优点, 例如使数据操作变得更容易,实现了不同层之间的松耦合。数据操作:一旦检索到信息后,SDO会提供一种统一的编程语言进行数据 操作,简单的说,就是通过使用API及其接口,SDO客户机可以读取数 据和修改数据。SDO为此提供了连接和断开连接的两种模型,下文中将对 此做详尽的介绍。数据传输:SDO有一部分概念是关于传输对象(Transfer Object)和传 输对象组装程序(Transfer Object Assembler)模式的。数据封装到SDO 对象中后,它就可以在J2EE层间高效地传输。设计模式的采用:SDO

5、的一个关键目标是鼓励大家采用公用的J2EE模 式,这也是SDO体系结构以一些广为人知的模式为基础的原因,例如传 输对象(Transfer Object)、数据访问对象(Data Access Object)、传 输对象组装程序和Domain Store等。如果使用了 SDO,应用程序就可以 从这些经过了验证的设计策略中受益,从而可以推动分层技术和松耦合的 发展。图1显示了 SDO在一个J2EE分层体系结构中所处的位置:图1. J2EE分层体系结构中的SDOSDO体系结构:概览SDO体系结构提供了一组核心组件,这些组件可以由支持SDO的实现和框架进 行扩充。SDO规范定义了数据持有者(数据对象(

6、Data Object)和数据图(DataGraph),还引用了一种叫做数据中介服务(Data Mediator Service,DMS)的 组件。DMS负责访问数据源和处理数据图,如图2所示:图2. DMS的角色DataSaerce图3显示了 SDO体系结构和它的关键组件,如下所示:图3. SDO体系结构。DMSG DataGraph4- daraobjeczOut of 500specification数据对象数据对象是保存数据的组件,简单地说,它是由属性的键/值对组成的,每个值 都可以是原始的数据类型,或者是另一个数据对象。数据对象是可序列化的。设想一下您需要显示餐馆甜点的有关信息,其对

7、应的数据对象实例可以包含下列值:清单1.数据对象值示例 Description, Chocolate Cake对于熟悉JDBC概念和java.sql.ResultSet接口的读者来说,SDO的动态API 模式是很容易理解的。就像JDBC 一样,您可以通过名称或索引来访问它的属性 值。如果在程序运行之前,还无法获知准确的数据结构的话,使用动态API是特别 适合的。SDO API提供一些简单易用的方法来获取数据对象中的值:清单2.获取数据对象中的值/ returns the first element of the graphDataObject dessert = (DataObject) gr

8、aph.get(0);/ get the dessert name and its priceString dessertName = dessert.getString(Description);int dessertPrice = dessert.getInt(Price);如果在开发阶段数据结构就可以确定的话,SDO体系结构还提供了静态API功 能。例如,如果数据源是一个带有明确定义模式(xsd文件)的XML文件的话, 则SDO将支持Java代码生成和Java绑定。虽然这已经超出了 SDO规范的范 围,但是绑定技术可能会集成一些对SDO的支持,例如XML数据绑定的Java 体系结构(JA

9、XB)。数据对象图数据对象图是一个描述数据的分层结构,它包括一个数据对象树和另一个称作更 改摘要(Change Summary)的结构(请参阅图4)。更改摘要记录了数据图中所 有数据对象的历史更改信息。此外,由于数据图是由数据对象组成的,因此它是 可序列化的。图4.数据对象图Dale grapT兀数据 元数据是一个描述对象内容的元模型,它可以让数据图实例完成自省 (introspection)。如图5所示,每个对象都与一些基本的元数据信息相关联,对象以一个类型加 一个已排序的属性列表的形式表示。图5.对象元数据hG DataObgectQ Sequence+ dataobjer:0 Prope

10、rtyG Type+ property+ typeSDO体系结构还包括了一些规范中没有定义的附加组件。物理元数据前面一段描述了信息的逻辑元数据(例如当信息加载到SDO对象后的元数据), 而物理元数据(例如原始数据源格式的元数据)不在SDO规范讨论的范围内。 典型情况下,物理元数据并不会影响SDO客户机,但是它会影响到DMS,DMS是 负责访问数据源的组件。DMSDMS是一种组件,它负责提供某些方法来组装数据图,也负责将数据更改保存回 数据源。典型情况下,将会有多种不同的DMS类型,每种类型对应着一种特定 的数据源和技术(XML、JMS、JCA、JDBC等等)。DMS总是以同一种格式(数据 图)

11、返回信息,它隐藏了实际的数据存储信息,在SDO应用程序和EIS之间提 供了一层数据提取的功能。DMS不在SDO规范的范围内,但是它在实现中可能需要将多个数据源和数据类 型的数据集成在一起,这样,唯一的SDO数据图就会包含了异构数据源的信息。 请参见图6:图 6. DMS断开连接的数据体系结构SDO模型有一个有趣的特性,就是它允许使用断开连接的编程模型,事实上当 SDO客户机提出数据图请求并收到此数据图后,它就断开了和DMS的连接,这 样避免了 DMS对数据源的持续加锁,客户机就可以不受时间限制地处理数据对 象,对数据源的更改保存以一种乐观的并行方式进行。这种断开连接的模型特别 适合n层的以We

12、b为基础的体系结构,因为它考虑到了分层技术,同时也易于 使用,而且还可以进行高级并行访问。SDO的工作过程请求SDO图图7是一个简单请求的序列关系图。基本上,当一个SDO客户机需要检索数据 时,它使用DMS来请求数据图,DMS负责管理对数据源的访问,并根据接收到 的信息来创建一个图,通常这个图是一个分层的树结构,其中包含了几个数据对 象。此客户机使用断开连接的编程模型来处理数据图。如果数据被修改,而且客 户机希望能保存这些更改,它会将更改后的数据图发送给DMS,然后由DMS去 修改数据源。5D0 CfientSDO Client图7. SDO图dM5;DM5datsSourcetDataSou

13、rce1: / load DataGraohL2: / read*etiirn+1,3: / re&d 1.1: /: start transaction加return *2: / load DaLJGraDh1-4: V construct DataGraph1.5: H end transacboflTi3: h f&ad DacaGraph4: modfy DataGraph4.1: / save mzGrauhti stirttansJGtiQn4.1,2:jddateU*p4-L-2.1- /y enci t?nsactiafi序列化数据图数据图中的所有对象扩展了可序列化的Java接

14、口,这样,树的序列化是很简单 的,但是必须注意以下模式,如图8所示。图8.序列化数据图目前来讲,规范并没有明确说明该如何描述数据图。其中一个称为“model”的 元素支持 Essential Meta Object Facility (EMOF),而另一个称为 “xsd” 的元素可用来存放XML模式。SDO对这两者都支持,这两种元素的作用也都一样: 用于描述元数据。序列化完成后,数据图由三部分组成:模式、序列化的数据对象和更改摘要,如 图9所示。数据对象部分包括了树型结构和对象的值,而更改摘要则列出了序 列化完成前数据图的所有更改,原始树结构中未更改的数值则被省略了。数据图 框架模式仅在需要反

15、序列化的情况下才出现,如前所述,它可以是XSD或者是 EMOF模型。图9.序列化的数据图的三个组成部分 IIIIgraph schema ! Data objects! Change suTimaryEoiEo2 J03 X)i05 DQ6 borLoljDS . DOn - aSerialized SDQ dtita遍历数据图SDO有一个很重要的特点就是使数据操作变得更容易了,因此一旦构造好一个数 据图,很重要的一点就是需要使用SDOAPI来遍历树结构,并访问其中的元素。 规范的作者选择了使用XPath语言来完成这一工作XPath应用在SDO中时它 仅有一个特殊的地方:在访问数据时,它使用0

16、作为基本索引,而XPath规范 中第一个元素只能通过索引值1识别,这个特殊的规定是为了使SDOAPI更接 近Java API,因为编程人员习惯了在引用数组的第一个元素时,使用 array0 这样的语法来表示。我们来看一个简单的例子:餐馆的菜单,体会一下如何处理数据图中的数据对象。 它可以用以下的统一建模语言(UML)关系图来描述,如图10所示。要访问Menu对象,只需使用:DataObject menu = root.getDataObject(Menu);现在查看的是哪一类菜单呢?下面的表达式将会告诉您:String menuType = menu.getString(Name); /顺便提

17、一下,这是正餐。现在假定您想点主菜。您需要了解今天的菜单上都有些什么菜:DataObject mainDish = menu.getDataObject(coursetypeType=Main);如果您决定点丁字牛排(T-Bone),您可以根据它的索引直接从数据图中访问它:DataObject tBone = (DataObject) mainDish.get(0);要查看您是否带了足够的钱来付账,可以获取价格:int tBonePrice二 tBone.getInt(Price);您还饿吗?来点甜点如何?首先您可以调出树结构中甜点的清单,以便做出决 定:DataObject dessert

18、= menu.getDataObject(coursetypeType=Dessert); List dessertList = dessert.getList();接下来您可以访问刚才所获得的顺序集合中的元素。或者可能您已经决定了选择 美味的巧克力蛋糕。您可以使用以下表达式来直接访问它:DataObject cake = menu.getDataObject(coursetype.2/dishes.2);XPath的使用使访问数据对象图的元素变得简单而直观。SDOAPI中还有很多附 加的特性可用于创建或删除对象,或者是改变它们的值。SDO的应用前景到目前为止,SDO看起来不只是一个API,它

19、还是一个设计和编程模型,所以SDO 可以(或者将来有可能)在多个企业应用程序概念中使用。我们现在来看看其中 的一些例子。持久性机制 使用SDO的目的并不是替换现有的持久性机制,而是利用它们提供一个统一的 编程接口。典型地,编程人员将只专注于唯一的编程模型(SDO),而不用学习多 种API和框架。取而代之的是在幕后由支持SDO的工具和DMS来处理所有特 定而繁琐的数据源语义。这样,即使在不知道数据源的情况下,SDO客户机都可 以通过 DMS 与 JDBC、Java 数据对象(JDO)、Hibernate、Entity Enterprise JavaBean (EJB)、Web服务及任何其他数据源

20、进行交互。不同应用程序层间的交互SDO对象是独立于底层数据源的,它们将信息封装在简单原始的Java对象 (POJO)中,与一些特定技术(如EJB或Servlet)没有什么关系。因此,在J2EE体系结构中,SDO对象是跨级使用的最佳候选对象。它们可以首 先由集成层(integration layer)创建为值传递的Java对象,然后发送给业 务层。此外SDO对象可以在表示层和业务层间传递信息。用户界面数据绑定(JSR 227)最近人们越来越多地在致力于使用户界面组件(UI)和业务服务间实现自动绑 定,而不需要考虑所使用的具体技术。例如,怎样使JavaServer Faces (JSF)组 件以标

21、准的方式与EJB或Web服务实现交互?如何让Struts组件使用同一 标准? SDO提供了相应的对象和API来轻松地实现JSR227工作组确定的绑定 需求。工具和框架SDO采用的模型是规范化的和可自动描述的,因此它可用来使工具和框架以标准 方式自动访问数据和生成Java对象。SDO还具有自省功能和拥有动态数据 API,这样就可以轻松地与现有的和即将出现的工具相集成。如果能被广泛接受 的话,作为一个公用API,SDO将统一现有的数以千计的框架结构。SOASOA旨在推广一种可互换的、适应性强的和灵活的行业标准框架。这都要求提供 随需应变的业务,但是在IT基础设施中,SOA还仅仅只是一个概念或者说是

22、一 个蓝图。业界已经采用了 Web服务标准来实现SOA的应用程序。Web服务展示 了一种独立的自描述功能,这样其他应用程序可以通过开放的标准来寻找和访问 它。Java社区可以依靠一组API和相关技术来发布、发现和使用服务,这意味 着您可以使用定义明确的协议(如简单对象访问协议(SOAP)来和外部应用程 序交互。但是到目前为止,在应用程序内传递信息还没有标准的方式,当然,这也可以通 过自己开发Java对象或利用XML绑定如JAXB、Castor、XMLBeans或很多今 天的其他技术来实现,但是您真的希望被这些各式各样的技术和框架绑住手脚 吗? 在这种情况下,SDO可以提供帮助,它提供了一种独特

23、的模型来存放结构化的和 相互关联的复合对象,您的应用程序可以使用这些对象来保存信息。而且,对种 类繁多的数据源和业务SDO提供了一个统一的数据访问。它还可以在业务处理 和信息源间实现解耦合。从某种意义上讲,SDO框架可以简化和统一 SOA中的 数据应用程序开发,它提供了一种标准化的和与厂商无关的方法来处理异构问 题。IBM工具SDO不仅仅是一个规范,您可能已经发现了有一些工具利用了 SDO技术来访问 异构的EIS。WebSphere Application Server Version 6.0 (Application Server) 遵循 J2EE 1.4,它提供了一组编程模型扩展,来满足一

24、些特定的尚未被规范涵盖的企业需 求。为了推广 SOA, Application Server Version 6.0 支持 SDO,并提供了一 些DMS的实现。WebSphere Studio Application Developer Version 5.1.2 以及 IBM 的下一代 软件开发平台(Rational Application Developer Version 6)完全支持SDO。 IBM提供的SDO规范的参考实现已经包含在Eclipse Modeling Framework中, 因此只要导入正确的包(import org.eclipse.emf.*;),您就可以开发支持SD

25、O 的应用程序了。另外,如前所述,WebSphere (即IBM的开发平台)提供了几个 DMS的实现,您可以将它们集成到您的应用程序中 (com.ibm.websphere.sdo.mediator.*)。结束语SDO规范1.0版于2003年末提交给Java Community Process,并获得了批准, 但它仍在不断的发展中。和其他所有提交的规范一样,很难预料它最终是否会被 广泛地采用,不过,这个规范得到了主要的Java行业风险投资的支持,它也确 实着重于解决通用企业应用程序的一个重要问题:异构数据访问。SDO为业务数 据提供了一种中立的表示方法,建立了一种与数据源无关的模型,降低了耦合度。 基于以上原因,它可能会成为将来SOA应用程序的一个重要组件。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号