(转)2.4.1 基础知识--添加服务引用与Web引用的区别
《Web服务开发学习实录》第2章构建ASP.NET Web服务,本章我们将学习创建Web服务的各种方法,并重点对使用Visual Studio创建ASP.NET Web服务和修改Web服务的属性进行介绍。本节为大家介绍基础知识--添加服务引用与Web引用的区别。
AD:
2.4.1 基础知识--添加服务引用与Web引用的区别
由于.NET Framework 4默认不再推荐Web服务,而是通过WCF来实现Web服务的功能。而.NET Framework 3.5两者都支持,因此在添加时存在一些差异。
在创建基于.NET Framework 4的项目或者网站时,右击项目或者网站名称,弹出的快捷菜单中只会出现【添加服务引用】命令,如图2-20所示。
选择该项将打开【添加服务引用】对话框,在这里的【地址】下拉列表框中可以输入WCF的地址,再单击【前往】按钮。如图2-21所示为添加一个WCF服务引用时的对话框效果。
![]() |
图2-20 快捷菜单 |
![]() |
图2-21 【添加服务引用】对话框 |
虽然,也可以通过Web服务的URL来添加服务引用。但是要注意,此方法不能保证Web服务的正常使用,因此不推荐使用。
不过,打开【添加Web引用】对话框并不复杂。在图2-21所示的对话框中单击【高级】按钮,然后从弹出的【服务引用设置】对话框中单击【添加Web引用】按钮即可,如图2-22所示。
![]() |
图2-22 【服务引用设置】对话框 |
下面我们来了解一下添加服务引用与添加Web引用的区别。
(1) 添加服务引用使用的是WCF服务,而添加Web引用使用的是Web服务。
(2) Visual Studio 2010在升级以后为了支持.NET Framework 3.0或3.5版本上的WCF Service Library,增加了添加服务引用功能。而对于Web服务从.NET Framework 1.0开始就支持。
(3) 同时存在添加服务引用与添加Web引用两者情况的项目类型是Web服务程序,包括Web Service项目。普通的控制台和窗体等类型是没有添加Web引用的。
(4) 使用添加Web引用后将由wsdl.exe生成客户端代理。而使用添加服务引用后生成客户端代理的命令是svcutil.exe。
(5) 添加Web引用生成的代理可以被.NET Framework 1.0或者.NET Framework 2.0的客户端调用。而添加服务引用生成的代理只能被.NET Framework 3.0以上的客户端调用,而且添加服务引用后不仅生成代理类,在web.config中还会生成相应的标记。
(6) 添加Web引用生成的Reference.cs文件里包含一个服务代理类,它负责与Web服务通信。它继承一个SOAP类,使用SOAP协议,基于XML语言。此外还包含一些Web服务类里定义的方法,和与之相关的异步调用方法和事件。遵守.NET Web Service的主要规则。
(7) 添加服务引用生成的客户端文件Reference.cs也会反序列化一个本地代理类,这点和前者相似。不过除了服务类和其相关的一些别的类和契约接口外,还有服务请求和相应的信息。遵循WCF服务框架的规则。
技术文档 WCF与Web服务的关系
严格地说,Web服务是行业标准,它有一套规范体系标准,而且在持续不断的更新完善中,也就是Web Service 规范,也称作WS-*规范,既不是框架,也不是技术。
微软的Web服务实现称为ASP.NET Web Service,它使用Soap来实现分布式环境里应用程序之间的数据交互,用WSDL来实现服务接口相关的描述。
WCF(Windows Communication Foundation)是一个分布式应用的开发框架,属于特定的技术,或者平台。既不是标准,也不是规范。WCF在一定程度上就是ASP.NET Web Service,因为它支持Web Service的行业标准和核心协议。因此ASP.NET Web Service能做的事情,WCF几乎都能胜任,跨平台和语言更不是问题。
但是WCF作为微软主推的一个通信平台,它的目标不仅仅是支持和集成Web Service,因为它还兼容和具备了微软早期很多分布式技术的特性。在本书的第13章将详细讨论WCF。
(转)2.4.1 基础知识--添加服务引用与Web引用的区别的更多相关文章
- 基础知识系列☞C#中→属性和字段的区别
"好吧...准备写个'基础知识系列',算是记录下吧,时时看看,更加加深记忆···" 其实本来准备叫"面试系列"... 字段.属性.你先知道的哪个概念? ***我 ...
- c# winform 访问WebServices 服务(通过WEB引用的方式进行访问)
第一步.Winform项目引用WEB服务 第二步.代码声明实例化 Web引用 YzServ.TestServ yzserv = new WebYzServ.TestServ(); yzserv.AAA ...
- 基础知识系列☞各版本下IIS请求处理过程区别
转载地址→http://www.cnblogs.com/fsjohnhuang/articles/2332074.html ASP.NET是一个非常强大的构建Web应用的平台, 它提供了极大的灵活性和 ...
- 网络基础知识之————A记录和CNAME记录的区别
1.什么是域名解析? 域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程.IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址.域名的解 ...
- Java基础知识强化18:抽象类、接口的区别 和 选择性实现接口方法
1.抽象类和接口的区别 抽象类里面可以有非抽象的方法(可以没有抽象方法),接口里只能有抽象方法. 抽象类中的抽象方法声明时不能有大括号,而接口中的所有方法都没有大括号. 抽象类(abstract c ...
- 以太网基础知识0(UDP和TCP有什么区别)
参考:http://zhidao.baidu.com/link?url=GSIg9_zFhWi6PHezalQveRwwUsU0as7k6MFd05r-cruLT1yDABARraHkuq8ohdIR ...
- Linux基础知识之bashrc和profile的用途和区别
使用终端ssh登录Linux操作系统的控制台后,会出现一个提示符号(例如:#或~),在这个提示符号之后可以输入命令,Linux根据输入的命令会做回应,这一连串的动作是由一个所谓的Shell来做处理. ...
- Java基础知识总结--final、finally、finalize的区别
谈谈final.finally.finalize的区别 1.final修饰符:如果一个类被声明为final,意味着这个类不能再被派生出新的子类,不能作为父类被别的类继承.因此,一个类不能即被声明为ab ...
- ConsoleApplication 添加对于 System.ServiceModel.Web 引用失败(出现黄色感叹号)的解决办法
今天在写一个WebHttpBinding的demo,再创建一个Console应用程序后,发现无法添加System.ServiceModel.Web,如图
随机推荐
- Asp.Net WebAPI Get提交、Post提交处理
1.启用跨域提交 <system.webServer> <httpProtocol> <customHeaders> <add name="Acce ...
- NHibernate之映射文件配置说明(转载2)
六.鉴别器 在"一棵对象继承树对应一个表"的策略中,<discriminator>元素是必需的, 它定义了表的鉴别器字段. 鉴别器字段包含标志值,用于告知持久化层应 ...
- SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题
一.SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 linux 设置系统语言 修改 /etc/sysconfig/i18n 文件,如 LANG="en_ ...
- iOS 9 地图定位崩溃 n: 'Invalid parameter not satisfying: !stayUp || CLClientIsBackgroundable(internal->fClient)'
报错详情: *** Assertion failure in -[CLLocationManager setAllowsBackgroundLocationUpdates:], /BuildRoot/ ...
- 数位dp整理
数位dp的思想就在于递归,记录当前的某一个唯一状态,依次递归下去,要注意唯一. 数位dp常设的状态有当前位置,上一数字,是否具有前导零,是否有限制. 1.CodeForces 55DBeautiful ...
- jquery实现复选框全选反选
实现原理: 给所有的复选框取相同的名字,当点击全选的时候把chenked属性全部设置为true;当点击全不选的时候把checked属性设置为false; 源代码如下: html代码: <form ...
- quartz spring
简单例子可参考 http://yangpanwww.iteye.com/blog/797563 http://liuzidong.iteye.com/blog/1118992 关于时间配置可参考另一篇 ...
- GoogLeNet学习心得
转自:http://blog.csdn.net/liumaolincycle/article/details/50471289#t0 综述: http://blog.csdn.net/sunbaigu ...
- 策略模式 - OK
策略模式(Strategy):它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户. 策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的 ...
- 【Xamarin 开发 IOS --IOS ViewController生命周期】
ViewController ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内 ...