问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Web Service和WCF的到底有什么区别

发布网友 发布时间:2022-04-20 11:22

我来回答

2个回答

热心网友 时间:2022-04-19 05:49

【1】Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架,也不是技术。
它有一套完成的规范体系标准,而且在持续不断的更新完善中。
它使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键)。微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。WSDL来实现服务接口相关的描述。此外Web services 可以注册到UDDI中心.供其客户查找使用。
后来微软做了ASP.NET Web Service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为WSE系列,这个是过度产品,最高到WSE3.0.后来就是WCF时代。
【2】ASP.NET Web Service:微软提供了Web服务的开发框架,属于ASP.NET Framework的一部分,但是支持早起的WS规范。比如SOAP1.1。
【3】WCF:WCF 是一个分布式应用的开发框架,属于特定的技术,或者平台。既不是标准也不是规范。
WCF其实一定程度上就是ASP.NET Web Service,因为它支持Web Service的行业标准和核心协议,因此ASP.NET Web Service和WSE能做的事情,它几乎都能胜任,跨平台和语言更不是问题(数据也支持XML格式化,而且提供了自己的格式化器)。
但是WCF作为微软主推一个通讯组件或者平台,它的目标不仅仅是在支持和集成Web Service,因为它还兼容和具备了微软早期很多技术的特性。
根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙 。如果你想对WCF学习系统化一些,必须向对如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列也有个详细的认识的话,你可以看看我的博客,在此之前我对WCF学习相关的知识都系统的进行了整理。这个是文章目录:老徐的博客:文章目录 。
还有一点就是,很多人对WCF学习感兴趣,当初我也是,直接奔WCF而来,其实在后来的学习中感觉吃力,因为WCF宣称的很多特性和优势,我们无法理解,更无法体会。文中提到了很多微软的早期技术如果都没有接触过,这些对比我们就无法有深刻的体会。
【4】结论:
那么我们看了这些分析以后,就可以知道以上的结论为什么错误了。
不能哪一个技术框架和行业标准作比较,任何对于二者的比较 都是错误的,因为两者根不不在同一个范畴里。就好比不能拿个汽车和交通法规比较一样。这是个误区。
Web Service太旧了:框架都版本的差异,功能特性上却是有新旧之分,但是对于特定的系统,适合自己的就是最好的。 Web Service 就是 ASP.NET Web Service:同样不是一个范畴。前者规范,后者是框架 WCF比Web Service性能好:不是一个范畴, WCF 比 ASP.NET Web Service快:不一定,需要特定的*条件,WCF使用BasicHttpBinding的时候与ASP.NET Web Service协议一样。 WCF比Web Service速度快:同样概念不严格。 WCF比Web Service强大:WCF却是集成了多种微软的分布式技术,但是这里应该严格说是:ASP.NET Web Service WCF比 Web Service安全:不严格。其次WCF也可以开发完全裸奔的应用程序。 Web Service必将被WCF取代;Web Service不会被WCF取代!前者是一套广泛使用的规范。如果说WCF能取代的是ASP.NET Web Service,因为二者都是.NET平台上的技术。 WCF其实就是Web Service:WCF在某些情况下不遵守 Web服务规范,也就是可以开发非服务性质的应用。而且不能简单等同。 WCF非常简单,其实没有什么:WCF虽然是个服务开发框架,但是如果你深入学习,会发现WCF架构的强大之处。单单是WCF安全这一块已经相当的复杂了。况且还要统一编程模型,兼容和支持许多早期的分布式技术。很多人轻易下这样的结论,一定是仅仅看了一些文章或书籍,不一定写过代码。高手不会这样武断地下结论。

在WCF支持的各种协议中:每种协议中消息都有不同的传输格式、不同的编码格式等等,WCF 以统一的方式来调用各种编码器、进行传输。假如以后有新的协议出现,WCF并不用更改现有的框架、只用针对该协议做扩展就可以支持该协议了。这就很好地适应了变化,可以说WCF是封装变化的绝佳实践。
  再来谈谈你的问题,WCF与Web 服务是什么关系,WCF 能够创建兼容 Web 服务的服务,也就是说可以创建能够与Web 服务互联互通的服务,他们两个并不能用简单包含或者等同关系来表述。WCF 是一套框架,用来创建各种服务。其中包括创建 Web服务(采用 basicHttpBinding绑定的服务就是一个Web 服务)。

WCF可以不依赖于IIS。
WCF可以配置成BasicHttpBinding来兼容(或者说变身成)WS。
WCF可以基于TCP或者MessegeQueue来传输数据。
WCF的可配置性比WS强,比如安全性。
WCF可以是有状态的,并支持事务。
WCF 支持多种通信协议 Http/Https 、TCP/UDP、MSMQ、命名管道、对等网、
  消息可达性、事务流等。
WCF 可以与ASP.NET 集成、共享一个上下文(HttpContext)。
WCF 支持多种消息传输格式 :text,binary,mtom,Json 等。
WCF 安全性要强:支持对称安全、非对称安全、消息安全、传输安全、
  SSL 流安全、Windows 流安全等。
WCF 支持多种会话模式:单向、双向、请求/响应。
WCF 支持REST 。
WCF 支持多种格式化方式。DataContractSerializer、XmlSerializer、 
  DataContractJsonSerializer 等。
WCF 支持 WAS hosting、Windows 服务 hosting、Self-Hosting、IIS hosting 等。
WCF 支持多种并发模式:单例、单调、会话 。

热心网友 时间:2022-04-19 07:07

Web Service是早期的技术实现了,也是soap的东西,采用的主要是http协议,假如是在C#上开发的话,需要寄宿在IIS上来实现。
WCF的话是相对较新的技术,里面的basichttpbinding可以跟以前的ws进行通信,并且集成了大部分的通信协议(几种http协议的实现以及net.Tcp实现、msmq、命名管道等实现),另外寄宿的宿主可以是命令行控制台、IIS、桌面程序等。
差别的话,感觉有这以下几点[针对C#来说的]。
ws的话,编程模型没有wcf的那么好,具体的实现差别建议百度下,个人觉得wcf比较好。wcf可以用契约的接口方式来进行实现,而ws的话主要是通过继承WebService的类来实现的,方法上添加WebMethod特性,WCF的话是通过服务契约来声明(可以是接口也可以是类对象)
ws的话通用性比较强,跟java等ws也可以进行互相通信,然后假如是wcf发布的服务,除了basicHttpBinding这种绑定之外,其余的几种绑定基本上不能作为互相通信。例如命名管道跟net.Tcp都是,值得说的是这里的net.Tcp跟原生的tcp是不一样的,内部实现上参考tcp的可靠连接机制进行了应用层的一套实现。
另外一点就是服务引用跟web引用上的,这个严格来说不能属于两者的区别,只是.net版本的区别,主要是针对客户端对服务端发布好的服务进行的引用,服务引用生成的时候,会在配置文件上存在一份配置项,可以进行ABC终结点的配置,假如是web引用的话,会在setting中添加上一个硬编码的地址。建议用服务引用。
还有一个就是客户端调用服务端开发的时候,webservice的话,基本上只能通过服务端发布的地址来进行引用[应用的方式可以参考点3],或者通过服务端提供的wsdl文件来进行引用(该种方式一般比较少,因为需要提供文件,而不是通过公开的方式来进行接口的提供,无法应对服务变更后发布问题,但是确实有这个情况的存在)。而wcf的话,还存在可以通过提供契约文件(就是声明了ServiceContract的那个接口文件)来进行服务的调用。
在接口层面的话,凡是IList<class T>以及IDictionary<class T>这一类的泛型实现都会在进行服务引用的时候,都会转换为数组的,例如void F(IList<int>)会在引用后成为void F(int[])这种方式,而才用点4提供的契约文件的话就能保持方法的原始声明。
个人建议的话,假如是新开发的系统基本上都才用wcf比较好,一个是接口的思想,一个是假如需要转换为其他协议的话可以比较方便,只需要通过配置文件修改下就可以[当前前提是没有用到特定协议的特定属性,例如服务回调,有些协议是不支持双向通信的]。而且也需要考虑发布的服务是否需要公开给别的语言进行通信。

另外楼上说的性能在下降的话,我大概说明下:
基本上针对应用的开发都是基于socket的开发,传统的socket开发的话,是需要自己去实现整个通信框架的,包括多线程处理,IOCP等的实现[基本上.net的异步通信模型在内部实现都会绑定好,IOCP是一个异步模型,自行百度],二进制流的编码处理[网络传输都是通过二进制的,例如utf8到二进制的转换],tcp无边界消息的处理[udp的话没有这个,但是包体的大小也是有*],通信协议的约定处理[例如ws跟wcf是采用soap这种,各种ws的约定,例如多少个字节表示数据流的长度、数据的检验,还是数据加密位,也包括数据的位移处理],数据上抛模型跟数据回复模型[接受到数据后是需要上抛给业务层去进行处理的,然后也需要回复给客户端,不过也不一定是这样,看需求],还有各种针对性的处理,例如客户端socket的保存[有可能对长期不适用的套接字要进行自动断开的业务]。类似wcf这种东西的话,还有序列化跟反序列化的情况[序列化跟反序列化是性能开销比较大的,例如序列化是通过反射来实现的,反射又是跟程序集的元数据有关的,属于运行时行为],假如是自己实现tcp通信模型,就不一定会有序列化跟反序列化的通信模型了,而且wcf为了让通信跟本地调用那样以及标准的方面,字节流都是比较大的,这里也会增加通信的带宽【好比自定义的协议4个字节的数据包长度+1个字节的加密压缩位+N个数据包位+X个字节的检验位,这种的话实际用到的字节就比较少了,因为在数据包里面,可以会用2个字节表示协议头,例如ox0A表示登录接口,再用4个字节表示登录名,4个字节表示密码等】。以上是简单的对socket跟wcf\ws等协议的差别说明。socket跟wcf\ws对比的话,socket性能是最高的,高并发高响应的时候,这里是有差距的,技术上的话,socket需要更加多的技术支持[开发周期长,对人员要求高],而wcf在应用层面上基本无难度,就是一些配置,出现问题也大部分可以通过百度来处理。另外一个就是托管语言本身的问题,GC这块的,GC回收的时候,是需要挂起堆栈上的线程的,而且GC的线程优先级比你所能创建的所有线程的优先级都要高,等GC执行完毕的时候才能去执行你的线程,wcf在堆对象上申请的空间也会更加多,自然导致GC会受到的概率也会更加大,这里也会可能导致wcf性能不如socket。基本上来说,C#的类都是引用对象,都是堆申请的,在引用计数超出的时候,都会被下一个GC[]操作去回收,真是个奇葩的事情。

总之,在ws跟wcf之间选择的话,个人觉得优先选择wcf好点。
如果是对性能要求较高[高并发等],或者是长连接再或者是需要用到UDP这种的话,就基本上无法用wcf跟ws这种了,wcf是没有udp协议的,http协议也只是在tcp协议下的上层协议,底层发送的数据包跟实作是不通的。另外对于长连接,虽然wcf提供了类似回调这种情况机制,只是个人不推荐使用在这种长连接的场合下。
Web Service和WCF的到底有什么区别

Web Service 就是 ASP.NET Web Service:同样不是一个范畴。前者规范,后者是框架 WCF比Web Service性能好:不是一个范畴, WCF 比 ASP.NET Web Service快:不一定,需要特定的限制条件,WCF使用BasicHttpBinding的时候与ASP.NET Web Service协议一样。 WCF比Web Service速度快:同样概念不严格。 WCF...

Load Port、SMIF

威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...

WCF和webservice的区别

WCF是微软.NET战略中的一大集成者,将.NET中各种网络通信技术集成在一起,构成了WCF。而Web Service是一个很通用的概念,在asp.net中就指一个web服务,wcf包含了所有.net以前的网络通信技术,当然也就包含了web service。

WCF 和web service 有什么区别! 或者说wcf相对于web service 有什么突出...

WCF和WebService 都是基于Soap 协议来进行通讯的(其实soap协议也是xml格式的)1.WCF Microsoft 平台上的Soa架构用于构建分布式和可交互式操作的应用程序 统一了ASMX,.NET Remoting 与 Enterprise Service的开发模型 为各种应用提供单一的编程模型 基于配置驱动的协议选择,消息格式,进程分配等等 并没有限制...

WebService、WCF和WebApi的区别和特点

Web Api :与WCF REST Service不同在于,Web API利用Http协议的各个方面来表达服务 1.)在.net平台上Web Api是一个开源的、理想的、构建REST-ful服务的技术 2.)它可以使用HTTP的全部特点,比如URIs、request/response头,缓存,版本控制,多种内容格式 3.)它也支持MVC的特征,像路由、控制...

c#怎么调用http服务,http服务和webservice的区别

接下来介绍下三种的区别和联系:首先说个名词【SOAP】:基于xml的一种数据交换协议 好了,下面开始一一介绍 【WebServer】:基于SOAP协议的,数据格式是XML。只支持Http协议。它不是开源的,但可以被任何一个了解XML的人使用。【WCF】:这个也是基于SOAP协议的,数据格式是XML。这个是WebServer的进化版,...

wcf wwf wpf各个的含义与用途???

1. wcf是为了解决.net framework与其他平台如java的通讯问题,原来.net framework只有.net remoting(用于WinForm通讯,采用TCP通讯,依赖于.net framework,也就是说它不可以合其他的平台通讯), webservice(用于Web), 而且整合了综合了其他的一些通讯协议,见 http://www.cnblogs.com/gaoweipeng/archive/...

Webservice能通过配置文件引用吗

在你的项目"引用"那里,菜单选择"添加服务引用"之后,在App.config配置文件里面帮你生成节点的,不需要你手动配置的.web service和wcf有些不同,wcf可能需要手动配置ABC,但是webservice不需要 比如我添加的如图上的在线翻译的web service,这些配置节点就是自动生成的 ...

什么是WCF

Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。是Windows平台上开发分布式应用最佳的实践方式。简单的归结为四大部分 1&gt;.网络服务的...

net中的WebService怎么动态配置引用地址

不同的WebService生成的代理类不同。构造函数如:public TestWebService() { this.Url = global::WebServiceApp.Properties.Settings.Default.WebServiceApp_ServiceCenter_TestWebService;if ((this.IsLocalFileSystemWebService(this.Url) == true)) { this.UseDefaultCredentials = true;this.use...

C# winForm添加webservice接口

你说的就是WCF了,做一个WCF,然后以你的Winform做为Host就行了,具体内容可以自己查查。不过一般来说,Webservices一般都是用来查询或操作数据的,你也可以完全用winform做一个程序来操作数据库,然后再单独建立一个webserivices网站来对外提供接口,二者之间是以数据库为桥梁。

的和得的区别 有什么区别 WebService asp做WebService WebService第一次调用慢 WebService入门详解 WebService多线程并发数 ⊂和⊆的区别 及和合的区别
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
沈阳浑南烧烤的地点在哪里? 浑南烧烤饭店都有哪些推荐? 沈阳浑南区的烧烤都有哪些优势亮点? 请问这是鲫鱼鲤鱼还是草鱼?如何区分? 大灾变狼人我到底选哪个职业好呢? 请教台服大灾变前夕德鲁伊天赋加点 玩过台服的兄弟们,说说4.2鸟德和野德PVP怎么样!!! 大灾变玩牧师好还是德鲁伊好啊? 台服小德练级点什么天赋? 大灾变小德玩什么天赋好 WCF这个是什么意思? 怎么把图片做成透明水印 求教:wcf是干什么用的啊...? WCF是什么?如何学习 跪求WCF的工作原理 图片怎么做透明水印 自己16岁生日怎么发空间说说(女生) 女生伤感超拽空间说说 如果不坚强,软弱给谁看 十六岁的女生生日到了应该在QQ里面发一条什么说说 10岁女孩QQ空间说说 超长暖心的qq女生个性说说 书不成字,纸短情长。这句话意思,女生写的qq说说 对一个女生表白的qq说说 qq女生说说伤感霸气300字以上 qq说说女生霸气脏话 感动一个女孩子的QQ动态说说 女生QQ说说(多一点) 一个女生的qq说说,什么意思? 喜欢在QQ空间发说说的女生是怎样的心理? qq说说女生励志 技术中的wcf是什么意思? 英短猫wcf是什么意思和cfa的区别 WCF服务编程一书中写到:契约操作不能使用引用对象... WCF中可以实现泛型接口的服务契约吗 为什么要用wcf 什么时候用 WCF服务契约中定义了有可选参数的操作契约,客户端... wcf是什么意思? 数据契约与消息契约的区别 WCF数据契约可以引用其他类作为[datamember]吗? WCF中DataContract和MessageContract的区别 wcf中的数据契约和ado.net实体框架问题求助 什么是WCF WCF或WebService的契约版本升级有没有好的兼容方案 wcf双工通信问题!!!!!!!!!!!!!!!!... wcf证书号在哪里看 转呼啦圈可以提高肺活量么 摇呼啦圈属于有氧运动吗能减肥吗 肺活量应该怎么锻炼呢? 转呼啦圈对健康有哪些好处?能锻炼腰部吗? 如何锻炼提高肺活量?