开发者群体需要具有简单接口的现代的开发工具以快速访问数据.微软对此问题的回答是Universal Data Access(UDA通用数据访问)体系结构,对此,Stephen Rauch的文章 “Manage Data from Myriad Sources with the Universal Data Access Interfaces”中有详细的阐述(MSJ,1997年9月).简单的说,UDA是一种将OLE DB应用于实际的理论.所有的都被指向一个数据源—一个电子表格,一条电子邮件消息,或一份AS/400文档—由OLE DB接口过滤并以一种通用的格式表示,这样应用程序能总是以同样的方式对数据进行访问.位于OLE DB上的并处理来自应用程序的调用的中间层被称作Active Data Objects(ADO).它是编写针对带有OLE DB提供者的任何类型的数据源的推荐标准.
图 1 OLE DB
让我们仔细看看Visual Studio 6.0所带来的ADO 2.0的新特性.我将向你展示如何用Visual Studio 6.0套件来编写ADO.我将集中于Java语言的Windows Foundation Classes(WFC)的和Visual Basic的内置的ADO支持,对于Visual C++和InterDev将略微提一提.
ADO概述
ADO是一个对象模型,它结合了OLE DB易于使用的特性以及在诸如Remote Data Objects(RDO)和Data Access Objects(DAO)的模型中容易找到的通用特性.ADO是一个可以通过IDispatch和vtable函数访问的COM自动化服务器.最重要的是:ADO包含了所有可以被OLE DB标准接口描述的数据类型.换而言之,ADO对象模型具有可扩展性,它不需要你对自己的部件做任何工作.通过通常的ADO编程接口,你可以可视化地处理所有的事,即使那些记录集的信息的格式是你从来没有想到过会见到的.
UDA给Windows DNA(Distributed Internet Applications分布式互连网应用程序)体系结构以一个数据访问和存取的机制.为进一步了解UDA,你可以看 “Say UDA for All Your Data Acess Needs,”该文是由Aaron Skonnard写的(见Microsoft Interactive Developer,1998年4月).
当一个软件以异步的方式运行时,平台应该提供一种方式使得用户知道它什么时候结束.对于这问题有不同的实现方法,Platform SDK使用的是同步对象,Microsoft Internet Explorer Remote Scripting使用的是回调函数.ADO选择的是第三种方法,也许对RAD编程者来说是最合适的一种方法:事件.
你合并的嵌套次数越多或越复杂,消除多余信息对于你来说就越重要,分层目录结构指针允许你以基于树形的逻辑来组织你的记录集.该过程也叫做数据成形,并且它可以以两种方式来实现.你可以用类似于SQL的成形语言,或者你可以通过使用Visual Studio 6.0的相应的高级工具.我将在后面提供一个例子.现在我们来看看成形语言.
在Visual Studio 6.0中,Visual InterDev是个主要的Web开发工具.它有两个专门的特性: Data Environment对象(相同的东西在Visual Basic中也能被找到)和Recordset设计时控件.该思想是简单的,添加Data Environment对象到工程中,定义你的数据连接,查询和完成其它你所需要的任何工作.当你完成后,你将Recordset设计时控件插入到你的Active Server Pagers中,并从Data Environment集合--Recordsets, Commands, Connections中提取你所需要的数据对象(记录集,命令和连接).
去年当Internet Explorer 4.0发布时,很少有编程者真正领会到数据绑定特性的重要性.该特性看起来太棒了,但是它依赖于Internet Explorer 4.0并且缺乏适当的例子和应用程序.数据绑定是一项基于Web的技术,它能让你不离开当前页面去访问远程的数据源.换而言之,数据绑定是数据觉察控件的Web版.如果你使用它,你能让数据绑定HTML标签.举例来说吧,你可以将一个<TABLE>连接到一个特定的数据源并且可以让行和列在记录实际上进来的时候进行异步的添加.一旦你建立一个绑定,你(和你的用户)不再需要做其他的事情.
数据绑定是通过一个叫做Data Source Object(DSO)的模块来实现的,它实际上是一个ActiveX控件,它起到的大致作用是一个介于数据库和Web页面的代理.Microsoft为Internet Explorer 4.0提供了两个DS Tabular Data Control (TDC) 和 Advanced Data Control (ADC).TDC只能处理基于文本的数据,而ADC能连接到任意ODBC源.为有个初步的认识,你可以参考Rich Rollmann (MIND, July 1997)写的文章"Data Binding in Dynamic HTML".现在,ADC演变为RDS—它是Web端的UDA和ADO的一部分,它被认为是专门用于Internet的.
并不是所有的RDS都在客户端.当你通过VBScript或Jscript调用RDS ActiveX控件的方法时,你实际上最后调用的是RDS Data Factory Server (RDSServer.DataFactory对象),它是位于Web的服务器空间的.由于这个因素,数据绑定可以将你绑定到一个相容的浏览器上或一个激活了RDS的服务器上.
RDS Data Factory通过ADO接口以访问下面的数据源的方式来获取请求并完成它们.(见图18).它只是完成查询和更新的工作.