开店乐

开店乐电子商务研究 KaiDianLe.Com

网站地图 :

  搜索:

UDA技术综述

    

微软提供了UDA技术作为一个解决方案来解决从多个数据源中操作数据的问题。通过使用UDA技术,你可以通过一个公共的界面集合来到达不同的数据源,比如我们可以使用UDA来操作关系数据库(比如SQL SERVER,ORALCE)、文本文件、电子邮件、目录服务中的目录系统、OFFICE文档等等。【文章来自:开店乐电子商务研究KaiDianLe.Com

  UDA包括了一个软件组件的集合用来和应用程序以及本身进行交互。UDA是基于COM之上的,所以UDA技术是和位置无关、语言无关,并且各个版本都是健壮的。MDAC是UDA的关键的实现。MDAC包括了ADO、OLE DB、ODBC、DAO、RDS等组件。ADO可以看成是OLE DB的上层,ODBC只能支持关系数据库,可以认为是一种过时的技术,DAO主要是用来和ACCESS数据库进行沟通,RDS是用来在服务器和客户机之间通过ADO进行记录集的传送,在基于Web的应用中大有作为。

  如果大家经常从事在Windows下的数据库方面的开发工作的话,对ADO、OLE DB、DAO等一定已经不陌生,但是对RDS不一定非常熟悉,因为它主要是用在基于Internet的体系架构上的,所以有必要介绍一下RDS。

  当前最新的RDS的版本是2.0,如果你当前用的IIS是4.0版本的话,你的RDS的版本是1.5的,注意只有在安装了IIS以后,系统才会带有RDS组件。RDS的目的就是让ADO的消费者能够通过远程的OLE DB提供者来获取数据,ADO消费者实际上是通过HTTP或者DCOM协议和数据提供者进行联系的,客户端应用可以选择直接和远程机器上的OLE DB提供者进行交互,或者是通过和远程机器上的COM控件进行交互,发出查询,接收结果集合。

  当采用和OLE DB提供者直接交互这种模式的时候,客户端应用需要提供给数据提供者需要的所有信息,比如连接字符串和命令字符串。客户决定需要工作的特定的数据源和需要执行的特定的命令,服务器端把结果(一般是一个ADO Recordset结果集)返回给客户.

  当采用和COM组件(该组件使用ADO记录集)交互的模式的时候,客户端应用程序激活中间件暴露出来的方法,然后把ADO Recordset作为一个参数进行传递,这里表示层和用户界面层驻留在客户端,业务逻辑层就驻留在中间件(COM组件)上,数据和引用一致性检查就在数据源端进行。这是真正的基于多层的开发模式.

   在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=;'以便能够使用指定的句柄。如果使用RDS.Datacontrol来打开记录集的话,句柄属性必须设置为句柄的ProgID。服务器管理员可以强制RDS服务器使用句柄,当然需要在注册表的如下位置,插入HandlerRequired=1

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo

当该注册项被插入后,所有不包括'handler=;'的RDS请求都会被拒绝。同时必须指向一个有效的定制的句柄对象,这些对象在注册表的safehandlerlist处进行注册,具体位置和上面一样。

  为了保证数据通讯的安全性,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

【日期:2006-8-7】【作者:不祥】【转载自:开店乐】

相关文章:
 最好的网上开店系统:凡人网络购物系统免费下载
 SQL Server存储过程编写和优化措施
 SQL Server日志文件丢失的恢复方法
 SQL Server2000数据库系统表的应用
 品味SQL Server 2005的几个新功能
 SQL Server2000 索引结构及其使用
 SQL Server 中的几个函数要记录
 用SQL存储过程实现批量插入数据
 获取SQL Server服务器的当前连接数
 记存储过程中经常用到的本周\本月\本年函数
 数据库安全--应用IDS保卫数据库
 远程连接SQL Server服务器的解决方案
 SQL Server数据库定时自动备份
 升级到SQLServer2005的10大理由
 攻破SQL服务器的十种方法
 SQL Server安全规划全攻略
 SQL Server 服务器安装剖析
 大型数据库的SQL查询优化技巧
 优化SQL Server服务器内存配置的策略
 SQL服务器外网IP测试故障解决
 SQL SERVER 2000 SP4新特性概述
 Access与Sql Server之ASP代码比较
 通过作业定时同步服务器上的数据
 比较两个数据库的表结构差异
 不破坏原加密存储的存储解密
 优化--让你的SQL运行速度明显提高
 SQL Server数据库的备份与恢复
 数据库学习:查询区分大小写
 查询指定的表在那些数据库中存在
 Web环境下SQL中数据的磁带备份与恢复
 SQL Server里函数的两种用法
 SQL语法参考手册
 SQL数据库的六种数据移动方法
 Access转换成为SQL Server
 数据变换和转换注意事项(SQL)
 SQL语句性能调整原则
 SQL实现从数据库中随机抽N条记录
 怎样能限制SQL Server只能让指定的机器连接
 SQL存储过程入门与提高
 SQL Server端口更改后的数据库连接方式
 怎样设置SQL Server的用户及权限
 关于SQL语句查询分页数据的解决方案
 关于sql数据库维护失败的问题查找方法
 SQL Server与Excel数据互导
 减少动态SQL语句的预编译时间
 一个完整的SQL SERVER数据库全文索引的示例
 如何让你的SQL运行得更快
 MS-SQL server数据库开发精典技巧
 MSSQL按分页返回查询结果的存储过程
 MySQL 4.1.0 中文参考手册[连载]
 数据库访问技术
 SQL语言快速入门
 JDBC驱动程序的类型
 Microsoft的MSDN里面对ODBC的介绍
 JDBC1.2中几个最重要的接口和类
 SQL7.0储存过程调试
 UDA技术综述
 SQL Server的存储过程调用Com组件
 通过HTTP访问SQL Server 2000
 数据库应用程序需注意的问题
 SQL Server安全性简介
 用COM自动服务扩展SQL Server功能
 全面接触SQL语法
 SQL Server 2005数据库升级要点和技巧
 多条件数据库查询的优化方法
 如何解决SQL Server服务器耗尽内存的情况
 SQL Server的空值处理策略
 利用数据库日志恢复数据到时间点的操作
 得出SQL语句的执行时间的方法
 SQL Server2000数据库文件损坏时如何恢复
 在SQL Server 2000里设置和使用数据库复制
 修改系统密码后SQL服务器无法启动解决
 远程检测MS SQL Server账号安全性
 基于角色的方式管理SQL Server安全
 针对MS SQL SERVER的安全防御方案
 SQL Server补丁安装常见问题
 保护SQL Server:为安全性而安装
 SQL Server数据库安全规划全攻略
 SQL Server 2000 客户端实用程序小技巧
 SQL Server到Oracle连接服务器的实现
 把Access数据库移植到SQL
 避免Access和SQL Server的空值冲突
 用SQL Server保持会话状态
 两个SQL Server维护技巧
 Sql Server全文搜索中文出错的问题
 SQL Server备份的三个恢复模型
 利用BCP恢复SQL Server 2000数据库
 常用SQL字符串函数问题集锦
 SQL语句--如何替换字符串中的个别字符?
 MSSQL Ntext中的字段替换处理存储过程
 SQL中将一列数据分成三列来显示的方法
 SQL SERVER中替换text,ntext列中的字符串
 SQL存储过程来建立自动备份数据库
 Microsoft SQL Server 数据库维护计划
 两台Sql Server数据同步解决方案
 用SHA1或MD5 对用户身份验证的简单实现
 SQL Server开发的二十一条军规
 一个四用户信息同步更新的存储过程
 SQL Server中如何计算农历
 SQL Server安全设置清单列表
 SQL Server存储过程入门与提高

版权所有:Kaidianle.Com  联系方式:Shnxn@Yhaoo.Com.Cn 京ICP备06028743号 在线留言