问题的引出:

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 的区别相关推荐

  1. 在 Java Web 项目中,Service 层和 Dao 层真的有必要每个类都加上接口吗

    作者 l 会点代码的大叔(CodeDaShu) 很多程序员在刚开始工作的时候,接触到的项目都是这样做的:项目的代码被分成 Controller.Service.Dao 层,一个接口对应一个实现类,然后 ...

  2. .NET Core类库项目中如何读取appsettings.json中的配置

    这是一位朋友问我的问题,写篇随笔回答一下.有2种方法,一种叫丑陋的方法 -- IConfiguration ,一种叫优雅的方法 -- IOptions . 1)先看丑陋的方法 比如在 RedisCli ...

  3. java web中的service,servlet和Dao有什么区别

    servlet一般用于生成网页:service在后端中,web,service,Dao三层中,用于service调用Dao层.DAO类都是进行数据操作的类,是对于数据库中的数据做增删改查等操作的代码. ...

  4. 订餐系统项目中OrderForm、OrderDTO、OrderMaster和ResultVO的区别

    区别: OrderForm:前端传过来. OrderDTO:中间转换用,controller将OrderForm转为OrderDTO传给service,同时将service返回的结果转成ResultV ...

  5. 看板管理方法在软件项目中的意义,以及与Scrum方法的区别

    一.什么是看板 看板是一种适用于实施敏捷和 DevOps 软件开发的系统框架,核心在于工作的全方位可视化以及基于工作的实时沟通.通过看板中各工作项的直观展示,可以让团队成员清晰了解各项工作的状态及进展 ...

  6. 类项目中的配置文件app.config在打包安装后的信息获取的问题

    在一个项目中碰到这样的一个问题,做一个WORD插件,功能在类库项目中实现了,配置信息存在类库项目的配置文件app.config中,在进行打包后,获取的配置文件中的DocType节点信息时,使用以下方法 ...

  7. ASP.NET Core实现类库项目读取配置文件

    前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...

  8. 彻底解决iOS项目中 _OBJC_CLASS_$_XXXService, referenced from: 的类似问题

    这是大家熟悉的开发过程中可能遇到的问题 这是提交源码到appStore不支持64位设备的提示 本人在提交项目到appStore时发生的的错误,提示必须要支持64的设备,然后自己赶紧进行相关的适应,出现 ...

  9. 微光集市-JWT和Token在本项目中的应用(版本5.0)

    本文承接上文-微光集市-登陆后用户对购物车的操作(版本4.0) 文章目录 JWT和Token在本项目中的应用 1 JWT(Json Web Token)和Token介绍 1.1 Token介绍 1.2 ...

最新文章

  1. 计算机硬盘有usb借口吗,为什么移动硬盘不建议插在台式机前置USB接口上
  2. ReentrantLock源码
  3. P5715 【深基3.例8】三位数排序(python3实现)
  4. SpringMVC日期处理(二)
  5. kettle数据库乱码问题
  6. [程序人生] [随笔感悟] -- 2018,我的博客年
  7. LSV(Loca Space Viewer)学习记录
  8. 深入浅出再谈Unity内存泄漏
  9. Android 双卡双待识别
  10. 央视家庭厨房节目 <天天饮食> 43道家常菜
  11. 解决Kali linux安装后无法使用键盘输入
  12. 消除小黑点html,word黑点怎么去掉,Word文档项目编号前有个小黑点
  13. 微信群打卡小程序_微信打卡小程序上线,你会用吗?
  14. 数据库第八周实验——第五章课后题
  15. 使用SSD mobilenet训练自己的数据集
  16. 太空射击第15课: 道具
  17. c语言数组求欧几里得距离,计算scipy-csr矩阵中的欧氏距离
  18. RNN-循环神经网络-吴恩达读书笔记
  19. java计算机毕业设计智能旅游电子票务系统演示录像2020源码+mysql数据库+系统+部署+lw文档
  20. 2022-2028全球与中国智能家居安全市场现状及未来发展趋势

热门文章

  1. Unknown column 'user_uid' in 'field list' sql错误解决过程
  2. 85. Maximal Rectangle
  3. [Leetcode][第216题][JAVA][数组之和3][回溯]
  4. android mysql sqlite_Android SQLite数据库基本操作方法
  5. c语言分量的运算符,C语言基础(04-运算符和表达式)
  6. java的string访问某个元素_CSS伪类与伪元素总是傻傻分不清,这份总结够面试用了
  7. Redis windows学习(一)——redis安装和基础使用
  8. java实现记事本查找_Java实现记事本
  9. 你每隔多久使用计算机上网查找资料英文,牛津英语8B Unit3导学案
  10. 大地形pawn抖动问题