.NET中使用WebService,以及和一般处理程序、类库的区别

 

首先我们来看一下如何创建Web Service

首先在解决方案中新建项,选择ASP.NETWeb应用程序

然后选择一个空的项目就可以,单击确定

项目建完之后,在项目上右键-->添加-->新建项,选择 Web服务(ASMX),添加

如果想要添加新的函数,必须在函数上方打上WebMethod标签

接下来就是调用,首先在我们项目的引用中,右键-->添加服务引用  

单击发现

选择要添加的asmx文件,下面的命名空间也可以修改,然后点击确定,如果出现下面的弹框,添加失败的话,生成-->重新生成解决方案 然后在次添加就好了

添加完成之后,该项目中会出现一个ConnectedService,打开之后会出现引用的Service服务

然后在程序中就可以使用了,使用之前先添加命名空间,using  项目名称.刚才设置的命名空间,例如:

调用

//使用using释放资源
//实例化DateTimeServiceSoapClient对象,该对象的类型是WebService中的类型加上SoapClient
using (DateTimeServiceSoapClient client = new DateTimeServiceSoapClient()) {
    //打开
    client.Open();
    //调用方法,接收返回值
    DateTime dt = client.GetDateTimeNow();
    //显示
    Console.WriteLine(dt);
}

如果更新WebService中的函数的主体,重新生成之后,调用的话是不需要做出任何改变的

如果WebService中添加了新的函数,先重新生成解决方案,然后要右键服务引用-->更新服务引用即可

WebService的用法给我的第一感觉就是和类库并没有太大的区别,都是添加引用,调用方法。可是实际上内部的原理确是天差地别。

WebService使用的是soap协议进行通讯,本质上还是使用http请求进行通讯,通过http请求发送soap格式的xml文件,服务器会对xml文件进行解析,然后服务器端返回的也是soap格式的xml文件,然后客户端进行解析。

然后我们来看一下没有被解析过的HTTP POST协议返回的xml文件是什么样子的,右键asmx文件,单击在浏览器中进行查看

点开我们刚才写的这个方法

点击调用

这个就是HTTP POST请求返回的格式

而添加普通引用的话,实际上会在bin目录下将所引用程序的dll文件复制过来,如果项目不在同一个解决方案,被引用的项目有改动的话,还需要把dll文件再次复制一份放到bin目录下,是非常麻烦的。

WebService从执行的流程上来看,和ajax+一般处理程序差不多,都是请求然后处理请求。就我个人而言,WebService用于后端操作较为方便,因为操作都是封装好的,不需要自己创建HttpWebRequest对象发送请求,也不需要对返回的xml文件进行解码;而一般处理程序和ajax使用,用来处理前台发送来的数据更为方便。个人见解,如果大家有其他想法的话,可以多多发言

 

posted @ 2019-08-19 18:55  也难熬  阅读(1913)  评论(6编辑  收藏  举报