当前位置:首页>软件介绍>透视和调整你的企业和商务系统(Ⅳ:WebService、dotNET) 查询:
     
透视和调整你的企业和商务系统(Ⅳ:WebService、dotNET)
AMTeam.org

透视和调整你的企业和商务系统(Ⅳ:WebService、dotNET)

到上一篇为止,我们已经完成了在第一篇(Analyzing、Requirement)所说的三个过程中的第二步了,这一篇开始我们可以用dotNET的WebService方式来重新考虑以前的AuthorsWebService,技术上我倾向于MS的建议,那就是在实现和设计WebServices时将ASP.NET的WebService作为首选。所以这一篇我们将主要考察ASP.NET的WebService.

这要从第二篇的分析开始,原来当我用SOAPToolkit生成了WebService后,我就在Dereksvr机器上用VS.NET的AddWebReference...输入,VS.NET也是可以发现这个WebService,但是由于ADODB.Recordset的问题,它无法生成Proxy类,当时我以为SOAPToolkit生成的WSDL并不完全兼容很快放弃了继续向下实验了。几天之后我又做了另外一种尝试:我用SOAPToolkit重新生成了WebService的WSDL文件,这次我没有把返回ADODB.Recordset的函数放到里面,也就是全部都是在第二篇说的标志类型,然后我又在VS.NET中重复了上述的步骤,这一次OK了,VS.NET成功的生成了Proxy类,我生成了一个小例子测试,结果是成功的。那么结论是:对于第二类返回特殊类型的(也就是第二篇中用CTM的类型)我们要另外处理,对于第一种类型的我们只要用MSSOAPToolkit生成WSDL文件,然后在IIS中设置好,就可以成为一个WebService,在消费这种WebService上我们不用特殊处理。不仅VS.NET可以直接使用,其他支持WebService规范的也是可以使用的(只能说估计。Java?Delphi?抱歉我没有试过)下面是我测试成功的例子的拷图,感觉还不错,连中文也不用什么特殊处理。
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click

DimobjAshenrysvr.Authors
DimretStringAsString

DimSendStrAsString
SendStr=echoTxt.Text

obj=Newhenrysvr.Authors()
retString=obj.Echo(SendStr)
MessageBox.Show(retString)

EndSub

好了,剩下的又是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年。


电信企业IT系统的SOA实施策略选择IT系统 应认清项目变更的必然性
CIO经验:管理软件成功应用四条基本规范北京烟草电子结算系统升级
SaaS和云计算:软件业互联网化双驱动重庆XX房地产公司大OA办公系统之ERP项目工作周报(10.21—10.25
规避“过山车型”ERP系统有哪些妙计如何应对银行交易系统性能下降
地产行业管理软件的危险习惯《财富》:软件业巨头抢占下一制高点-网络服务
中石油邮件系统管理实践医药信息化:实现erp系统多少钱与GMP的完美结合
服装零售业erp系统多少钱与电子商务里应外合软件企业未来的SaaS将走入歧途?
刀片服务器在移动业务支撑系统的应用新医改催生六大信息系统
信息发布:广州名易软件有限公司 http://www.myidp.net
  • 名易软件销售服务
  • 名易软件销售服务
  • 名易软件技术服务

  • 透视和调整你的企业和商务系统(Ⅳ:WebService、dotNET)