日期:2008-10-31  浏览次数:20596 次

 

在应用程序和WEB服务之间来回传递包含公共属性和域的类,在处理结构化数据时这个功能很有用:
通过创建WEB服务代理类在应用程序内访问WEB服务,其实质是远程WEB服务类的属性和方法的本地代表
顺便写出使用流程:
1>首先建立一个WEB 服务项目,重新命名一个服务文件:myProductSerivce.asmx
2>在myProductSerivce.asmx写代码:
写你的WEB 服务方法:
如:
[WebMethod(CacheDuration=30,Description="这是一个返回DataSet的WEB服务!")]
public DataSet GetProducts()
{
string constr;
constr="server=MICROSOFT-LAB2;user id=sa; password=;  database=Northwind";
string sql;
sql="select top 10 productname,unitprice,discontinued from products";
SqlConnection mycon=new SqlConnection ();
mycon.ConnectionString =constr;
SqlDataAdapter myadp=new SqlDataAdapter (sql,mycon);
DataSet ds=new DataSet ();
myadp.Fill (ds);
mycon.Close ();
myadp.Dispose ();
return ds;
}
3>创建WEB服务之后,在命令行执行Wsdl.exe工具为服务产生代理类:
Wsdl /l:cs http://localhost/myProductService.asmx?WSDL
4>然后,执行下面的CS命令;编译代理类(通过上面的命令把此服务转化成了类文件)
csc /t: library /r:System.dll,System.Web.Services.dll,System.xml.dll,System.Data.dll
 myProductService.cs
5>在的ASP.NET项目中引用上面创建的DLL,并且添加对system.web.services的引用
这时就可以在代码中使用了,就象以前一样调用他的方法:
如:
myProductService mypro=new myProductService ();
DataGrid1.DataSource =mypro.GetProducts();
DataGrid1.DataBind();