Web Reference和Service Reference的区别
今天因为项目需要使用服务引用,就按之前的经验添加上了,步骤如下:
项目根目录——引用——右键——添加服务引用——高级——添加Web引用——输入接口的URL地址——回车(下方出现的就是接口的定义的方法)——修改Web引用名——添加引用。
按照上面的步骤就可以将引用添加到Web References文件夹下,这也是以往经验,但是具体使用时发现添加的是Web Reference并不能满足项目的需要,这里需要用的是Service Reference。在这之前也查过很多文章,大多数都说是两者没有什么大的区别,主要是Service Reference适用的.net版本更高,而且可以使用WCF。那么两者到底有什么区别呢?
一、Web Reference生成的代理可以被.net1.1或.net2.0的客户端调用;Service Reference生成的代理只能被.net3.0+的客户端调用。
二、Web Reference不能使用WCF(上面已经提到,原因是WCF需要.net3.0的支持);Service Reference则可以使用WCF(当然需要3.0+的客户端)。
三、Web Reference是由wsdl.exe生成客户端代理的,生成webservice代理类的方法,即从System.Web.Services.Protocols.SoapHttpClientProtocol派生而来,代理类代码可以指定要访问的URL属性;Service Reference是由svcutil.exe生成客户端代理的,按照新的webservice客户访问机制WCF(不是直接从System.Web.Services.Protocols.SoapHttpClientProtocol派生而来。)代理类代码没有URL属性可指定,而是在客户端的配置文件app.config中指定endpoint来访问指定的url。
那么如何添加Service Reference呢,步骤与文章开头类似,具体如下:
项目根目录——引用——右键——添加服务引用——输入地址——转到(下方会出现服务与操作两个小窗口,服务是代理类名称,操作是代理类中定义的可调用方法)——修改命名空间——确定。
与添加Web Reference不同的是没有点击“高级”按钮,高级中添加的Web Reference是.net2.0版本的引用方式,是为了兼容性才保留下来。
msdn解释:若要调用 Web 服务的方法,应调用生成的 Web 服务代理类的对应方法。 生成的代理类执行对 Web 服务方法的 Web 请求。
【注意】
要使启用 AJAX 的 ASP.NET 应用程序从脚本调用 Web 服务,必须配置该应用程序注册所需的 ASP.NET HTTP 处理程序。
您调用的 Web 服务必须是 .asmx 文件,并且必须使用 ScriptServiceAttribute 特性限定。 从脚本调用的各个方法必须使用 WebMethodAttribute 特性限定。 不带此特性的方法不在代理类中公开。
以上是服务引用的步骤及相关知识,下面看下如何在一个站点添加服务接口:
服务要建在web层,在web层或任选一个文件夹右键——添加——新建项——选择web服务(注意文件是以 .asmx为后缀)
下面是一个小例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
namespace DemoWeb.API
{/// <summary>/// WSVerify 的摘要说明/// </summary>[WebService(Namespace = "http://www.*****.com/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][System.ComponentModel.ToolboxItem(false)]// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。// [System.Web.Script.Services.ScriptService]public class WSVerify : System.Web.Services.WebService{[WebMethod(EnableSession = true)]public DataTable GetLoginUserId(string username, string password){//检查用户是否登录DataTable dt = new BLL.company().GetUserByUsernamePwd(username, password);return dt;}}
}
其中WebMehodAttribute封闭类无法被继承,向使用 ASP.NET 创建的 XML Web services 中的某个方法添加此特性后,就可以从远程 Web 客户端调用该方法。否则无法调用。
Web Reference和Service Reference的区别相关推荐
- VS2008中Web Reference和Service Reference的区别
很早就发现在vs2008中应用web service有两种方式,即Add Web Reference和Add Service Reference,但是一直不是很清楚这两者有什么区别.趁着今天有空实验一 ...
- 【转】Web Reference和Service Reference的区别
今天因为项目需要使用服务引用,就按之前的经验添加上了,步骤如下: 项目根目录--引用--右键--添加服务引用--高级--添加Web引用--输入接口的URL地址--回车(下方出现的就是接口的定义的方法) ...
- spring-boot框架dubbo在controlle中r注解@Reference注入service,但是调用方法时候,service报null空指针异常
spring-boot框架dubbo在controlle中r注解@Reference注入service,但是调用方法时候,service报null空指针异常 参考文章: (1)spring-boot框 ...
- @Component、@Repository、@Service、@Controller区别
@Component.@Repository.@Service.@Controller区别 很长时间没写代码了,把以前学的那点框架知识忘光了,最近在写Java开源商城HapiShop,发现用@Comp ...
- oracle soap api,Web API与SOAP API的区别
Web API与SOAP API的区别 总的来说,Web API比SOAP API有优势,多数情况下SOAP API的优势仅在消息结构的描述上.因此在三方集成时,当对方的集成工具仅支持根据WSDL来构 ...
- H5开发的web APP和原生APP的区别
H5开发的web APP和原生APP的区别有以下几个方面:一.开发方面 原生App ⊙ 每一种移动操作系统都需要独立的开发项目⊙ 每种平台都需要独立的开发语言.Java(Android), Objec ...
- Web前端与HTML5有什么区别,百分之八十的人分不清
说到Web前端,很多人想到的就是HTML5,加上现在APP和小程序盛行,Web前端开发和HTML5开发都异常火热.外行人很容易将HTML5和Web前端划等号,那Web前端和HTML5是否一样?有些人已 ...
- Web前端和后端开发的区别和要求
Web前端和后端开发的区别和要求 有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通.那到底什么是前端.后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等. ...
- WCF学习笔记(一):WCF Service Application和WCF Service Library的区别
近来在学习WCF,遇到了不少问题,有的让我焦头烂额,不过解决问题的过程就是学习的过程,收获也不少. 昨天有个问题开始困扰我--WCF Service Application和WCF Service L ...
最新文章
- BTC.com率先发起使用开放联盟网关协议OFGP,联合iBitcome钱包携手送糖果
- java spring 校验框架_Springboot 使用校验框架validation校验
- 测试基础理论知识(二)
- 读博文学Android
- 操作系统基础:计算机作业管理知识笔记
- 心疼还在用Facebook的你一秒,Snapchat才是未来
- (转)调用System.gc没有立即执行的解决方法
- django 外键_Django 文档解读 - 模型层(1)
- SqlServer 的一个坑
- 如何用python下载图片_Python之如何优雅的下载一堆小哥哥图片
- spring boot引入JDK的jar,Jenkins自动化部署出错
- linux 执行 ktr脚本,kettle在linux下面用于shell脚本执行:转换或者作业
- 大学计算机课要怎么学,大学计算机课学结
- [白话解析] 通俗解析集成学习之GBDT
- iOS中UIColor,CGColor,CIColor详解
- 数睿数据2022新年致辞:小荷才露尖尖角,早有蜻蜓立上头
- 鸿蒙系统会应用在平板电脑,华为将发布搭载鸿蒙系统的平板电脑-芯查查
- 2.11 循环赛日程表
- 利用jpeglib压缩图像为jpg格式
- 关于BeanUtils.populate()方法使用时的报错解决
热门文章
- 使用handler倒计时
- 细数改善WPF应用程序性能的10大方法
- IIS7.0站点/虚拟目录中访问共享
- 学习 SQL 语句 - Select(4): 排序
- [Leetcode][第841题][JAVA][钥匙和房间][DFS][BFS]
- [Leetcode][第336题][JAVA][回文对][暴力][HashSet][字典树]
- 九歌计算机在线作诗硬件原理,“九歌”作诗是如何炼成的?
- win10计算机启动一分钟重启,Win10开机提示电脑将在一分钟后自动重启怎么办?...
- 如何去掉文章里的非关键词c++_B2B/B2C网站:文章标题如何写才能促进搜索排名...
- php8vsgo,服务端 I/O 性能:Node、PHP、Java、Go 的对比