首先我们来看一下如何创建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. [ZJOI2006]物流运输 题解

    [ZJOI2006]物流运输 时间限制: 10 Sec  内存限制: 162 MB 题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个 ...

  2. Maven(二)Maven 的基本配置

    Maven 的基本配置 Maven 中仓库的概念 Maven 中的仓库是用拿过来存储所有项目的依赖关系的.当你创建一个 Maven 项目时,Maven 会通过依赖机制先到你本地仓库(自己维护的仓库)中 ...

  3. rabbitmq升级新版本后,需要新建用户。新版本默认禁止别的机器用guest用户访问。

    rabbitmq升级新版本后,需要新建用户.新版本默认禁止别的机器用guest用户访问.

  4. JVM的内存区域

    Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域, 包含程序计数器.虚拟机栈.本地方法栈.Java堆.方法区(运行时常量池).直接内存等,不同的版本会有所差异 各区 ...

  5. UVA816 Abbott的复仇 Abbott's Revenge

    以此纪念一道用四天时间完结的题 敲了好几次代码的出错点:(以下均为正确做法) memset初始化 真正的出发位置必须找出. 转换东西南北的数组要从0开始. bfs没有初始化第一个d 是否到达要在刚刚取 ...

  6. python函数闭包-装饰器-03

    可调用对象 callable()  # 可调用的(这个东西加括号可以执行特定的功能,类和函数) 可调用对象即  callable(对象)  返回为  True  的对象 x = 1 print(cal ...

  7. sqlserver2014创建数据库时,错误提示如下:尝试打开或创建物理‘c:\数据库\db.mdf’时,Create File遇到操作系统错误5(拒绝访问)

    CREATE DATABASE test1   ON  PRIMARY ( NAME =test1, FILENAME='C:\Program Files\test1.mdf',SIZE=10240K ...

  8. C#编程之IList、List和ArrayList

    额...今天看了半天Ilist<T>和List<T>的区别,然后惊奇的发现使用IList<T>还是List<T>对我的项目来说没有区别...  在C#中 ...

  9. Java简单公式计算器

    最近给公司开发业务代码时,碰到一个场景,简单描述是这样的: 客户要向咱们公司定制一件产品,这个产品呢,有很多属性,那公司得根据这些属性报价呀,怎么报价呢?公司针对某种类型的产品有一个基准价,在同类产品 ...

  10. Python基础总结之第三天开始重新认识‘字符串’(新手可相互督促)

    年薪20万的梦想,又进了一步... 戏好多 ’字符串‘开始啦~ 字符串的定义:字符串可以用英文单引号或双引号又或者三引号包围起来. 为毛有单引号,还要有双引号和三引号??? 看案例吧: 字符串的其他使 ...