.NET平台内建了对Web service的支持,包括Web service的构建和使用。 与其它开发平台不同,使用.NET平台,你不需要其他的工具或者SDK就可以完成Web service的开发了。.NET Framework本身就全面支持Web service,包括服务器端的请求处理器和对客户端发送和接受SOAP消息的支持。本文将带你用.NET创建和使用Web service。
一 在.NET中创建Web service
要在.NET中创建Web service,你只需在你的解决方案中选择"文件/添加新项",弹出如下图1所示的对话框:
图1
在此框中,选择"Web服务",并指定名称。Vs.Net将为你建立一个缺省的webservice框架。根据需要,你可以建立所需的webservice方法。
如下代码是从sql server 2000的northwind数据库employees中返回所有employee信息的webservice方法。
[WebMethod]
public string getEmployees()
{
string cnstr="server=njim01;database=northwind;uid=sa;pwd=64084888;";
string rsString;
SqlConnection cn=new SqlConnection(cnstr);
SqlDataAdapter cmd=new SqlDataAdapter("select * from employees",cn);
DataSet ds=new DataSet();
DataTable tbl;
cmd.Fill(ds,"employees");
tbl=ds.Tables["employees"];
rsString="<table border=\"0\" bgcolor=\"blue\" cellpadding=\"1\"
cellspacing=\"1\"><tr bgcolor=\"white\">";
for(int i=0;i<=ds.Tables["employees"].Columns.Count-1;i++)
{
rsString+="<td>"+ds.Tables["employees"].Columns[i].ColumnName+"</td>";
}
rsString+="</tr>";
for(int i=0;i<tbl.Rows.Count;i++)
{
rsString+="<tr bgcolor=\"white\">";
for(int j=0;j<=ds.Tables["employees"].Columns.Count-1;j++)
{
rsString+="<td>"+tbl.Rows[i][j]+"</td>";
}
rsString+="</tr>";
}
rsString+="</table>";
return rsString;
}
由此可见,在vs.net中建立一个WebService是方便的。
二 WebService在客户端的应用
通过对vs.net长期应用和研究,我们总结出WebService在客户端应用的方法主要有以下四种可能:
1、 在同一个解决方案中调用WebService方法;
2、 在不同的解决方案中调用WebService方法;
3、 在Internet上调用WebService方法;
4、 利用webservice.htc调用WebService方法。
以下对上述四种方法分别进行介绍。
1、在同一个解决方案中调用WebService方法
首先,我们需要建立一个名为myTest.sln的解决方案。该方案由一个名为testForm.aspx的web表单和一个testService.asmx的WebService组成。testForm.aspx的代码如下:
SqlDataAdapter cmd=new SqlDataAdapter("select * from employees",cn);
DataSet ds=new DataSet();
DataTable tbl;
cmd.Fill(ds,"employees");
tbl=ds.Tables["employees"];
rsString="<table border=\"0\" bgcolor=\"blue\" cellpadding=\"1\"
cellspacing=\"1\"><tr bgcolor=\"white\">";
for(int i=0;i<=ds.Tables["employees"].Columns.Count-1;i++)
{
rsString+="<td>"+ds.Tables["employees"].Columns[i].ColumnName+"</td>";
}
rsString+="</tr>";
for(int i=0;i<tbl.Rows.Count;i++)
{
rsString+="<tr bgcolor=\"white\">";
for(int j=0;j<=ds.Tables["employees"].Columns.Count-1;j++)
{
rsString+="<td>"+tbl.Rows[i][j]+"</td>";
}
rsString+="</tr>";
}
rsString+="</table>";
return rsString;
}
从以上代码可以看出,在testForm表单中,我们仅提供了一个testWebService按钮,当我们单击testWebService时,使用一个名为msg的<span>来显示testWebService中方法的返回值。
在testWebService.asmx中,我们仅建立一个方法,该方法代码如下:
[WebMethod]
public string getEmployees()
{
string cnstr="server=njim01;database=northwind;uid=sa;pwd=6408;";
string rsString;
SqlConnection cn=new SqlConnection(cnstr);
SqlDataAdapter cmd=new SqlDataAdapter("select * from employees",cn);
DataSet ds=new DataSet();
DataTable tbl;
cmd.Fill(ds,"employees");
tbl=ds.Tables["employees"];
rsString="<table border=\"0