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的支持)。



本文转自wang_yb博客园博客,原文链接:http://www.cnblogs.com/wang_yb/archive/2010/04/28/1723332.html,如需转载请自行联系原作者

目录
相关文章
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
132 0
|
10月前
|
SQL 安全 网络安全
Web应用防火墙(WAF)与数据库应用防火墙有什么区别?
Web应用防火墙(WAF)专注于Web应用系统和网站的应用层防护,可有效应对OWASP Top 10等常见攻击,防止SQL注入、CC攻击等。而数据库应用防火墙则位于应用服务器与数据库之间,提供数据库访问控制、攻击阻断、虚拟补丁等高级防护功能,直接保护数据库免受攻击。两者分别针对Web层和数据库层提供不同的安全保护。
184 4
|
12月前
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
10月前
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
147 2
|
11月前
|
网络协议 API 网络安全
Web实时通信的学习之旅:轮询、WebSocket、SSE的区别以及优缺点
Web实时通信的学习之旅:轮询、WebSocket、SSE的区别以及优缺点
1391 0
|
11月前
|
存储 前端开发 API
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
405 0
|
11月前
|
Java 应用服务中间件 Apache
浅谈Tomcat和其他WEB容器的区别
Tomcat是一款轻量级的免费开源Web应用服务器,常用于中小型系统及并发访问量适中的场景,尤其适合开发和调试JSP程序。它不仅能处理HTML页面,还充当Servlet和JSP容器。相比之下,物理服务器是指具备处理器、硬盘等硬件设施的服务器,如云服务器,其设计目标是在处理能力、稳定性和安全性等方面提供高标准服务。简言之,Tomcat专注于运行Java应用,而物理服务器则提供基础计算资源。
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
109 0
|
4月前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。

热门文章

最新文章