一步步创建webservice

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 )

相关文章

1.使用ajax调用varxhr;functioninvoke(){if(window.ActiveXO...
               好不容易把WebService服务器...
1新建一个工程项目用来做服务端增加一个MyService1类文件pac...
packagecom.transsion.util;importjava.io.BufferedReader;i...
再生产wsdl文件时重写描述文件1usingSystem;2usingSystem.Co...
一般情况下,使用eclipse自带的jax-ws生成webservice会自动生...