在 VS 类库项目中 Add Service References 和 Add Web References 的区别
问题的引出:
1.在vs2005时代,Add Web Reference(添加Web服务引用)的功能主要是添加Web Service引用。基于.NET Framework 2.0。
2.自VS2008以后,为了对.NET Framework 3.0 或 3.5版本上WCF Service Library的支持。增加了Add Service Reference(添加服务引用)功能。但为了版本向前兼容而保留了Add Web Reference(添加Web服务引用)。
生成引用文件的区别(本段来自于网上评论,仅供参考):
用两种方式添加同一个WebService,生成 Reference.cs的区别:
1.主要添加引用都有一个获取服务元数据,反序列话本地类文件的过程。这个结构也基本类似。都包含wsdl\discovery等文件。
这个也和WCF Service支持Web Service的核心行业标准有关系。毕竟WCF的特性之一就是兼容Web Service的特性。
2.不同的地方时Add Web Reference 生成的 Reference.cs文件里,包含一个服务代理类,他负责与Web服务通信,它继承一个Soap类,使用SOAP协议,SOAP简单对象访问协议,基于XML语言。此外还包含一些Web服务类里定义的方法,和与之相关的异步调用方法和事件。遵守.NET Web Service 的主要规则。
3.Add Service Reference生成的客户端文件 Reference.cs。我看了一下,这个也会反序列化一个本地代理类,很相似和前者。不过除了服务类和其相关的一些别的类和契约接口。其中比较重要就是一个契约和一个通信管道。这个主要和WCF框架的编程模型和反序列话机制有关系。因为WCF 强调的是 契约的概念,还有就是绑定协议,这个就直接决定了客户端和服务端通信的通道类型。你在这个文件里也能看到。此外还有服务请求和相应对应的信息。遵循WCF服务框架的规则。
使用区别:
1.Add Web Reference:
构造实例 WebReference1.Service1 webs1 = new WebReference1.Service1()的构造方法不可重载。使用实例webs1时,可以通过webs1.Url来改变引用的地址。如:webs1.Url = "http://localhost:7280/Service1.asmx"。
2.Add Service Reference:
构造实例WebReference1.Service1 webs1 = new WebReference1.Service1()提供重载构造方法,默认构造方法引用的地址为<client>节点下<endpoint>中的配置地址,也可用ServiceReference1.Service1SoapClient webs2 = new ServiceReference1.Service1SoapClient("Service1Soap", "http://localhost:7280/Service1.asmx")来指定服务地址。不可以再用webs2.Url = "http://localhost:7280/Service1.asmx"来改变服务地址。
使用区表小结:
Add Service Reference只能在构造实例实例时指定服务地址,不可动态改变。这样可以再编译时检查出错误,以减少运行时错误。
在 VS 类库项目中 Add Service References 和 Add Web References 的区别相关推荐
- 在 Java Web 项目中,Service 层和 Dao 层真的有必要每个类都加上接口吗
作者 l 会点代码的大叔(CodeDaShu) 很多程序员在刚开始工作的时候,接触到的项目都是这样做的:项目的代码被分成 Controller.Service.Dao 层,一个接口对应一个实现类,然后 ...
- .NET Core类库项目中如何读取appsettings.json中的配置
这是一位朋友问我的问题,写篇随笔回答一下.有2种方法,一种叫丑陋的方法 -- IConfiguration ,一种叫优雅的方法 -- IOptions . 1)先看丑陋的方法 比如在 RedisCli ...
- java web中的service,servlet和Dao有什么区别
servlet一般用于生成网页:service在后端中,web,service,Dao三层中,用于service调用Dao层.DAO类都是进行数据操作的类,是对于数据库中的数据做增删改查等操作的代码. ...
- 订餐系统项目中OrderForm、OrderDTO、OrderMaster和ResultVO的区别
区别: OrderForm:前端传过来. OrderDTO:中间转换用,controller将OrderForm转为OrderDTO传给service,同时将service返回的结果转成ResultV ...
- 看板管理方法在软件项目中的意义,以及与Scrum方法的区别
一.什么是看板 看板是一种适用于实施敏捷和 DevOps 软件开发的系统框架,核心在于工作的全方位可视化以及基于工作的实时沟通.通过看板中各工作项的直观展示,可以让团队成员清晰了解各项工作的状态及进展 ...
- 类项目中的配置文件app.config在打包安装后的信息获取的问题
在一个项目中碰到这样的一个问题,做一个WORD插件,功能在类库项目中实现了,配置信息存在类库项目的配置文件app.config中,在进行打包后,获取的配置文件中的DocType节点信息时,使用以下方法 ...
- ASP.NET Core实现类库项目读取配置文件
前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...
- 彻底解决iOS项目中 _OBJC_CLASS_$_XXXService, referenced from: 的类似问题
这是大家熟悉的开发过程中可能遇到的问题 这是提交源码到appStore不支持64位设备的提示 本人在提交项目到appStore时发生的的错误,提示必须要支持64的设备,然后自己赶紧进行相关的适应,出现 ...
- 微光集市-JWT和Token在本项目中的应用(版本5.0)
本文承接上文-微光集市-登陆后用户对购物车的操作(版本4.0) 文章目录 JWT和Token在本项目中的应用 1 JWT(Json Web Token)和Token介绍 1.1 Token介绍 1.2 ...
最新文章
- 计算机硬盘有usb借口吗,为什么移动硬盘不建议插在台式机前置USB接口上
- ReentrantLock源码
- P5715 【深基3.例8】三位数排序(python3实现)
- SpringMVC日期处理(二)
- kettle数据库乱码问题
- [程序人生] [随笔感悟] -- 2018,我的博客年
- LSV(Loca Space Viewer)学习记录
- 深入浅出再谈Unity内存泄漏
- Android 双卡双待识别
- 央视家庭厨房节目 <天天饮食> 43道家常菜
- 解决Kali linux安装后无法使用键盘输入
- 消除小黑点html,word黑点怎么去掉,Word文档项目编号前有个小黑点
- 微信群打卡小程序_微信打卡小程序上线,你会用吗?
- 数据库第八周实验——第五章课后题
- 使用SSD mobilenet训练自己的数据集
- 太空射击第15课: 道具
- c语言数组求欧几里得距离,计算scipy-csr矩阵中的欧氏距离
- RNN-循环神经网络-吴恩达读书笔记
- java计算机毕业设计智能旅游电子票务系统演示录像2020源码+mysql数据库+系统+部署+lw文档
- 2022-2028全球与中国智能家居安全市场现状及未来发展趋势
热门文章
- Unknown column 'user_uid' in 'field list' sql错误解决过程
- 85. Maximal Rectangle
- [Leetcode][第216题][JAVA][数组之和3][回溯]
- android mysql sqlite_Android SQLite数据库基本操作方法
- c语言分量的运算符,C语言基础(04-运算符和表达式)
- java的string访问某个元素_CSS伪类与伪元素总是傻傻分不清,这份总结够面试用了
- Redis windows学习(一)——redis安装和基础使用
- java实现记事本查找_Java实现记事本
- 你每隔多久使用计算机上网查找资料英文,牛津英语8B Unit3导学案
- 大地形pawn抖动问题