WCF探索之旅(五)——WCF与WebService的异同
前几篇文章我们简单的介绍了WCF以及怎样使用它,今天我们来讨论一下WCF和WebService的异同。
相信大多数同学跟我一样,对于WebService有所了解。并且应该说你是先听说WebService,后听说还有个WCF的。对不正确?那好,我们今天来一起看看。这两者有何不同。
WebService是标准,是一种规范。严格来说WebService是一种行业标准,不是一种特定的技术。而WCF是一种WebService的实现。在WCF之前,微软系列中有ASP.NET
Web Service,后来微软做了ASP.NETWeb Service的安全。性能,数据加密、解密,托管宿主等多方面的扩展。称为WSE系列。WSE3.0.后来就是WCF时代。
WCF是一个分布式应用的开发框架。属于特定的技术,或者平台。既不是标准也不是规范。
一定程度上WCF就是ASP.NET
Web Service,由于它支持Web Service的行业标准和核心协议。因此ASP.NET WebService和WSE能做的事情,它差点儿都能胜任,跨平台和语言更不是问题,但它的目标不不过在支持和集成Web Service。
WCF是使用托管代码建立和执行面向服务(ServiceOriented)应用程序的统一框架。
它使得开发人员可以建立一个跨平台的安全、可信赖、事务性的解决方式,且能与已有系统兼容协作。WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下全部的和分布式系统有关的技术,如EnterpriseSevices(COM+).Net
Remoting、WebService(ASMX)、WSE3.0和MSMQ消息队列。以通信(Communiation)范围而论,它能够跨进程、跨机器、跨子网、企业网乃至于 Internet。以宿主程序而论,能够以ASP.NET,EXE,WPF,WindowsForms,NT Service,COM+作为宿主(Host)。
WCF能够支持的协议包含TCP。HTTP,跨进程以及自己定义,安全模式则包含SAML,Kerberos,X509,用户/password,自己定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得easy了。微软将全部与此相关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙。
关于WCF大家的一些错误的理解,以及从网上找了一些解释:
1、Web Service太旧了
框架都版本号的差异。功能特性上却是有新旧之分,可是对于特定的系统。适合自己的就是最好的。
2、Web Service 就是 ASP.NET Web Service
相同不是一个范畴。
前者规范,后者是框架
3、WCF比Web Service性能好:不是一个范畴。
4、WCF 比 ASP.NET Web Service快
不一定,须要特定的限制条件,WCF使用BasicHttpBinding的时候与ASP.NET Web Service协议一样。
5、WCF比Web Service速度快:相同概念不严格。
6、WCF比Web Service强大
WCF却是集成了多种微软的分布式技术,可是这里应该严格说是:ASP.NET Web Service
7、WCF比 Web Service安全:不严格。
其次WCF也能够开发全然裸奔的应用程序。
8、Web Service必将被WCF代替
Web Service不会被WCF代替!
前者是一套广泛使用的规范。
假设说WCF能代替的是ASP.NET WebService。由于二者都是.NET平台上的技术。
9、WCF事实上就是Web Service
WCF在某些情况下不遵守 Web服务规范,也就是能够开发非服务性质的应用。并且不能简单等同。
10、WCF很easy。事实上没有什么
WCF尽管是个服务开发框架,可是假设你深入学习。会发现WCF架构的强大之处。单单是WCF安全这一块已经相当的复杂了。
况且还要统一编程模型,兼容和支持很多早期的分布式技术。
好了,这里仅仅是抛砖引玉,详细有哪些不同。还须要大家亲自己主动手查一下。做做样例体验一下。
WCF探索之旅(五)——WCF与WebService的异同的更多相关文章
- WCF探索之旅(一)——入门
背景 对于.NET程序员来说,假设你不知道WCF,那仅仅能说明一点:你还是个菜鸟. 曾经也用.NET做过几个系统,尤其做后面的系统的时候,心里就有点沾沾自喜了! 想着,.NET也就这点东西,我如今也能 ...
- WCF探索之旅(三)——IIS公布WCF服务
在之前的博客已经对WCF的基础知识做了介绍.而且做了一个简单的小样例. 假设你看了之前的博客,相信你已经对WCF有了一定的掌握.这篇博客主要说一下怎样把WCF服务公布的IISserver上. 在上篇博 ...
- WCF学习之旅—WCF第二个示例(五)
二.WCF服务端应用程序 第一步,创建WCF服务应用程序项目 打开Visual Studio 2015,在菜单上点击文件—>新建—>项目—>WCF服务应用程序.在弹出界面的“名称”对 ...
- WCF学习之旅—第三个示例之五(三十一)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) WCF学习 ...
- WCF学习之旅——第一个WCF示例(一)
最近需要用到WCF,所以对WCF进行了解.在实践中学习新知识是最快的,接下来先做了一个简单的WCF服用应用示例. 本文的WCF服务应用功能很简单,却涵盖了一个完整WCF应用的基本结构.希望本文能对那些 ...
- WCF学习之旅—WCF第二个示例(七)
三.创建客户端应用程序 若要创建客户端应用程序,你将另外添加一个项目,添加对该项目的服务引用,配置数据源,并创建一个用户界面以显示服务中的数据. 在第一个步骤中,你将 Windows 窗体项目添加到解 ...
- WCF学习之旅—WCF第二个示例(六)
第五步,创建数据服务 在“解决方案资源管理器”中,使用鼠标左键选中“SCF.WcfService”项目,然后在菜单栏上,依次选择“项目”.“添加新项”. 在“添加新项”对话框中,选择“Web”节点,然 ...
- WCF学习之旅——第一个WCF示例(三)
第五步:创建客户端 WCF应用服务被成功寄宿后,WCF服务应用便开始了服务调用请求的监听工作.此外,服务寄宿将服务描述通过元数据的形式发布出来,相应的客户端就可以获取这些元数据.接下来我们来创建客户端 ...
- WCF学习之旅——第一个WCF示例(二)
第四步:通过自我寄宿的方式寄宿服务 WCF服务需要依存一个运行着的进程(宿主),服务寄宿就是为服务指定一个宿主的过程.WCF是一个基于消息的通信框架,采用基于终结点(Endpoint)的通信手段. 终 ...
随机推荐
- Discuz!代码
我如何使用Discuz!代码 Discuz!代码 效果 [b]粗体文字 Abc[/b] 粗体文字 Abc [i]斜体文字 Abc[/i] 斜体文字 Abc [u]下划线文字 Abc[/u] 下划线 ...
- mysql 修改表的字段
修改一个表的字段 ALTER TABLE `member` CHANGE `memberid` `memberid` bigint unsigned; 修改含有外键的字段 -- 执行 begin 到 ...
- QStandardItemModel
QString("%1").arg(g_PrjMg.m_Param.stRunParaSet.wWDTTimer) ///站号参数 model = new QStandardIte ...
- NET使用SuperSocket完成TCP/IP通信
1)为什么使用SuperSocket? 性能高,易上手.有中文文档,我们可以有更多的时间用在业务逻辑上,SuperSocket有效的利用自己的协议解决粘包 2)SuperSocket的协议内容? 命令 ...
- php更改wampserver的站点目录
我都wampserver安装在f盘 F:\wamp\bin\apache\Apache2.4.4\conf文件夹下的hhtpd.conf文件ctrl+f查找DocumentRoot,第二次的位置修改即 ...
- [实现] 利用 Seq2Seq 预测句子后续字词 (Pytorch)2
最近有个任务:利用 RNN 进行句子补全,即给定一个不完整的句子,预测其后续的字词.本文使用了 Seq2Seq 模型,输入为 5 个中文字词,输出为 1 个中文字词.目录 关于RNN 语料预处理 搭建 ...
- [Luogu] P4910 帕秋莉的手环
题目背景 帕秋莉是蕾米莉亚很早结识的朋友,现在住在红魔馆地下的大图书馆里.不仅擅长许多魔法,还每天都会开发出新的魔法.只是身体比较弱,因为哮喘,会在咏唱符卡时遇到麻烦. 她所用的属性魔法,主要是生命和 ...
- 新增feeds模块
很简单,参考<产品差异化定制> 1.在fees/luci/model下面新增文件夹,必须的有:Makefile 和 luasrc/controller/admin/xxx.lua 2.执行 ...
- LNMP构架搭建论坛
1 yum install -y apr* autoconf automake bison bzip2 bzip2* compat* cpp curl curl-devel fontconfig fo ...
- buf.copy()
buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]]) targetBuffer {Buffer} 需要拷贝的 Buffer ...