作者:ling091 时间:2008-12-17
SDO(Service Data Object) 服务数据对象是一个数据编程架构和一组API,它的目的是简化数据编程,使开发者能够致力于业务逻辑的处理。
SDO是通过以下途径来简化数据编程的:
统一各种数据源的数据编程,即它提供对各种异构数据源的统一调用方式
对通用编程模式提供支持
使应用、工具和架构能够更容易的查询、查看、绑定、更新数据等。
说得更简单一些,SDO可以看做是一个全新的数据结构(类),各种数据源的数据的数据可以映射为该结构的数据对象,然后通过该结构提供的统一接口来操作数据。
SDO的标准是由IBM和BEA公司共同制定的,Apache 的Tuscany开源组织则实现了该标准定义的SDO。Tuscany提供了SDO的Java、C++、PHP版本。Tuscany的SDO主要完成了以下功能:
l 提供对异构系统的数据源的统一调用方式
l 支持静态数据模型和动态编程模型。在不牺牲动态编程模型的前提下时间了一种简单的编程模型。
l 提供Meta-data的简便方法实现内省数据类型
l 支持连接断开下数据操作,客户端可以在链接断开的情况下对数据进行修改,并保存完成的修改记录,从而可以利用修改记录完成对数据源的更新。
SDO的核心概念是DataObject,它是数据对象的一个通用表示,与数据存储机制无关。
DataGraph是用来表示相关的DataObject的数据图,它有一个root DataObject,图中的其他所有对象都与这个根对象直接或间接相连。
DAS(Data Access Service)用于从一个数据存储器中加载一个DataGraph或将一个DataGraph保存到一个数据存储器中。如一个XML File DAS的功能是从XML文件加载一个DataGraph或将其保存到XML文件中,一个JDBC DAS则是从关系数据库中加载或保存DataGraph。
DAS一般使用非连接模式,客户端保持与数据源断开连接的状态,除非是从数据源读取DataGrapah或将DataGraph写回到数据源中。使用DAS的典型步骤如下:
1. 用户向DAS发送一个加载DataGraph的请求
2. 该DAS启动一个事务,向数据源获取数据创建DataGraph,然后结束事务。
3. DAS向用户返回一个DataGraph并结束用户请求
4. 应用程序对调用DataGraph的操作对DataGraph进行处理,如修改。
5. DAS启动事务根据对DataGraph所做的修改将数据写回到数据源中,并结束事务。
附件是SDO断开连接时的架构:
参考:
[1] CPP-SDO-Spec-v2.1.0-FINAL.pdf.http://tuscany.apache.org.
[2] 梁爱虎.SOA 思想、技术与系统集成应用详解.电子工业出版社 2007年12月.