网站公告列表

  没有公告

加入收藏
设为首页
在线投稿

您现在的位置: IT知识网 >> IT知识 >> 网络编程 >> 其它 >> 文章正文

 

  [组图]透视和调整你的企业和商务系统(Ⅲ:SOAP、WebService、Server)           

透视和调整你的企业和商务系统(Ⅲ:SOAP、WebService、Server)
作者:佚名 文章来源:不详 点击数: 更新时间:2006-12-5 16:37:39

小气的神 2001-10-12

 

    好了,终于可以开始使用Microsoft SOAP Toolkit将上面的建立的Bus_Authors转换成一个WebService了,我使用的是Microsoft SOAP Toolkit 2.0 SP2,简单的Version()的我就跳过了,不再废话,MS的随机帮助有这方面的说明。因为我更感兴趣ADODB.Recordset的问题,不过失望的是,使用WSDL Generator产生的WSDL不能支持ADODB.Recordset的类型

 

WSDL类型转换

 

产生的WSDL文件中,产生这样的XML:

  <message name='Authors.GetAuthors'>

  </message>

  <message name='Authors.GetAuthorsResponse'>

    <part name='Result' type='xsd:???????'/>

  </message>

 

根据随机文档特别是Handling Complex Types一节中的描述,我们需要使用一个Custom Type Mapper(CTM)来处理ADODB.Recordset的格式。先讲一下下面需要做的步骤吧:

1.   生成一个自定义的类型转换类处理ADODB.Reocrdset类型

2.   修改由WSDL Generator产生的WSDL文件。

3.   设置IIS,配置好Authors的WebService

4.   产生客户端测试这个WebService

 

先来生成ADODB.Recordset 的CTM,主要是实现SOAP Toolkit库中的MSSOAPLib.ISoapTypeMapper接口,这一点上我认为是MS SOAP Toolkit 2.0 的一个重大提高,比起上一个SOAP Toolkit版本更组件化和易于使用,现在你用VB就可以完成这个CTM了,建立一个VB ActiveX DLL项目,拷入下面的代码,(我产生的组件叫AdoTypeMapper.AdoRstTypeMapper)如果另外安装了MS SOAP Toolkit 2.0里面好像有一个这样的ADODB.Recorset的例子。

Option Explicit

Implements MSSOAPLib.ISoapTypeMapper

 

Private Function ISoapTypeMapper_read( _

    ByVal pNode As MSXML2.IXMLDOMNode, _

    ByVal bstrEncoding As String, _

    ByVal encodingMode As MSSOAPLib.enEncodingStyle, _

    ByVal lFlags As Long) As Variant

 

    Dim RecordSet As New ADODB.RecordSet

    Dim domdoc As MSXML2.DOMDocument

   

    Set domdoc = CreateObject("Msxml2.DOMDocument")

   

    domdoc.loadXML (pNode.xml)

  

    RecordSet.Open domdoc

 

    Set ISoapTypeMapper_read = RecordSet

    Set domdoc = Nothing

   

End Function

 

Private Function ISoapTypeMapper_varType() As Long

    ISoapTypeMapper_varType = vbObject

   

End Function

 

Private Sub ISoapTypeMapper_write( _

    ByVal pSoapSerializer As MSSOAPLib.ISoapSerializer, _

    ByVal bstrEncoding As String, _

    ByVal encodingMode As MSSOAPLib.enEncodingStyle, _

    ByVal lFlags As Long, _

    pvar As Variant)

   

   

Dim xDOM As New MSXML2.DOMDocument

Dim RecordSet As ADODB.RecordSet

 

Set RecordSet = pvar

 

RecordSet.Save xDOM, adPersistXML

pSoapSerializer.writeXML (xDOM.xml)

 

End Sub

你需要引用Microsoft SOAP Type Library(SOAP Toolkit安装目录的\Binaries\MSSOAP1.dll)和Microsoft XML V3.0的引用,然后编译成DLL(比如:AdoRstTypeMapper.dll)。

 

然后开始配置Server端的WebService。

1.   注册这个DLL . Regsvr32 AdoRstTypeMapper.dll

2.   获得这个组件的PROGID和CLSID,你可以使用OLE/COM Object Viewer工具

PROGID: AdoTypeMapper.AdoRstTypeMapper

CLSID: {0C839C51-81E1-4DBC-AC69-3794E337B5F3}

3.   在C:\Inetpub\wwwroot\Authors目录(上一篇中特别提及的那个目录)Copy由WSDL Generator产生的WSDL和WSML文件到这个目录。

4.   修改Authros.WSDL和Authors.WSML内容。

先改Authros.WSML :

<?xml version='1.0' encoding='UTF-8' ?>

 <!-- Generated 10/12/01 by Microsoft SOAP Toolkit WSDL File Generator, Version 1.02.813.0 -->

<servicemapping name='AuthorsDoc'>

  <service name='AuthorsDoc'>

    <using PROGID='bus_Authors.Authors' cachable='0' ID='AuthorsObject' />

<using PROGID='AdoTypeMapper.AdoRstTypeMapper'

       cachable='0'

       ID='AdoRstMap' />

<types>

   <type name='ADOSoapMap'

         targetNamespace='http://tempuri.org/type'

[1] [2] 下一页

文章录入:bolang    责任编辑:bolang 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最 新 热 门
    相 关 文 章
    监测和调试 OSPF协议
    实例讲解路由器的一般配
    透视和调整你的企业和商
    透视和调整你的企业和商
    故障快速排除 福禄克超级
    透视木马程序开发技术(
    透视木马程序开发技术(
    透视木马程序开发技术(
    透视Win95的密码档
    透视木马程序开发技术
     
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    Copyright© ITZS.NET All Rights Reserved
    QQ:272895858   ICP备案编号:吉ICP备07000044号
    IT知识网 站长:博浪