Web Service
参考ASP.NET Web Services Tutorial系列课程
WebService
是开发互操作应用程序的标准方式,即应用程序能够调用另一应用程序的方法
创建Web Service
,选择Web服务,如下:
创建后,会发现WebService
类会有一个[WebService]
的特性,并且继承自System.Web.Services.WebService
。WebService
的命名空间(Namespace
)用来唯一标识你的web服务。WebService
的命名空间可以为任意的字符串,但一般是公司的域名,如下的这种形式:
[WebService(Namespace = "http://pragimtech.com/webservices")]
使用WebService
在一个web应用中调用另一个WebService
1.右键”引用”,选择”添加服务引用”
2.在地址中,填入WebService
的地址,如下:
可在命名空间中修改名字
3.使用
protected void btnAdd_Click(object sender, EventArgs e)
{
CalculatorService.CalculatorWebServicesSoapClient client = new CalculatorService.CalculatorWebServicesSoapClient();
int result = client.Add(Convert.ToInt32(txtFirstNumber.Text), Convert.ToInt32(txtSecondNumber.Text));
lblResult.Text = result.ToString();
}
一些问题
1.什么是WSDL,有什么用?
visual studio使用web服务的WSDL(Web Service Description Language)文件,来生成一个代理类。WSDL文档正式定义了一个Web服务。它包含:
1.Web服务公开的所有方法
2.参数及其类型
3.方法的返回类型
2.代理类的用途是什么?
client应用程序调用代理类的方法,然后代理类将参数序列化,准备一个SOAP请求消息并将其发送到Web服务。Web服务执行该方法,并向代理返回SOAP响应消息。然后代理类将反序列化SOAP响应消息,并将其交给客户端应用程序。不必将点.NET CLR对象序列化或反序列化为SOAP格式。代理类负责序列化和反序列化,使开发人员更加轻松。
还需要注意的一点是,如果webservice更新了,在client应用中也要更新webservice引用,如下:
WebMethod
一个WebService
也不是一定要继承自System.Web.Services.WebService
类,但如果WebService
想要使用ASP.NET的 session
或者 application state
对象,继承System.Web.Services.WebService
类会提供直接访问这些对象
如果想要使方法成为WebService
的一部分而公开,方法必须是public
的,且必须使用[WebMethod]
特性来修饰,如下的方法:
[WebMethod]
public int Add(int firstNumber, int secondNumber)
{
return firstNumber + secondNumber;
}
在WebService
中要使用session
对象,[WebMethod]
特性的EnableSession
的属性要设置为true
[WebMethod(EnableSession = true)]
public int Add(int firstNumber, int secondNumber)
{
......
}
使用session
还要注意,在一个client应用中调用另一个WebService
时,可能还需要在web.config
中将allowCookies
设置为true
<basicHttpBinding>
<binding allowCookies="true" name="CalculatorWebServicesSoap" />
</basicHttpBinding>
WebMethod
的其它属性: