当前位置: 首页 > 编程日记 > 正文

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

转载于:https://www.cnblogs.com/wang_yb/archive/2010/04/28/1723332.html

相关文章:

详细记录python的range()函数用法

详细记录python的range()函数用法 使用python的人都知道range()函数很方便&#xff0c;今天再用到他的时候发现了很多以前看到过但是忘记的细节。这里记录一下range(),复习下list的slide&#xff0c;最后分析一个好玩儿的冒泡程序。 这里记录一下&#xff1a; >>> ran…

socket编程和并发服务器

socket这个词可以表示很多概念&#xff1a; 在TCP/IP协议中&#xff0c;“IP地址TCP或UDP端口号”唯一标识网络通讯中的一个进程&#xff0c;“IP地址端口号”就称为socket。 在TCP协议中&#xff0c;建立连接的两个进程各自有一个socket来标识&#xff0c;那么这两个socket组成…

基于协同过滤算法实现选课推荐系统

新版本教务管理系统 教务管理系统 选课功能1.系统功能 1、用户账户管理 2、学生个人信息的查看与修改 3、学生的网上选课与课程的评分 4、教师个人信息的查看与修改 5、教师对学生课程评价结果的查看 6、管理员对学生信息与教师信息的查看与添加 7、管理员对课程的增删改查 8、…

linux access函数判断文件存取权限

access&#xff08;判断是否具有存取文件的权限&#xff09;相关函数 stat&#xff0c;open&#xff0c;chmod&#xff0c;chown&#xff0c;setuid&#xff0c;setgid表头文件 #include<unistd.h>定义函数 int access(const char * pathname,int mode);函数说明 access(…

Python天天美味(35) - 细品lambda

lambda函数也叫匿名函数&#xff0c;即&#xff0c;函数没有具体的名称。先来看一个最简单例子&#xff1a; deff(x): returnx**2printf(4)Python中使用lambda的话&#xff0c;写成这样 g lambdax : x**2printg(4)lambda表达式在很多编程语言都有对应的实现。比如C#&#x…

jvm:分析工具

bin/jvisualvm.exe 可查看类实例数 bin/jconsole.exe 监控线程&#xff0c;堆&#xff0c;等 http://blog.csdn.net/yaowj2/article/details/7107818 https://blog.csdn.net/janekeyzheng/article/details/41075791 转载于:https://www.cnblogs.com/chen-msg/p/8275299.html

Django 路由分发

Django 路由分发 当一个url请求过来之后1、先到项目主目录下的urls内。2、由这个url做处理分发给其他app内的urls。 一级路由&#xff1a;主目录urls内引入include from django.conf.urls import url,include urlpatterns [# 指定分发的app目录名称url(r^cmdb/,include("…

NHibernate从入门到精通系列(7)——多对一关联映射

内容摘要 多对一关联映射概括 多对一关联映射插入和查询 多对一关联映配置介绍 一、多对一关联映射概括 关联关系是实体类与实体类之间的结构关系&#xff0c;分别为“多对一”、“一对一”、“多对多”。然而“多对一”是怎样描述的呢&#xff1f;让我们参考图1.1所示&#xf…

PLSQ执行同样的sql,使用mybatis进行动态拼装执行的时候非常慢的问题解决

如题&#xff0c;项目中碰到了同样的sql&#xff0c;在plsql中执行很快&#xff0c;几乎秒出&#xff0c;但在程序中使用mybatis框架时&#xff0c;却非常的慢&#xff0c;前提是动态拼装的sql。在使用写死的参数&#xff0c;不会出现很慢的效果。最后发现是使用 #{xxx} 去注入…

雨林木风爱好者GHOSTXP装机版_NTFS_SP3_2010_03

系统简介:系统下载参考地址:http://www.51ghostxp.cn/winxp/230.htm迅雷地址:thunder://QUFodHRwOi8vZG93bjUuZ2hvc3QyLmNuL0dIT1NUWFBfU1AzeWxtZmFpaGFvemhlXzIwMTBfMDNbTlRGU10uaXNvWlo雨林木风爱好者GHOSTXP装机版_NTFS_SP3_2010_03主要特点&#xff1a; 此系统采用硬盘安装…

栈和堆的区别(转 知乎)

①管理方式&#xff1a;栈由编译器自动管理&#xff1b;堆由程序员控制&#xff0c;使用方便&#xff0c;但易产生内存泄露。 ②生长方向&#xff1a;栈向低地址扩展(即”向下生长”)&#xff0c;是连续的内存区域&#xff1b;堆向高地址扩展(即”向上生长”)&#xff0c;是不连…

到这个年纪为什么我还要开始学习理解参与区块链?

【顺势而为&#xff0c;与时俱进的需要】看来我对信息的敏感程度还不够&#xff0c;最近才认真研读了相关文件&#xff1a;国务院关于印发“十三五”国家信息化规划的通知国发〔2016〕73号1信息技术创新代际周期大幅缩短&#xff0c;创新活力、集聚效应和应用潜能裂变式释放&am…

JavaScript小记

项目进行中需求变化&#xff0c;把所有的图片的呈现出渐出效果&#xff0c;我首先想到了filters&#xff1a;滤镜&#xff0c; <html><head> </head> <script language"JavaScript">function picload(){img.filters.revealTrans.apply()im…

Ant Design of Vue —— setFieldsValue方法 动态操作Switch组件

在开发中经常使用Form组件管理表单&#xff0c;这次想通过form提供的setFieldsValue()方法动态改变Switch组件状态&#xff0c;却没有生效。 加入valuePropName属性之后&#xff0c;就可以使用动态操作Switch组件了。 <a-switch v-decorator"[haveChildren, { valuePro…

打印机的大小设置

procedure SetPrinterPaper(APaperNo: Integer; APaperWidth, APaperHeight: Double); //设置当前打印机的纸张大小 //纸张号 &#xff19; A4 13 B5 //页宽和页高&#xff0c;单位mm var Device: array[0..255] of char; Driver: array[0..255] of char; Port: array[0..255]…

C# 对ListT取交集、连集及差集

實際演練 ※本文使用int為例&#xff0c;若為使用自訂之DataModel&#xff0c;需實作IEquatable<T>介面才能使用 1. 取交集 (A和B都有) List A : { 1 , 2 , 3 , 5 , 9 } List B : { 4 , 3 , 9 } var intersectedList list1.Intersect(list2);結果 : { 3 , 9 } 判断A和B…

面试前赶紧看了5道Python Web面试题,Python面试题No17

目录 本面试题题库&#xff0c;由公号&#xff1a;非本科程序员 整理发布第1题&#xff1a; Flask中的请求上下文和应用上下文是什么?第2题&#xff1a;django中间件的使用&#xff1f;第3题&#xff1a; django开发中数据做过什么优化&#xff1f;第4题&#xff1a; 解释一下…

最好的程序界面就是用户无需去阅读操作手册就知道该如何使用的界面

最好的程序界面就是用户无需去阅读操作手册就知道该如何使用的界面。 原则 1.一致性 如果你可以在一个列表的项目上双击后能 够弹出对话框&#xff0c;那么应该在任何列表中双击都能弹出对话框。要有统一的字体写号、统一的色调、统一的提示用词、窗口在统一的位置、按钮也在窗…

Ant Design Vue中a-select组件下拉列表在局部滚动时不跟随问题解决方法

问题如下&#xff1a; 修改方法如下 <a-tree-select:getPopupContainer"triggerNode > {return triggerNode.parentNode || document.body;}"style"width: 100%":dropdownStyle"{ maxHeight: 400px, overflow: auto }":treeData"tree…

ospf路由汇总的目的

ospf路由汇总的目的减少网络中lsa传输的数量&#xff0c;减少网络中的变化&#xff0c;减少链路状态数据库&#xff0c;减少路由表&#xff0c;大大提高数据包查表转发的能力&#xff0c;能减少因为链路状态数据库的变化而引起的spf算法的重计算。转载于:https://blog.51cto.co…

第九周学习笔记

聚合&#xff1a; 1.当聚集函数遇到空值时&#xff0c;除COUNT(*)外&#xff0c;都跳过空值而出处理非空值。 2.WHERE子句中不能使用聚集函数。 3.聚集函数只能用于SELECT和GROUP BY中的HAVING语句。 常用的聚合函数 1 count 2 sum 3 avg 4 max 5 min 使…

2019年5月26日

距离考核结束的时间只剩下5天了&#xff0c;一个特别大的问题就是前后端的交流问题&#xff0c;不单单是项目的进度&#xff0c;更多的是人与人之间的交流。页面的进度完成了一整个流程&#xff0c;剩下的就是和后端的进行交互&#xff0c;后端的进度有点慢&#xff0c;导致我现…

Django3.0 +Python3 连接mysql遇到django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer

使用idea 创建了一个Django项目&#xff0c;不想使用默认的数据库进行操作&#xff0c;想切换成mysql数据&#xff0c;在此遇到了一些问题特此记录。 按照网上所说使用pymysql进行数据库连接操作&#xff0c;安装并且配置完毕后&#xff0c;在执行数据迁移操作时报错 django.…

栈的push、pop序列

题目&#xff1a;输入两个整数序列。其中一个序列表示栈的push顺序&#xff0c;判断另一个序列有没有可能是对应的pop顺序。为了简单起见&#xff0c;我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5&#xff0c;那么4、5、3、2、1就有可能是…

const常对象成员与常成员函数

#include <iostream>#include <string>using namespace std;class pt{public:   pt(int a,int b){this->xa,this->yb;}   int getX() const {return this->x;} //此处必须加const&#xff08;关键&#xff09;&#xff0c;否则A.getX()将无法正常调用…

根据CPU核数合理设置线程池大小

一般来说池中总线程数是核心池线程数量两倍&#xff0c;只要确保当核心池有线程停止时&#xff0c;核心池外能有线程进入核心池即可。 我们所需要关心的主要是核心池线程的数量该如何设置。 自定义线程池代码 package com.lc.concurrent; import java.util.concurrent.ArrayB…

云答题微信小程序 实现 前端加后台管理

1.为什么要使用微信云开发 微信云开发自己是不需要域名&#xff08;备案的域名&#xff09;&#xff0c;服务器&#xff0c;搭建数据库等。 2.使用技术 微信小程序相关云接口java &#xff08;SpringBootMaven&#xff09;后台管理使用 VUE 3.实现微信小程序效果如下 微信小…

用Windows Media Player截图的方法

视频截图方法&#xff1a; 关闭“视频加速功能即可”。 以Windows Media Player 9.0为例&#xff0c;选择菜单“工具→选项”&#xff0c;找到“性能”选项卡中的“视频加速”一栏&#xff0c;然后拖动下方的拉杆将默认的“完成”改为“无”&#xff0c;按“确定”保存设置&…

基于OHCI的USB主机 —— 结束语

从去年11月份开始连载的《基于OHCI的USB主机》系列总算告一段落了&#xff0c;到UFI命令层为止&#xff0c;所有USB主机的底层处理就结束了&#xff0c;再上面就是磁盘读写、文件系统、文件读写和应用系统了。这些上层应用基本上是与USB主机没有什么关系的&#xff0c;我的这个…

mac os x 查看网络端口情况

查看端口是否打开 使用 netstat 命令 a. netstat -nat | grep <端口号> , 如命令 netstat -nat | grep 3306 b. netstat -nat |grep LISTEN 使用 lsof 命令 # yongfu-pro at yongfu-pro.local in ~ [22:39:32] $ lsof -n -P -i TCP -s TCP:LISTEN COMMAND PID USER FD …