利用SDO体系结构简化和统一数据(五)

日期: 2007-12-13 作者:Jean-Louis Marechaux 来源:TechTarget中国

  首先需要获取图的根元素,这是一切工作的起点:

  DataObject root = dataGraph.getRootObject();

  要访问 Menu 对象,只需使用:

  DataObject menu = root.getDataObject("Menu");

  现在查看的是哪一类菜单呢?下面的表达式将会告诉您:

  String menuType = menu.getString("Name"); //
 
  顺便提一下,这是正餐。

  现在假定您想点主菜。您需要了解今天的菜单上都有些什么菜:

  DataObject mainDish = menu.getDataObject("coursetype[Type=’Main’]");

  如果您决定点丁字牛排 (T-Bone),您可以根据它的索引直接从数据图中访问它:

  DataObject tBone = (DataObject) mainDish.get(0);

  要查看您是否带了足够的钱来付账,可以获取价格:

  int tBonePrice= tBone.getInt("Price");

  您还饿吗?来点甜点如何?首先您可以调出树结构中甜点的清单,以便做出决定:

  DataObject dessert = menu.getDataObject("coursetype[Type=’Dessert’]");
List dessertList = dessert.getList();

  接下来您可以访问刚才所获得的顺序集合中的元素。或者可能您已经决定了选择美味的巧克力蛋糕。您可以使用以下表达式来直接访问它:

  DataObject cake = menu.getDataObject(coursetype.2/dishes.2);

  XPath 的使用使访问数据对象图的元素变得简单而直观。SDO API 中还有很多附加的特性可用于创建或删除对象,或者是改变它们的值。

  SDO 的应用前景

  到目前为止,SDO 看起来不只是一个 API,它还是一个设计和编程模型,所以 SDO 可以(或者将来有可能)在多个企业应用程序概念中使用。我们现在来看看其中的一些例子。

  持久性机制

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

  不同应用程序层间的交互

  SDO 对象是独立于底层数据源的,它们将信息封装在简单原始的 Java 对象(POJO)中,与一些特定技术(如 EJB 或 Servlet)没有什么关系。

  因此,在 J2EE 体系结构中,SDO 对象是跨级使用的最佳候选对象。它们可以首先由集成层 (integration layer) 创建为值传递的 Java 对象,然后发送给业务层。此外 SDO 对象可以在表示层和业务层间传递信息。(请参阅参考资料获取更多的关于传输对象 (Transfer Object) 模式的信息。)

  用户界面数据绑定 (JSR 227)

  最近人们越来越多地在致力于使用户界面组件 (UI) 和业务服务间实现自动绑定,而不需要考虑所使用的具体技术。例如,怎样使 JavaServer Faces (JSF) 组件以标准的方式与 EJB 或 Web 服务实现交互?如何让 Struts 组件使用同一标准?SDO 提供了相应的对象和 API 来轻松地实现 JSR227 工作组确定的绑定需求(请参阅参考资料)。

  工具和框架

  SDO 采用的模型是规范化的和可自动描述的,因此它可用来使工具和框架以标准方式自动访问数据和生成 Java 对象。SDO 还具有自省功能和拥有动态数据 API,这样就可以轻松地与现有的和即将出现的工具相集成。如果能被广泛接受的话,作为一个公用 API,SDO 将统一现有的数以千计的框架结构。

  SOA

  SOA 旨在推广一种可互换的、适应性强的和灵活的行业标准框架。这都要求提供随需应变的业务,但是在 IT 基础设施中,SOA 还仅仅只是一个概念或者说是一个蓝图。业界已经采用了 Web 服务标准来实现 SOA 的应用程序。Web 服务展示了一种独立的自描述功能,这样其他应用程序可以通过开放的标准来寻找和访问它。Java 社区可以依靠一组 API 和相关技术来发布、发现和使用服务,这意味着您可以使用定义明确的协议(如简单对象访问协议 (SOAP))来和外部应用程序交互。

  但是到目前为止,在应用程序内传递信息还没有标准的方式,当然,这也可以通过自己开发 Java 对象或利用 XML 绑定如 JAXB、Castor、XMLBeans 或很多今天的其他技术来实现,但是您真的希望被这些各式各样的技术和框架绑住手脚吗?

  在这种情况下,SDO 可以提供帮助,它提供了一种独特的模型来存放结构化的和相互关联的复合对象,您的应用程序可以使用这些对象来保存信息。而且,对种类繁多的数据源和业务 SDO 提供了一个统一的数据访问。它还可以在业务处理和信息源间实现解耦合。从某种意义上讲, SDO 框架可以简化和统一 SOA 中的数据应用程序开发,它提供了一种标准化的和与厂商无关的方法来处理异构问题。

  IBM 工具

  SDO 不仅仅是一个规范,您可能已经发现了有一些工具利用了 SDO 技术来访问异构的 EIS。

  WebSphere® Application Server Version 6.0 (Application Server) 遵循 J2EE 1.4,它提供了一组编程模型扩展,来满足一些特定的尚未被规范涵盖的企业需求。为了推广 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.*;),您就可以开发支持 SDO 的应用程序了。另外,如前所述,WebSphere(即 IBM 的开发平台)提供了几个 DMS 的实现,您可以将它们集成到您的应用程序中 (com.ibm.websphere.sdo.mediator.*)。

  结束语

  SDO 规范 1.0 版于 2003 年末提交给 Java Community Process,并获得了批准,但它仍在不断的发展中。和其他所有提交的规范一样,很难预料它最终是否会被广泛地采用,不过,这个规范得到了主要的 Java 行业风险投资的支持,它也确实着重于解决通用企业应用程序的一个重要问题:异构数据访问。SDO 为业务数据提供了一种中立的表示方法,建立了一种与数据源无关的模型,降低了耦合度。基于以上原因,它可能会成为将来 SOA 应用程序的一个重要组件。

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • SAP收购CallidusCloud 与Salesforce竞争

    一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。