好了,剩下的又是ADODB.Recordset的问题,如果处理这个COM对象呢?之前我们已经用了一种方法,dotNET作为Client,这次我换一种方式,生成一个ASP.NET方式的WebService,然后引用bus_Authors组件,对那些返回记录集的函数在这个WebService中做一个封装。比如:
WebMethod()PublicFunctionVersion()AsString
DimobjAsbus_Authors.Authors
obj=Newbus_Authors.Authors()
Version=obj.Version
EndFunction
WebMethod()PublicFunctionGetAuthors()AsDataSet
DimobjAsbus_Authors.Authors
DimrstAsADODB.Recordset
DimmyDataAdapterAsOleDb.OleDbDataAdapter
DimretDatasetAsDataSet
obj=Newbus_Authors.Authors()
rst=NewADODB.Recordset()
myDataAdapter=NewOleDb.OleDbDataAdapter()
retDataset=NewDataSet()
rst=obj.GetAuthors()
myDataAdapter.Fill(retDataset,rst,"GetAuthors")
GetAuthors=retDataset
EndFunction
看的出来,就是简单的调用Biz组件,然后将ADODB.Recordset转换成DataSet。
有关引用Bus_Authors,你可以在目前的这部机器上安装我们在第一篇Export出来的Server或Proxy都可以,我为了方便,直接使用了Server包。剩下来的就十分简单了,需要生成一个测试程序,这个就简单了,参照CarlFranklin的录像就可以了。算是也自己练习一次haha。
(具体参见?id=10816)
下面是运行的代码和拷图:
PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
"Putusercodetoinitializethepagehere
DimrsAsDataSet
DimobjAsNewlocalhost.Authors()
rs=obj.GetAuthors()
DataGrid1.DataSource=rs
DataGrid1.DataBind()
EndSub
至于VB版本的客户端也是可以的,你可以在另外一部机器上用下面的代码进行测试:
DimRetXMLasObject
DimSoapClientAsMSSOAPLib.SoapClient
SetSoapClient=NewMSSOAPLib.SoapClient
CallSoapClient.mssoapinit("?WSDL")
SetRetXML=SoapClient.GetAuthors()
如果成功返回的应当是一个IXMLDOMNodeList里面包括整个的Dataset结构和23条数据,至于具体的显示这个结果集的VB程序就不再说了,以后也许会专门有文章论述如何将dotNET的DataSet转化成VB可以识别的问题,比如会有FillListView(lstvAsControl,objasObject)之类的函数将这个XML结构填充到VB6ListView或Grid控件中,这里我就不详细说了。具体的你还可以在其他机器上使用然后选取GetAuthors然后点击调用获得结果,也可以直接点:?你在IE窗口上可以明显的看到这个返回结果的XML文档(从中你可以看到DataSet最原始的构造haha)。
掌握不同返回类型分别处理的原则,无论是MSSOAPToolkit还是ASP.NETWebService都是可以被我们所用。看起来使用dotNET会简单和省力许多。我想随着dotNET技术的推进,越来越多的人会考虑用dotNET技术实现一些新的商务或企业应用系统,至少我会这样。也许这些例子是想说明从现在的WindowsDNA构架切换到新的dotNET体系结构下,是可行也是可以被你控制的。并不是像一些人以为的那样,认为只用VS.NET重新编译一遍原来的应用就OK,也不能像另外一些人以为的那样,认为dotNET根本是市场的策略,而且真正实施起来很麻烦很困难,还要等个3-5年。
信息发布:广州名易软件有限公司 http://www.myidp.net
|