Take a look at GW

【ASP.NET】创建第一个ASP.NET WebService程序

一. 准备条件

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

二. 创建WebService实例

新建一个空的.NET Framework网站

 添加WebService类

WebService1.asmx的名字可以改成其它你想要的,这个文件名也就是最后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接口,可以被远程调用。

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

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

 

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

 

 

然后可以通过访问地址

http://localhost:57932/CalculatorWebService.asmx

http://localhost:57932/CarService.asmx

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

三. 调用WebService数据

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

 

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

添加服务引用

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

 

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

 

 

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

//调用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);

输出结果

四. 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里去的能力。

posted @ 2021-10-12 09:46  HDWK  阅读(262)  评论(0编辑  收藏  举报