首先我们来看一下如何创建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使用,用来处理前台发送来的数据更为方便。个人见解,如果大家有其他想法的话,可以多多发言

.NET中使用WebService,以及和一般处理程序、类库的区别的更多相关文章

  1. 在Android中调用WebService

    某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查.我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数 ...

  2. 如何开发Domino中的WebService

    在domino中写webservice可以使用LotusScript,也可以使用java,由于LotusScript API提供的功能多数都是操作domino数据库中文档的,在web service中 ...

  3. 用JAX-WS在Tomcat中公布WebService

    JDK中已经内置了Webservice公布,只是要用Tomcat等Webserver公布WebService,还须要用第三方Webservice框架. Axis2和CXF是眼下最流行的Webservi ...

  4. 在VS中实现webService的一个demo(图解)

    在VS中实现webService的一个demo(图解) 先创建一个web项目,创建好web项目后,添加新建项——web服务 在新建好的web服务文件中写如下代码: 生成当前解决方案. 新建一个winf ...

  5. 你真的了解JAVA中与Webservice相关的规范和实现吗?

    非常多人在项目中使用Webservice,仅仅是知道怎样公布Webservice,怎样调用Webservice,但真要论其来龙去脉,还真不一定清楚. 一切一切还要从我们伟大的sun公司规范说起. JA ...

  6. 存储过程中调用webservice

    存储过程中调用webservice其实是在数据库中利用系统函数调用OLE. 1.查找webservice api 可得到MSSOAP.SoapClient. 2.查找API 接口可得到mssoapin ...

  7. Android使用ksoap2调用C#中的webservice实现图像上传

    目录: 一. android使用ksoap2调用webservice 二. 异步调用 三. Android使用ksoap2调用C#中的webservice实现图像上传参考方法 四. 图像传输中Base ...

  8. 用JAX-WS在Tomcat中发布WebService

    JDK中已经内置了Webservice发布,不过要用Tomcat等Web服务器发布WebService,还需要用第三方Webservice框架.Axis2和CXF是目前最流行的Webservice框架 ...

  9. C++程序中调用WebService的实现

    前言 因为最近的项目中需要运用到在MFC程序中调用WebService里面集成好了的函数,所以特意花了一天的时间来研究WebService的构建以及如何在MFC的程序中添加Web引用,进而来实现在C+ ...

  10. java web项目(spring项目)中集成webservice ,实现对外开放接口

    什么是WebService?webService小示例 点此了解 下面进入正题: Javaweb项目(spring项目)中集成webservice ,实现对外开放接口步骤: 准备: 采用与spring ...

随机推荐

  1. NOIP2011聪明的质监员题解

    631. [NOIP2011] 聪明的质监员 ★★   输入文件:qc.in   输出文件:qc.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 小 T 是一名质量监督 ...

  2. Neo4j电影关系图Cypher

    , tagline:'Welcome to the Real World'}) }) }) }) }) }) }) }) CREATE (Keanu)-[:ACTED_IN {roles:['Neo' ...

  3. something good

    CF292A CF304B CF383A CF409D CF409F CF632A CF652B CF656A CF656B CF656D CF659A CF678A CF697A CF735D CF ...

  4. xpath路径的写法

    关于xpath路径的写法 1.选取节点 表达式 描述 nodename 选取此节点的所有子节点. / 从根节点选取. // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置. . 选取当前节点 ...

  5. 2019杭电多校第一场hdu6581 Vacation

    Vacation 题目传送门 update(O(n)) 看了那个O(n)的方法,感觉自己想的那个O(nlogn)的好傻,awsl. 0车最终通过停车线的时候,状态一定是某个车堵住后面的所有车(这个车也 ...

  6. 科密指纹考勤机B329采集

    昨天项目用到了科密指纹考勤机B329. 暂记录下碰到的问题,及其解决办法,以备查询. 1.下载科密的二次开发包SDK“10079” .地址:( http://pan.baidu.com/s/1i39m ...

  7. random,time,sys,os

    import random print(random.random()) #(0,1)大于0且小于1之间的小数 print(random.randint(1,3)) #大于等于1且小于等于3之间的整数 ...

  8. python基础之list列表的增删改查以及循环、嵌套

    Python的列表在JS中又叫做数组,是基础数据类型之一,以[]括起来,以逗号隔开,可以存放各种数据类型.嵌套的列表.对象.列表是有序的,即有索引值,可切片,方便取值.列表的操作和对字符串的操作是一样 ...

  9. 你真的熟练使用webpack吗?

    https://www.webpackjs.com/ 官网地址 当自己在简历中写着熟练使用webpack的时候,殊不知自己只是在vue脚手架,react脚手架的路上走着比较轻松而已. 当面试官问你这几 ...

  10. DataGridView 的使用总结

    一.属性应用 1.设置单元格鼠标点击后就进入编辑状态 设置DataGridView控件的EditMode这个属性,即 EditMode = System.Windows.Forms.DataGridV ...