Web Service

Web Service

参考ASP.NET Web Services Tutorial系列课程

WebService是开发互操作应用程序的标准方式,即应用程序能够调用另一应用程序的方法

创建Web Service,选择Web服务,如下:

创建web服务

创建后,会发现WebService类会有一个[WebService]的特性,并且继承自System.Web.Services.WebServiceWebService的命名空间(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的其它属性:

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值