VS2008中Web Reference和Service Reference的区别

很早就发现在vs2008中应用web service有两种方式,即Add Web Reference和Add Service Reference,但是一直不是很清楚这两者有什么区别。趁着今天有空实验一下这两者的区别并记录下来供大家参考。

 

首先在网上查找,发现有如下两个主要区别:

1.Add Web Reference是由wsdl.exe生成客户端代理的。

   Add Service Reference是由svcutil.exe生成客户端代理的。

2.Add Web Reference生成的代理可以被.net1.1或.net2.0的客户端调用

   Add Service Reference生成的代理只能被.net3.0+的客户端调用,而且Add Service Reference后不仅生成代理类,在web.config中还会生成相应的Tag。

 

下面是我的实验:

首先建立一个solution,在其中增加三个工程(一个WebApplication,一个Webservice,一个Wcfservice)。

solution

1.测试Web Reference

(1.1)在WebApplication中引用WebService(即WebServiceForTest)

     引用后可正常使用,web.config中多出如下配置(url上的端口号和个人机器相关)

<applicationSettings> 
<WebReferAndSvcRefer.Properties.Settings> 
<setting name="WebReferAndSvcRefer_AsmxWebRefer_Service1" 
serializeAs="String">

<value>http://localhost:1253/Service1.asmx"</value> 
</setting> 
</WebReferAndSvcRefer.Properties.Settings> 
</applicationSettings

 

(1.2) 在WebApplication中引用WcfService(即WcfServiceForTest)

       引用后无法正常使用,web.config中多出的配置和上面类似

<applicationSettings> 
<WebReferAndSvcRefer.Properties.Settings> 
<setting name="WebReferAndSvcRefer_WcfWebRefer_Service1" 
serializeAs="String"> 
<value>http://localhost:1254/Service1.svc</value> 
</setting> 
</WebReferAndSvcRefer.Properties.Settings> 
</applicationSettings>

 

2.测试Service Reference

(2.1)在WebApplication中引用WebService(即WebServiceForTest)

   引用后可正常使用,web.config中多出如下配置(url上的端口号和个人机器相关)

<system.serviceModel> 
<bindings> 
<basicHttpBinding> 
<binding name="Service1Soap" closeTimeout="00:01:00" 
openTimeout="00:01:00" 
receiveTimeout="00:10:00" sendTimeout="00:01:00" 
allowCookies="false" 
bypassProxyOnLocal="false" 
hostNameComparisonMode="StrongWildcard" 
maxBufferSize="65536" maxBufferPoolSize="524288" 
maxReceivedMessageSize="65536" 
messageEncoding="Text" textEncoding="utf-8" 
transferMode="Buffered" 
useDefaultWebProxy="true"> 
<readerQuotas maxDepth="32" maxStringContentLength="8192" 
maxArrayLength="16384" 
maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
<security mode="None"> 
<transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
<message clientCredentialType="UserName" algorithmSuite="Default" /> 
</security> 
</binding> 
</basicHttpBinding> 
</bindings> 
<client> 
<endpoint address="http://localhost:1253/Service1.asmx" binding="basicHttpBinding" 
bindingConfiguration="Service1Soap" 
contract="AsmxSvcRefer.Service1Soap" name="Service1Soap" /> 
</client>

</system.serviceModel>

 

(2.2)在WebApplication中引用WcfService(即WcfServiceForTest)

    引用后可正常使用,web.config中多出如下配置(url上的端口号和个人机器相关)

<system.serviceModel> 
<bindings> 
<wsHttpBinding> 
<binding name="WSHttpBinding_IService1" 
closeTimeout="00:01:00" 
openTimeout="00:01:00" receiveTimeout="00:10:00" 
sendTimeout="00:01:00" 
bypassProxyOnLocal="false" transactionFlow="false" 
hostNameComparisonMode="StrongWildcard" 
maxBufferPoolSize="524288" 
maxReceivedMessageSize="65536" 
messageEncoding="Text" textEncoding="utf-8" 
useDefaultWebProxy="true" 
allowCookies="false"> 
<readerQuotas maxDepth="32" maxStringContentLength="8192" 
maxArrayLength="16384" 
maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
<reliableSession ordered="true" inactivityTimeout="00:10:00" 
enabled="false" /> 
<security mode="Message"> 
<transport clientCredentialType="Windows" 
proxyCredentialType="None" realm="" /> 
<message clientCredentialType="Windows" 
negotiateServiceCredential="true" 
algorithmSuite="Default" establishSecurityContext="true" /> 
</security> 
</binding> 
</wsHttpBinding> 
</bindings> 
<client> 
<endpoint address="http://localhost:1254/Service1.svc"
binding="wsHttpBinding" 
bindingConfiguration="WSHttpBinding_IService1" 
contract="WcfSvcRefer.IService1" 
name="WSHttpBinding_IService1"> 
<identity> 
<dns value="localhost" /> 
</identity> 
</endpoint> 
</client>

</system.serviceModel>

 

3.测试客户端的.net framework要求

将WebApplication(即WebReferAndSvcRefer)的Target Framework降为2.0

image

然后发现在WebReferAndSvcRefer中无法引用Service Reference,证明了Add Service Reference生成的代理只能被.net3.0+的客户端调用。

 

4.总结

以上的实验过程基本证明了本文开头提到的两个区别,其中(1.2)Add Web Reference的方式不能使用Wcf也证明了Add Web Reference生成的代理是面向.net1.1或.net2.0的客户端的(wcf需要.net3.0的支持)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

REVERSE-PRACTICE-BUUCTF-19

REVERSE-PRACTICE-BUUCTF-19[RoarCTF2019]polyre[安洵杯 2019]game[SCTF2019]Strange apk[CFI-CTF 2018]IntroToPE[RoarCTF2019]polyre elf文件&#xff0c;无壳&#xff0c;用ida分析 main函数的结构&#xff0c;多重循环&#xff0c;是控制流平坦化&#xff0c;参考&#xf…

REVERSE-PRACTICE-BUUCTF-20

REVERSE-PRACTICE-BUUCTF-20[SCTF2019]creakme[网鼎杯 2020 青龙组]bang[WUSTCTF2020]funnyreDig the way[SCTF2019]creakme exe程序&#xff0c;运行后提示输入ticket&#xff0c;无壳&#xff0c;用ida分析 交叉引用字符串“please input your ticket:”来到sub_402540函数 …

Web Reference和Service Reference的区别

今天因为项目需要使用服务引用&#xff0c;就按之前的经验添加上了&#xff0c;步骤如下&#xff1a; 项目根目录——引用——右键——添加服务引用——高级——添加Web引用——输入接口的URL地址——回车&#xff08;下方出现的就是接口的定义的方法&#xff09;——修改Web引…

REVERSE-PRACTICE-BUUCTF-21

REVERSE-PRACTICE-BUUCTF-21[SCTF2019]babyre[MRCTF2020]EasyCpp[GUET-CTF2019]encrypt[QCTF2018]Xman-babymips[SCTF2019]babyre elf文件&#xff0c;无壳&#xff0c;用ida分析 在start函数中看到main函数的字样&#xff0c;但是左侧函数窗没有找到main函数 原因是main函数中…

原型设计工具——“墨刀”的介绍与基本教程

一、产品介绍 &#xff08;1&#xff09;产品简介&#xff1a; 墨刀是一款在线原型设计与协同工具&#xff0c;借助墨刀&#xff0c;产品经理、设计师、开发、销售、运营及创业者等用户群体&#xff0c;能够搭建为产品原型&#xff0c;演示项目效果。 &#xff08;2&#xf…

MockPlus原型设计介绍

在第八周的课堂上&#xff0c;王文娟老师在校园系统上发布了对于自行选择的原型设计软件进行资料查找以及自学的任务。因为之前的课程学习需要&#xff0c;我们已经大概掌握了原型设计软件Axure的使用&#xff0c;因此在这里&#xff0c;我选择了另一原型设计进行介绍&#xff…

REVERSE-PRACTICE-BUUCTF-22

REVERSE-PRACTICE-BUUCTF-22[SCTF2019]Who is he[FlareOn2]very_success[NPUCTF2020]Baby Obfuscation[HDCTF2019]MFC[SCTF2019]Who is he unity游戏&#xff0c;运行后输入&#xff0c;点击按钮检验输入 dnSpy打开Who is he\Who is he_Data\Managed\Assembly-CSharp.dll 在Te…

浅谈常见的NoSQL技术方案和选型

前言 在互联网和大数据的背景下&#xff0c;越来越多的网站、应用系统需要支撑 海量数据存储、高并发请求、高可用、高可扩展性 等特性要求。传统的 关系型数据库 已经难以应对类似的需求&#xff0c;各种各样的 NoSQL&#xff08;Not Only SQL&#xff09;数据库因此而产生。…

REVERSE-PRACTICE-BUUCTF-23

REVERSE-PRACTICE-BUUCTF-23[2019红帽杯]Snake[BSidesSF2019]blink[De1CTF2019]Re_Sign[ACTF新生赛2020]Splendid_MineCraft[2019红帽杯]Snake unity游戏&#xff0c;dnSpy打开Snake\Snake_Data\Managed\Assembly-CSharp.dll 发现要载入Interface这个dll ida打开Snake\Snake_…

REVERSE-PRACTICE-BUUCTF-24

REVERSE-PRACTICE-BUUCTF-24[watevrCTF 2019]Timeout[SUCTF2019]hardcpp[CISCN2018]2ex[UTCTF2020]babymips[watevrCTF 2019]Timeout elf文件&#xff0c;无壳&#xff0c;ida分析 main函数中signal&#xff0c;alarm&#xff0c;delay三个函数配合使用是为了反调试 交叉引用…

REVERSE-PRACTICE-BUUCTF-25

REVERSE-PRACTICE-BUUCTF-25特殊的 BASE64[FlareOn1]Javascrap[WMCTF2020]easy_re[NPUCTF2020]BasicASM特殊的 BASE64 exe程序&#xff0c;运行后输入&#xff0c;无壳&#xff0c;ida分析 main函数&#xff0c;读取输入&#xff0c;进行变表base64编码&#xff0c;与rightFla…

REVERSE-PRACTICE-BUUCTF-26

REVERSE-PRACTICE-BUUCTF-26[FlareOn6]FlareBear[SUCTF2018]babyre[GKCTF2020]WannaReverse[FlareOn4]greek_to_me[FlareOn6]FlareBear apk文件&#xff0c;模拟器上运行&#xff0c;创建一个小熊&#xff0c;有三种方式交互&#xff0c;分别为“吃饭”&#xff0c;“篮球”以…

C#的变迁史02 - C# 2.0篇

在此重申一下&#xff0c;本文仅代表个人观点&#xff0c;如有不妥之处&#xff0c;还请自己辨别。 第一代的值类型装箱与拆箱的效率极其低下&#xff0c;特别是在集合中的表现&#xff0c;所以第二代C#重点解决了装箱的问题&#xff0c;加入了泛型。1. 泛型 - 珍惜生命&#x…

REVERSE-PRACTICE-BUUCTF-27

REVERSE-PRACTICE-BUUCTF-27[XMAN2018排位赛]Dragon Quest[羊城杯 2020]easyre[watevrCTF 2019]Repyc[2019红帽杯]calc[XMAN2018排位赛]Dragon Quest elf文件&#xff0c;无壳&#xff0c;ida分析 main函数&#xff0c;读取输入&#xff0c;start_quest函数验证输入&#xff0…

C#的变迁史03 - C# 3.0篇

C# 3.0 (.NET 3.5, VS2008) 第三代C#在语法元素基本完备的基础上提供了全新的开发工具和集合数据查询方式&#xff0c;极大的方便了开发。 1. WPF&#xff0c;WCF&#xff0c;WF 这3个工程类型奠定了新一代.NET开发的客户端模型&#xff0c;通信模型&#xff0c;工作流模型。 …

REVERSE-PRACTICE-BUUCTF-28

REVERSE-PRACTICE-BUUCTF-28[FlareOn6]Memecat Battlestation[b01lers2020]chugga_chugga[INSHack2018]Tricky-Part1[watevrCTF 2019]esreveR[FlareOn6]Memecat Battlestation .Net程序&#xff0c;运行后输入weapon code&#xff0c;用dnSpy打开 在Stage1Form直接找到第一个w…

C#的变迁史04 - C# 4.0 之多线程篇

在.NET 4.0中&#xff0c;并行计算与多线程得到了一定程度的加强&#xff0c;这主要体现在并行对象Parallel&#xff0c;多线程Task&#xff0c;与PLinq。这里对这些相关的特性一起总结一下。 使用Thread方式的线程无疑是比较麻烦的&#xff0c;于是在这个版本中有了改善的版本…

REVERSE-PRACTICE-BUUCTF-29

REVERSE-PRACTICE-BUUCTF-29[FlareOn1]Shellolololol[CFI-CTF 2018]powerPacked[INSHack2018]Tricky-Part2[CFI-CTF 2018]Automated Reversing[FlareOn1]Shellolololol exe程序&#xff0c;直接不能运行&#xff0c;无壳&#xff0c;ida分析 简单F8单步调试发现&#xff0c;在…

C#的变迁史05 - C# 4.0篇

C# 4.0 (.NET 4.0, VS2010) 第四代C#借鉴了动态语言的特性&#xff0c;搞出了动态语言运行时&#xff0c;真的是全面向“高大上”靠齐啊。 1. DLR动态语言运行时 C#作为静态语言&#xff0c;它需要编译以后运行&#xff0c;在编译的过程中&#xff0c;编译器要检查语法的正确性…

REVERSE-PRACTICE-BUUCTF-30

REVERSE-PRACTICE-BUUCTF-30[RCTF2019]DontEatMe[b01lers2020]little_engine[NPUCTF2020]你好sao啊[MRCTF2020]Shit[RCTF2019]DontEatMe exe程序&#xff0c;运行后输入&#xff0c;无壳&#xff0c;用ida分析 交叉引用字符串来到sub_401260函数&#xff0c;读取输入&#xff…