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

发布时间: 2007-05-21 09:44    作者: 未知    来源: 未知    浏览:    评论

小气的神 2001-10-15

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

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

        Dim obj As henrysvr.Authors
        Dim retString As String

        Dim SendStr As String
        SendStr = echoTxt.Text

        obj = New henrysvr.Authors()
        retString = obj.Echo(SendStr)
        MessageBox.Show(retString)

    End Sub





好了,剩下的又是ADODB.Recordset的问题,如果处理这个COM对象呢?之前我们已经用了一种方法,dotNET作为Client,这次我换一种方式,生成一个ASP.NET方式的WebService,然后引用bus_Authors组件,对那些返回记录集的函数在这个WebService中做一个封装。比如:
    <WebMethod()> Public Function Version() As String
        Dim obj As bus_Authors.Authors
        obj = New bus_Authors.Authors()
        Version = obj.Version
    End Function

    <WebMethod()> Public Function GetAuthors() As DataSet

        Dim obj As bus_Authors.Authors
        Dim rst As ADODB.Recordset

        Dim myDataAdapter As OleDb.OleDbDataAdapter
        Dim retDataset As DataSet

        obj = New bus_Authors.Authors()
        rst = New ADODB.Recordset()

        myDataAdapter = New OleDb.OleDbDataAdapter()
        retDataset = New DataSet()

        rst = obj.GetAuthors()
        myDataAdapter.Fill(retDataset, rst, "GetAuthors")
        GetAuthors = retDataset
    End Function
看的出来,就是简单的调用Biz组件,然后将ADODB.Recordset转换成DataSet。
有关引用Bus_Authors,你可以在目前的这部机器上安装我们在第一篇Export出来的Server或Proxy都可以,我为了方便,直接使用了Server包。剩下来的就十分简单了,需要生成一个测试程序,这个就简单了,参照Carl Franklin的录像就可以了。算是也自己练习一次haha。
(具体参见http://www.csdn.net/develop/read_article.asp?id=10816 )

下面是运行的代码和拷图:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        Dim rs As DataSet
        Dim obj As New localhost.Authors()

        rs = obj.GetAuthors()
        DataGrid1.DataSource = rs
        DataGrid1.DataBind()
    End Sub






    至于VB版本的客户端也是可以的,你可以在另外一部机器上用下面的代码进行测试:
    Dim RetXML as Object
Dim SoapClient As MSSOAPLib.SoapClient
    Set SoapClient = New MSSOAPLib.SoapClient

    Call SoapClient.mssoapinit("http://Dereksvr/Authors/Authors.asmx?WSDL")

Set RetXML = SoapClient.GetAuthors()
如果成功返回的应当是一个IXMLDOMNodeList 里面包括整个的Dataset结构和23条数据,至于具体的显示这个结果集的VB程序就不再说了,以后也许会专门有文章论述如何将dotNET的DataSet转化成VB可以识别的问题,比如会有FillListView( lstv As Control , obj as Object)之类的函数将这个XML结构填充到VB6 ListView或Grid控件中,这里我就不详细说了。具体的你还可以在其他机器上使用http://Dereksvr/Authors/Authors.asmx 然后选取GetAuthors然后点击调用获得结果,也可以直接点:http://Dereksvr/Authors/Authors.asmx/GetAuthors? 你在IE窗口上可以明显的看到这个返回结果的XML文档(从中你可以看到DataSet最原始的构造haha)。

掌握不同返回类型分别处理的原则,无论是MS SOAP Toolkit 还是ASP.NET WebService都是可以被我们所用。看起来使用dotNET会简单和省力许多。我想随着dotNET技术的推进,越来越多的人会考虑用dotNET技术实现一些新的商务或企业应用系统,至少我会这样。也许这些例子是想说明从现在的Windows DNA构架切换到新的dotNET体系结构下,是可行也是可以被你控制的。并不是像一些人以为的那样,认为只用VS.NET重新编译一遍原来的应用就OK,也不能像另外一些人以为的那样,认为dotNET根本是市场的策略,而且真正实施起来很麻烦很困难,还要等个3-5年。 
Smile Big Smile Surprise Stick out tongue Wink Sad Tongue Tied Indifferent Crying Embarrassed Cool Angry Angel Devil [8-|] [:#] [:-*] [:^)] [<:o)] [|-)] Yes Beer Left Hug Music Star Time Snail Pizza Automobile Umbrella Computer Storm [mo] [8o|] [^o)] [+o(] [*-)] [8-)] Coffee No Drinks [Z] Right Hug Cake Broken Heart Gift Wilted Flower Movie Dog Idea Sleep Email Travel Paradise
呢称:

加粗 斜体 下划线 链接 图片 代码 邮件地址 引用 列表

最多只能输入100个字符

Tags

SQL 数据库 asp.net C# XML 控件 .NET教程 程序 事件 数据 安全 代码 Server 客户端 验证 数据库专栏 接口 文件 Oracle DataSet 函数 DataGrid 问题 .net return C#语言 JavaScript 服务 IIS 对象 语句 windows 继承 时间 web.config 设计 开发 参数 变量 解决 字符 ADO.net 环境 VB.Net语言 web 异常 工具 服务器 计算 实例 OLEDB Application VB Word WebService insert asp net 安装 记录

精华推荐

更多

精品下载

更多