请问WCF 跟 WebService之间异同

From: http://tommyhu.cn/wcf-WebService-qu-bie/


Highslide JS
问题:

WCF与 Web Service的区别是什么?
和ASP.NET Web Service有什么关系?
WCF与ASP.NET Web Service的区别是什么?
这是很多.NET开发人员容易搞错的问题。面试的时候也经常遇到。而很多新手也会因为初次接触WCF或者Web Service而陷入迷惑的境地,很多资料介绍的也不准确。我甚至和许多许多年开发经验的开发人员讨论这些问题,他们都无法分清二者的区别。相信很多人也被误导。以下是最常见的错误观点:

Web Service太旧了;
Web Service 就是 ASP.NET Web Service;
WCF比Web Service性能好;
WCF 比 ASP.NET Web Service快;
WCF比Web Service速度快;
WCF比Web Service强大;
WCF比 Web Service安全;
Web Service必将被WCF取代;
WCF其实就是Web Service;
WCF非常简单,其实没有什么;
等等结论。这些观点我相信很多人都听说或接触过。后面我们会详细分析每个观点的错误的原因。以后大家在学习和面试中也好有个参考。

——————————————————————————————————————–

Quotation


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 支持多种并发模式:单例、单调、会话



1.WebService:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键)。微

软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。

WSDL来实现服务接口相关的描述。此外Web services 可以注册到UDDI中心.供其客户查找使用。
    后来微软做了ASP.NET Web Service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为WSE系列,这个是过

度产品,最高到WSE3.0.后来就是WCF时代。

    2.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,就相当于掌握了






下面有个类似的问题是来自于WCF中文论坛,引用ymq: 
不错 
以前用web service用的比较多,基本熟悉了,最近接触到WCF,也许是刚接触的原因,感觉怎么比 web service 复杂的多,优点好像也不是很明显 。。。。。 
谢谢,我曾经在WCF中文技术论坛里和他们讨论过一个问题。

——————————————————————————————————————–

下面我们来详细讨论一下二者的区别。Web Service和WCF的到底有什么区别。

【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时代。(WCF分布式开发必备知识(4):Web Service )

【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大门的钥匙。(MSDN)(WCF分布式开发步步为赢(1):WCF分布式框架基础概念 ) 
如果你想对WCF学习系统化一些,必须向对如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列也有个详细的认识的话,你可以看看我的博客,在此之前我对WCF学习相关的知识都系统的进行了整理。这个是文章目录:老徐的博客:文章目录 。 
还有一点就是,很多人对WCF学习感兴趣,当初我也是,直接奔WCF而来,其实在后来的学习中感觉吃力,因为WCF宣称的很多特性和优势,我们无法理解,更无法体会。文中提到了很多微软的早期技术如果都没有接触过,这些对比我们就无法有深刻的体会。

             建议先从基础开始,然后在关注一些WCF较高级的应用或者概念,循序渐进。网上也有很多WCF学习的资料,等有了一定基础以后可以看看付中凯大哥的讲座,这个需要一定的基础。 
原帖地址:  http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/c06420d1-69ba-4aa6-abe5-242e3213b68f  
优点的话,只有你学习使用以后才有体会,等你开始学习了WCF你就会慢慢喜欢上它~很好的一个通信框架,这个是微软SOA重要的技术框架。Biztalk里发布和调用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和WebService有个透彻的理解。

而不会再产生这样的疑惑。

无论是参加面试,作为候选人,还是面试官,弄清楚这些基础的问题,相当的必要。不要忽悠别人,也不要被别人忽悠。

技术人员应该坚持严谨的学习态度。~

呵呵,希望对大家的学习有帮助~

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

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

相关文章

报错 Cannot read properties of undefined (reading ‘ajax‘); Cannot read property ‘ajax‘ of undefined

jQuery中使用ajax发送请求,报错 Cannot read properties of undefined (reading ajax); Cannot read property ajax of undefined 错误代码 $.ajax({type:"POST",url:"pageServlet",data:jsonData,dataType:"json",succe…

「初步」Spring与commons的BeanUtil.copyProperties

2019独角兽企业重金招聘Python工程师标准>>> ###org.apache.commons.beanutils.BeanUtils 的是 public static void copyProperties(Object dest, Object orig) throws###org.​springframework.​beans.​BeanUtils 的是 public static void copyProperties(Object…

WCF技术剖析之十一:异步操作在WCF中的应用(上篇)

From: http://www.cnblogs.com/artech/archive/2009/07/08/1519423.html 按照操作执行所需的资源类型,我们可以将操作分为CPU绑定型(CPU Bound)操作和I/O绑定型(I/O Bound)操作。对于前者,操作的执行主要利…

vue2使用vant组件库;使用rem后vant组件样式变小了。

vue2使用vant组件库 文章目录vue2使用vant组件库一、vant是什么?二、使用步骤1.引入vant2库2.引入 自动按需引入组件3.在main.js中按需引入组件(推荐)4.或者只是在某个index.vue内使用(推荐)5.在main.js中导入所以组件…

EditPlus自定义模板

直接用图表达了,不详之处可以留言. 1.查看帮助中的关于,确定文本编辑器的版本是否一致 2.如图 3.如图 4.这个test.html 需要事先编辑并拷贝到EditPlus的安装目录 5.新建空白html 时,效果如下: 6.方便大家,代码贴上来. html> <head> <title>网页标题…

【Android】Android开发启动app弹出一张广告图片,Dialog可以查看大图,查看某个图片功能...

作者&#xff1a;程序员小冰&#xff0c;GitHub主页&#xff1a;https://github.com/QQ986945193 新浪微博&#xff1a;http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现的效果图&#xff1a; 首先说一下&#xff0c;这里利用的是一个dialog&#xff0c;然…

el-dialog弹框中img图片保持比例最大化;图片保持比例最大化

图片保持比例最大化 <el-dialog :visible.sync"dialogVisible" center class"look_img_dia"><img width"100%" :src"dialogImageUrl" alt"" /></el-dialog>.look_img_dia {/deep/.el-dialog {margin-top…

Wireshark技巧-过滤规则和显示规则

From: http://www.cnblogs.com/icez/p/3973873.html Wireshark是一个强大的网络协议分析软件&#xff0c;最重要的它是免费软件。 过滤规则 只抓取符合条件的包&#xff0c;在Wireshark通过winpacp抓包时可以过滤掉不符合条件的包&#xff0c;提高我们的分析效率。 如果要填写过…

easyUI 展开DataGrid里面的行显示详细信息

http://blog.csdn.net/yanghongchang_/article/details/7854156原著 datagrid 可以改变它的view(视图)去显示不同的效果.使用详细视图,datagrid可以显示展开按钮("" 或者 "-")在数据行的左边,用户可以展开一个行去显示一个附加的详细信息. 查看 Demo 步骤 …

理解OAuth 2.0(转)

From: http://www.mamicode.com/info-detail-1610036.html 理解OAuth 2.0 作者&#xff1a; 阮一峰 日期&#xff1a; 2014年5月12日 OAuth是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;在全世界得到广泛应用&#xff0c;目前的版本是2.0版。…

wcf返回datatable必须给tablename赋值

From: http://www.cnblogs.com/hxw/archive/2010/07/10/1774841.html 最近在学习WCF,返回datatable的时候老是出现“An error occurred while receiving the HTTP response to http://localhost:9999/calculatorservice. This could be due to the service endpoint binding no…

微信支付开发(1) JS API支付

From: http://www.cnblogs.com/txw1958/p/wxpayv3-jsapi.html 关键字&#xff1a;微信支付 微信支付v3 jsapi支付 统一支付 Native支付 prepay_id 作者&#xff1a;方倍工作室 原文: http://www.cnblogs.com/txw1958/p/wxpayv3-jsapi.html 本文介绍微信支付下的jsapi实现流程…

el-upload多文件上传;el-upload采用递归依次上传文件;el-upload采用递归在上一个文件上传成功后再传下一个文件

场景&#xff1a; 需求是接口一次上传一个文件&#xff0c;前一个文件上传成功后再调下一个接口上传下一个文件。 el-upload本身就支持多文件上传。但是它是并发进行&#xff0c;例如&#xff1a;选择一千个文件后&#xff0c;是一千个文件自动立马并行调用一千个后端接口去上传…

Controller向View传值方式总结

From: http://www.cnblogs.com/guohu/p/4377974.html 总结发现ASP.NET MVC中Controller向View传值的方式共有6种&#xff0c;分别是&#xff1a; ViewBagViewDataTempData向普通View页面传一个Model对象向强类型页面传传一个Model对象用一个ViewModel对象解决所有问题 首先我们…

记录一次bug解决过程:数据迁移

一 总结不擅长语言表达&#xff0c;勤于沟通&#xff0c;多锻炼 调试MyBatis中SQL语法:foreach 问题&#xff1b;缺少关键字VALUES。很遗憾&#xff1a;它的错误报的让人找不着北。 二 BUG描述&#xff1a;MyBatis中批量插入数据异常 <?xml version"1.0" encodin…

繁华模拟赛 ljw分雕塑

/* 用f[i][k]表示考虑到第i个雕塑&#xff0c;分成k组&#xff0c;可不可行&#xff08;这是一个bool类型的数组&#xff09; 转移&#xff1a; f[i][k]f[j][k-1],sum[i]-sum[j]合法 */ #include <cstdio> #include <cstdlib> #include <cstring> #include &…

Razor语法大全

From: http://www.cnblogs.com/dengxinglin/p/3352078.html Razor是基于framewor4以上写的一个开源项目&#xff1a;https://github.com/Antaris/RazorEngine/ Razor是包含了模板引擎和动态编译两部分。本部分就简单记录了模板引擎的一些语法&#xff0c;之后用Razor做一个代码…

el-dialog的内容不刷新;el-dialog内容有缓存;el-dialog里面的组件不刷新问题;

el-dialog里面的内容是带缓存的&#xff0c;也就是说除了第一次打开会初始化&#xff0c;其他次打开都是直接加载缓存的&#xff1b; 这就导致了有时候打开弹框时候&#xff0c;内容不刷新。有说法说是el-dialog嵌套太深大致的。 解决方法&#xff1a;直接给弹框的内容部分添加…

el-badge标记;el-tabs配合el-badge提示数字

标签选项卡配个标记数字提示 注意&#xff1a;el-tabs可以通过具名 slot 来实现选项卡的内容 <template><div><el-tabs v-model"tabValue"><el-tab-pane label"全部" name"1"></el-tab-pane><el-tab-pane lab…

[DP之计数DP]

其实说实在 我在写这篇博客的时候 才刚刚草了一道这样类型的题 之前几乎没有接触过 接触过也是平时比赛的 没有系统的做过 可以说0基础 我所理解的计数dp就是想办法去达到它要的目的 而且一定要非常劲非常快 都是一个很小的数然后有很多种接下来的方案使得这个数一下子变很大 计…