【ASP.NET】创建第一个ASP.NET WebService程序 一. 准备条件 二. 创建WebService实例 三. 调用WebService数据 四. WebAPI和WebService的简单对比

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

1. 打开Visual Studio,并且准备创建一个.NET Framework的web网站。(ASP.NET Core不支持创建WebService)

二. 创建WebService实例

新建一个空的.NET Framework网站

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

 添加WebService类

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

WebService1.asmx的名字可以改成其它你想要的,这个文件名也就是最后webservice的网址名称。

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

 这里笔者取名为CalculartorWebService.asmx,并且内部代码为:

    /// <summary>
    /// Summary description for WebService1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class CalculatorWebService : System.Web.Services.WebService
    {

        [WebMethod(Description = "Return the value a plus b")]
        public int Add(int a, int b) {
            return a + b;
        }

        [WebMethod(Description = "Return the value a minus b")]
        public int Substract(int a, int b) {
            return a - b;
        }
    }

被[WebMethod]属性所标记的方法会被视为公共web接口,可以被远程调用。

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

然后 Build 程序,Build成功后,启动程序。便可以看到创建的WebService程序。

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

 可以看出,WebService罗列出了所有的Web方法 和 方法的描述。你也可以点进每一个方法的内部查看详细的信息和运行测试数据。

除此之外,你也可以添加多个WebService,然后启动程序。

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比 

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

 

然后可以通过访问地址

http://localhost:57932/CalculatorWebService.asmx

http://localhost:57932/CarService.asmx

来查看上面定义的WebService接口。

三. 调用WebService数据

在创建完成WebService后,需要进行部署WebService服务。

这里笔者启动了第二个Visual Studio实例,并且创建了一个控制台应用程序。笔者将会用这个程序来调用上面创建的WebService数据。

添加服务引用

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

NameSpace你可以随便命名为你想要的,后面调用这个服务都会用到这个命名空间。

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

 【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

 点击Finish后,等待程序完成WebService的引用。在引用完成后,你就可以调用这个web服务了。笔者除了引用了http://localhost:57932/CalculatorWebService.asmx, 还引用了http://localhost:57932/CarService.asmx。成功添加引用后,会在你的Connected Services目录下显示你所添加的引用。

 【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

然后你就可以通过如下的代码的进行调用,注意,把命名空间和类名更换为你自己的名称。

//调用CalculatorService下的CalculatorWebServiceSoapCleint类下的Add方法
CalculatorService.CalculatorWebServiceSoapClient calculatorService = new CalculatorService.CalculatorWebServiceSoapClient(CalculatorService.CalculatorWebServiceSoapClient.EndpointConfiguration.CalculatorWebServiceSoap);
Console.WriteLine(calculatorService.AddAsync(1, 2).GetAwaiter().GetResult());

//调用CarService下的CarServiceSoapClient类下的GetBrand方法
CarService.CarServiceSoapClient carService = new CarService.CarServiceSoapClient(CarService.CarServiceSoapClient.EndpointConfiguration.CarServiceSoap);
Console.WriteLine(carService.GetBrandAsync().GetAwaiter().GetResult().Body.GetBrandResult);

输出结果

【ASP.NET】创建第一个ASP.NET WebService程序
一. 准备条件
二. 创建WebService实例
三. 调用WebService数据
四. WebAPI和WebService的简单对比

四. WebAPI和WebService的简单对比

webapi用的是http协议,

webservice用的是soap协议webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作

soap 协议:它描述了一种在分散或分布式的环境中如何交换信息的轻量级协议。soap在http协议的基础上,一个基于XML的协议。

SOAP在HTTP协议的基础上,把编写成XML的REQUEST参数, 放在HTTP BODY上提交个WEB SERVICE服务器(SERVLET,ASP什么的) 处理完成后,结果也写成XML作为RESPONSE送回用户端, 为了使用户端和WEB SERVICE可以相互对应,可以使用WSDL作为这种通信方式的描述文件,利用WSDL工具可以自动生成WS和用户端的框架文件,SOAP具备把复杂对象序列化捆绑到XML里去的能力。