UDA综述
2007-11-11 04:09:58 来源:WEB开发网核心提示: 在RDS2.0中有了新的内容,那就是开发人员可以直接写他们自己的服务器端的商业逻辑,UDA综述(2),同时能够使他们的客户端直接和远程OLE DB提供者相连而不需要通过商业对象层, 这样,目录服务,文档存储等等)2.能够通过URL直接和对象进行绑定 3.增强了和xml(标准化越来越近了)的集成能力,Web服务器
在RDS2.0中有了新的内容,那就是开发人员可以直接写他们自己的服务器端的商业逻辑,同时能够使他们的客户端直接和远程OLE DB提供者相连而不需要通过商业对象层。 这样,Web服务器管理员能够直接管理从RDS客户端到来的要求和OLE DB数据源联系的请求、并且能够通过定制的句柄(handler)进行商业逻辑检查,所谓商业逻辑检查包括数据有效性检查等等,它们能够通过RDS被加到应用程序上去。服务器管理员可以很容易的编写他们自己的定制的处理逻辑,为了帮助管理员使用这个定制的特征,一个简单的处理句柄(handler)已经被加到了所有基于SQL的OLE DB提供者上。句柄的行为是通过安装在服务器上的.ini文件进行控制的。
当RDS被用来以客户端应用程序和远程OLE DB提供者之间直接通讯的模式操作的时候,WEB服务器上的一个RDS DataFactroy对象用来处理客户端请求。DataFactory对象实现一个称为Query的方法来打开一个新的记录集,它也能够通过SubmitChanges方法改变记录集。
在RDS2.0中,DataFactory方法能够通过编写一个客户端对象的方法进行增强,它实现了一个特定的称为IDataFactoryHandler的接口,开发人员可以建立他们自己的定制的对象来实现IDataFactoryHandler接口。然后这些对象能够显式的被DataFactory方法调用来扩展缺省的功能。具体的示例代码如下:
AdorRs.ActiveConnection =
"Handler=MyHandler.obj;Provider=MS Remote;Remote Server=http://www.ttmis.com;DSN=TTMIS_CW;"
AdorRs.Source = "Select * from Products"
AdorRs.Open
在上面的代码段中,开发人员可以指定在服务器端的缺省句柄对象为MyHandler.obj。当这段代码被执行的时候,服务器缺省的调用DataFactory对象。但是,在DataFactory对象的方法Query打开一个记录集的时候,它通过调用接口IDataFactoryHandler来创建MyHandler.obj对象,在这个接口中,它调用GetRecordset或者是Reconnect方法,传递连接和命令字符串。在句柄的客户代码部分能够打开一个ADO连接或者是记录集并把它传递给对象DataFactory,这样用户就可以使用句柄内部的ADO事件来定制连接或者是记录集对象
当客户端代码使用RDS的时候,如果没有指定句柄的话,DataFactory执行客户查询,DataFactory使用ADO和OLE DB提供者进行交互。当客户端代码指定了句柄的时候,客户端请求仍然由DataFactory对象执行,然后DataFactory对象轮流使用指定的句柄来处理客户的请求。
一个RDS服务器的客户端句柄是一个COM自动化对象用来实现IDataFactoryHandler接口,它必须由在注册表中注册的ProgID,注册表的位置如下:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo\safehandlerlist
客户端代码在打开一个ADO记录集的时候,必须在连接字符串中包含标签'handler=
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo
当该注册项被插入后,所有不包括'handler=
为了保证数据通讯的安全性,MDAC2.0安装了一个缺省的定制的句柄对象-MSDFMAP.HANDLER。这个句柄的行为是由.ini文件驱动的,称为Msdfmap.ini。该文件被安装在Windows目录下,服务器管理员能够配置该.ini文件,用来定制MSDFMAP.HANDLER的行为。需要注意的是,管理员可以配置多个.ini文件,如果使用一个不同的.ini文件的话,在客户端的连接字符串必须为如下的形式:
RDSCONTROL.Handler = "MSDFMAP.Handler,myOtherNameSpace.ini"
或者也可以为:
Rs.open "SQL命令", "Provider=MS Remote;Remote Server=http://MyWebServerSite;
Handler=MSDFMAP.Handler,myOtherNameSpace.ini;Data Source=CustomerDatabase"
最后需要说明的是,用户可以根据自己的需要定制句柄,句柄包含有两个方法:
GetRecordset:该方法产生一个新的ADO记录集,该记录集必须用 adLockBatchOptimistic的加锁类型打开,连接和记录集对象必须把游标位置设置为 adUseClientBatch。
Reconnect:该函数用来产生一个新的ADO连接对象,并且把ADO记录对象attach到它上面去。连接对象的游标位置必须为adUseClientBatch。
MSDASDK新版本特点介绍
1 OLE DB和ADO可以被用来支持半结构化的数据,主要包括:
1.层次结构的数据存储(比如文件系统,邮件系统,目录服务,文档存储等等)
2.能够通过URL直接和对象进行绑定
3.增强了和xml(标准化越来越近了)的集成能力,主要包括:
1.把层次化的记录转换成xml(标准化越来越近了)格式形式保存
2.能够把记录集保存到一个流(stream)中而不仅仅是磁盘文件中
3.和ASP的Response和Request对象相集成,保存ADO记录集
2.增强了ADO错误报告能力
3. ADO MD用户能够提取通过模式对象而不需要初始化和遍历CubeDe
- ››UDA综述
更多精彩
赞助商链接