在 VS 类库项目中 Add Service References 和 Add Web References 的区别

原文:在 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只能在构造实例实例时指定服务地址,不可动态改变。这样可以再编译时检查出错误,以减少运行时错误。

时间: 2024-09-09 07:51:58

在 VS 类库项目中 Add Service References 和 Add Web References 的区别的相关文章

webservice项目中使用service层时tomcat报错

问题描述 webservice项目中使用service层时tomcat报错

android如何在当前项目里启动另一个项目中的Service?

问题描述 android如何在当前项目里启动另一个项目中的Service? 当前Activity属于进程1,另一个Service属于进程2 在当前Activity中如何用Intent能启动另一个进程里的Service? 解决方案 android中将一个项目作为library导入另一个项目中android中将一个项目作为library导入另一个项目中android中将一个项目作为library导入另一个项目中 解决方案二: 是两个apk是吧? 用广播可以启动 解决方案三: Intent inten

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

前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现,正常来讲我们在应用程序目录下有个appsettings.json文件对于相关配置都会放在这个json文件中,但是要是我建立一个类库项目,对于一些配置比如密钥或者其他需要硬编码的数据放在JSON文件中,在.net core之前配置文件为web.config并且有相关的类来读取节点上的数据,现如今在.n

大数据-spark能在WEB项目中使用吗?

问题描述 spark能在WEB项目中使用吗? ssh的web项目中想使用spark大数据分析,导入spark的jar包 在初始化sparkconf时报求助啊.............大神在哪里 解决方案 用法有问题,根本不是包的问题.spark更像是操作系统,你的调用是在其上的,而不是平行调用以为加个包就可以了

web-Web项目中的HOST头攻击

问题描述 Web项目中的HOST头攻击 在Web项目中针对URL中存在的HOST头攻击漏洞都有哪些解决方案啊 解决方案 关于Host头攻击web项目的目录结构

java-如何在j2EE项目中采用Data Service 来管理数据 :支持数据的统一管理

问题描述 如何在j2EE项目中采用Data Service 来管理数据 :支持数据的统一管理 java项目中如何使用Dada Service 来管理项目: 要达到的目的:1,可以从多个数据源中加载数据,提供提供访问数据的统一接口 2,可以支持丰富的查询方式 ,实现内部的转换通过sqlParser 来对支持多种sql就如同 Apache 的calcite 项目中貌似可以找到蛛丝马迹,但是有好多的技术不是很了解 如:linq4jsparksplunkcsv ...等,有没有关于dataservice

Visual Studio类库项目在*.cs文件中使用Form1中的控件值(C#)

问题描述 在VisualStudio中创建类库项目(C#),添加一个窗体(Form1),如何在*.cs文件中使用Form1textbox中输入的数值?如图: 解决方案 解决方案二:你这个Form1里面放的两个控件,都是ComboBox......要Form1textbox的值,可以先拖个textbox控件到窗体,然后CS文件中stringstr=this.textbox.Text;取值解决方案三:谢谢,如果要是将控件里面写的内容在word中显示代码该添加什么呢?

Web项目中引用单独的实体EF框架类库

问题描述 1.我单独创建一个Model类库项目,存放实体,用了EF.生成了*.Model.dll:2.在另一个WebAPI项目中,我引用了上面EF所在的类库,引用*.Model.dll:3.在WebAPI项目的Web.config中添加EF类库生成的连接字符串信息:但是发布WebAPI项目后,调用接口时提示:在System.Data.Entity.Core.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(Assemblyassemb

SSH项目中创建action、service和serviceImpl步骤

创建action步骤: 1,创建Action 类          并在类上加注解 @Controller 和@Scope("prototype") 2,写其中的方法          CRUD的6个方法(方法名.返回值.注释) 3,创建JSP页面 4,配置struts.xml 创建service接口步骤: 1,创建Service接口. 2,在Action中引用Service,并写上@Resource注解 3,写Action方法的内容,并创建出所用的Service方法. 创建servi