中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > Asp > 组件
使用RDS技术
作者:Yestar2000 时间:2001-11-09 10:57 出处:互联网 责编:chinaitpower
              摘要:使用RDS技术

使用RDS技术
RDS(Remote Data Services),和ADC(Advanced Data Connector)提供一种通过HTTP来访问
商业对象和ADO的方法。RDS调用msadco.dll .
RDS的DataSpace一共有两个属性可供使用。
1。InternetTimeout属性
该属性提供了客户端等待服务端回应的时间长短。
如果时间到,那么客户端返回错误如下:
Request Timeout . (Error number -2147012894 ).
2。CreateObject
有两个参数:ProgID 和server name .
使用RDS的好处在于能够使用CreateObject方法指定一个Internet上的服务器名。
(例如:Http://www.MyServer.com ).
注意:
RDS 不仅仅局限与HTTP协议。它也能够使用在DCOM上,并且
可以进行Intranet和Internet(中间有防火墙)的通信。
RDS的CreateObject函数实际上是在客户端建立一个代理,在服务器端建立一个桩(stub)
代理是用来连接到服务器上的商业对象的。
而服务器上的桩(在IIS中的DataStub)从客户端代理中接受HTTP的请求
这个代理不同于COM使用的代理,COM使用的代理仅仅支持调用IDispatch的接口。
而其它对business object的调用必须要通过RDS.
所有使用RDS的CreateObject生成的对象都被绑定到IDispatch接口上.
它允许客户端调用服务器端的business objects而不用在本地机器上进行注册
而对于COM/DCOM就必须要求客户端注册同样的库。
注意:
在调用CreateObject函数时,RDS并不检查客户定义的ProgId和server name是否合理
这些信息仅仅是在客户调用对象的方法时才被检查。
如果客户定义了一个非法的server name,RDS会出现以下错误:
     Cannot Connect to Server ( -2147012867 ).
如果客户定义了一个非法的ProgId,RDS会出现以下错误:
Unable to create business object ( 4100 ).
如果客户非法调用了对象中的方法,RDS会出现以下错误:
     Unable to invoke method on business object ( 4101 ).
如何调用RDS呢?代码如下:
          Dim objRDS
          Dim objMyBusObj
          Set objRDS = CreateObject("RDS.DataSpace")
          Set objMyBusObj = objRDS.CreateObject("MyComponent.MyObject",
                           "Http://MyServer")
下面给出具体实现的例子来:
RDS在DHTML的运用:
在DHTML中使用RDS允许用户在不刷新页面的情况下访问数据库。
传统的方法,是用户在页面上编辑数据,然后数据被送到服务器端,然后
被保存到数据源中。(这个过程中将会使用到多个页面)
而在DHTML中使用RDS所有数据的装载,编辑,保存都是在一个页面中完成的。
下面的代码是写在HTML <SPAN>标志中的.
  Sub btnRun_OnClick()
    Dim objDataSpace
    Dim rsAuthors
    Dim objAuthor
    Dim strTable
    Dim objField       

    Set objDataSpace = CreateObject("RDS.DataSpace")
    Set objAuthor = objDataSpace.CreateObject("MyRDSServer.Author",
                                              "Http://www.MyServer.com")
    Set rsAuthors = objAuthor.Fetch()
    If rsAuthors.EOF And rsAuthors.BOF Then
      MsgBox "没有记录."
    Else
      strTable = "<CENTER>" & Chr(13) & "<TABLE BORDER=1>" & Chr(13)
      strTable = strTable & "<TR>" & Chr(13)
      For Each objField In rsAuthors.Fields
        strTable = strTable & "<TD><STRONG>" & rsAuthors.Name &
                   "</TD></STRONG>" & Chr(13)
      Next
      strTable = strTable & "</TR>" & Chr(13)
      strTable = strTable & "<TR><TD>" & Chr(13)
      strTable = strTable & rsAuthors.GetString(2, -1, "</TD><TD>",
                 "</TD></TR><TR><TD>", Chr(13))
      strTable = strTable & "</TD></TR>" & Chr(13)
      strTable = strTable & "</TABLE>" & Chr(13) & "</CENTER>" & Chr(13)
      spnResult.innerhtml = strTable
    End If
    Set rsAuthors = Nothing
    Set objAuthor = Nothing
    Set objDataSpace = Nothing
  End Sub

  <OBJECT ID="dspDataSpace"
          CLASSID="CLSID:BD96C556-65A3-11D0-983A-00C04FC29E36">
  </OBJECT>

RDS和ActiveX
下面的代码是从数据库中得到数据后并把它载入到一个列表ActiveX控件中.
  Private Sub cmdExecute_Click()
    Dim objAuthor As Object
    Dim objDataSpace As RDS.DataSpace
    Dim rsAuthors As Object
    Dim objField As ADOR.Field
    Dim ltmListItem As ListItem

    Dim intCount
    On Error GoTo Error_Handler

    Set objDataSpace = New RDS.DataSpace
    Set objAuthor = objDataSpace.CreateObject("MyRDSServer.Author",
                    "Http://www.MyServer.com")
    Set rsAuthors = objAuthor.Fetch()

    With rsAuthors
      If .Fields.Count > 0 Then
        For Each objField In .Fields
          lsvData.ColumnHeaders.Add , , objField.Name
        Next
        If .Fields.Count > 1 Then
          Do Until .EOF
            Set ltmListItem = lsvData.ListItems.Add(, , .Fields(1).Value)
            intCount = 1
            For intCount = 1 To .Fields.Count
              ltmListItem.SubItems(intCount) = .Fields(intCount).Value & ""
              intCount = intCount + 1
            Next
            .MoveNext
          Loop
        ElseIf .Fields.Count = 1 Then
          Do Until .EOF
            lsvData.ListItems.Add , , .Fields(1).Value
            .MoveNext
          Loop
        End If '.Fields.Count > 1
      End If '.Fields.Count > 0
    End With
  End Sub

配置RDS
1。IIS 4.0以上.
2。ADO 1.5以上.

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有