• [转贴]一步一步开始Web Service(还有一些极有用的资源网址)


    一看题目知道这是有关Web Service的,不过我不想再写什么理论的东东,只想通过一个例子实践一下,但愿你也一样,那么这篇文章对你会有帮助。

    整个例子包括了所有的Web Service 的过程,我计划这样做:

    1. 建立一个ASP+ Web服务

    2. 完成.asmx文件,然后再浏览器中测试。

    3. 创建一个这个Web Service 的客户。

    4. 客户得到这个Service

      我的遇到的问题是在第4步,客户端始终没有得到Web Service的位置,尽管它们都在同一机器上但彼此不认识。然后我用VS。NET 没有任何问题,所有的过程ZIP包中几乎都有,而且我还想试一下Net程序的分发,VS这方面也很不错。

    Zip包中的WebServiceAll.zip中有整个Project的文件和代码。

    不过最好安装了VS.NET beta 2 ,最少你要安装Framework SDK beta 2 。

    具体说:

    1. 在VS.NET 中建立一个ASP WEB Service的项目,然后在产生的 .asmx 的类中实现你的功能也就是Service,我写了两个简单的函数一个是HelloWorld 函数返回一个“HelloWorld”的字符串。另一个是一个Add操作返回两个数的和。好了后把它设置成默认页,F5。如果没有错误IE应当自动启动了。和普通的语法没有差别,唯一是在函数前面加一个WebMethod的标记

    VB:public Function Add( a as integer , b as integer ) as integer : Add= a+b ; end functi

    C#:[WebMethod] public void int Add( int a, int b ) { return a+b ; }

    VS。NET会帮你生成一个.asmx.vb 的文件放你的代码,如果是手工的话直接在.asmx中写就可以了。


    2. 你可以看到一个很格式的页面显示出你刚刚的两个函数(或说Service)甚至你可以执行它,比如看看输出的“HelloWord”和做一个3+2得到5的结果,这样Web Service建立成功了。


    3. 你需要建立一个Web Service的客户,让它得到你提供的这些服务获得”HelloWord”和相加的结果。所有你需要产生一个SDL文件,它和IDL相似,IDL编译会形成一个类型库,使VB的开发中可以前期绑定,然后VB,InterDev开发环境中可以显示智能化的帮助。

      有三种方式可以产生:手工自己写,使用dotnet工具,由.asmx文件生成。自动的生成的可以用于观看和测试不能保存下来,如果要保存你需要使用一个Framework SDK 的工具 disco.exe 它在C:\Program Files\Microsoft.NET\FrameworkSDK\Bin 目录中你可以先在IE中这样试 : http://localhost/WebService1/Service1.asmx?WSDL ,如果成功会有一个XML显示在IE中,这也是自动方式了。然后你在dos提示符下 disco http://localhost/WebService1/Service1.asmx?WSDL 意思是你想保留这个文件,执行成功后你可以看到这个 .wsdl的文件。

    4. 然后有些象Java也象VB,容易理解了,那就是你要生成一个代理类,然后在客户端调用这个类中的方法,也就是Services。 这时你需要用Framework SDK中的另一个工具 wsdl.exe 用它生成一个.cs .vb 或 .js的文件,编译这个文件生成一个DLL,就是所谓的代理类了。然后就可以在dotnet的网页,GUI窗体,web窗体或控制台程序中调用HelloWorld 和Add 函数就完成全部了。具体的语句:

    wsdl /out::myWebService1.cs http://localhost/WebService1/Service1.asmx

    成功后你可以看到这个CS文件生成。


    5. 然后编译这个类


    csc /out:myWebService1.dll /t:library /r:System.XML.dll /r:System.Web.Services.dll myWebService1.cs


    如果成功DLL也生成,现在就差写一个表现层也调用这个Service了。我手工方式就阻在这个表现层上,我想是我生成的.wsdl没有被用上,也就是找不到这个Services 。


    4,5我是手工做的,不想再建一个Project去编译myWebService1.cs了。Dotnet有个好处,组件只用编译后自动注册,不用象Com那样还要 regsvr32 一下,而且目前Com组件和dotnet组件是完全不同的,也就是说在VB的Reference 和Oleview中你会失望的,看不到这个dotnet组件。

    6. 然后就可以在你的应用中调用这个组件了,应用很简单,大体都是:


    dim obj as new Service1


    dim retStr as string


    dim retIntVal as string


    retStr = obj.HelloWorld()


    retIntVal = obj.Add( 300 , 500 )

      这样看来dotnet还是很有意思的,至少向你展现了一种不同的东西,我想用过Com或Com+的大侠们很容易想起这类似一种远程或Internet方式的Com,以前的com有致命的弱点,无法穿透防火墙,现在这种方式不仅灵活而且协议更加标准。底层的它封装和隐藏了SOAP和其它的网络协议,中间靠XML来传递数据和信息。你只用专心在Service功能上。

      想想新浪的新闻服务如果有这样的Web Service接口,大家的网站上只有简单几句就可以有新闻显示了。同样股票站点可以为你提供股票信息,旅游航空公司提供旅游和航班信息。太多了,而且时时更新,我想以后会有一个Web Service的接口或门户网站,它也会象Yahoo一样成为众所周知的入口。


    一些资源:

    Framework SDK beta 2

    http://download.microsoft.com/download/VisualStudioNET/Trial/2.0/W982KMeXP/EN-US/setup.exe

      Microsoft ASP.NET Premium Edition 如果装VS.NET beta 2 前忘记装IIS,那么装完IIS再装它可以不用重新安装整个VS.NET beta 2

    http://download.microsoft.com/download/VisualStudioNET/Trial/2/W982KMeXP/EN-US/setup.exe

    SOAP Toolkit 2.0 SP2

    http://download.microsoft.com/download/xml/soap/2.0/W98NT42KMe/EN-US/SoapToolkit20.exe

    Programming .NET with C#

    http://www.gotdotnet.com/featured_site/developmentor/assemblies2.pdf

    XML Spy 4.0b2

    http://www.xmlspy.com/download/beta/

    Visual XSLT for VS.NET beta2

    http://downloads.activestate.com/VisualXSLT/VisualXSLT-1.0.0-Beta3-1730.msi

    MSDN Show : 介绍VS.NET Beta 2

    http://a138.ms.a.microsoft.com/f/138/1611/2h/download.microsoft.com/download
    /VisualStudioNET/Utility/15/WIN98MeXP/EN-US/Episode015.exe

    不错的C#编辑器,也可开发并且支持 Framework SDK beta 2 , 新版本还有动态函数帮助

    http://www.c-point.com/download/csharped.zip

    SOAP Extensions with Visual Basic .NET

    http://msdn.microsoft.com/msdn-files/026/002/305/VBSoapEx.exe

  • 相关阅读:
    hdu 5007 水题 (2014西安网赛A题)
    hdu 1698 线段树(成段替换 区间求和)
    poj 3468 线段树 成段增减 区间求和
    hdu 2795 公告板 (单点最值)
    UVaLive 6833 Miscalculation (表达式计算)
    UVaLive 6832 Bit String Reordering (模拟)
    CodeForces 124C Prime Permutation (数论+贪心)
    SPOJ BALNUM (数位DP)
    CodeForces 628D Magic Numbers (数位DP)
    POJ 3252 Round Numbers (数位DP)
  • 原文地址:https://www.cnblogs.com/goody9807/p/225042.html
Copyright © 2020-2023  润新知