WCF从理论到实践(2):决战紫禁之巅

转载 2011年01月12日 10:22:00

本文的出发点

通过阅读本文,能解决如下问题:

  1. WCF与以往的分布式技术有何区别?
  2. WCF 在安全性方面做了哪些改进?
  3. WCF在性能方面有那些改进?
  4. WCF开发模型和以往的其他分布式技术有何区别?

     

本文适合的读者

有过分布式开发和SOA相关实施经验的开发人员

 

WCF与以往的分布式技术有何区别?

在上篇文章 WCF从理论到实践一:揭开神秘面纱 中曾经阐述过WCF的前生今世,说的比较概括,本文详细的说明WCF和以往的分布式技术的区别,目的是让大家更详细的了解WcF的应用场合,为日后系统的架构作铺垫。首先先看下面这张对比表格

WCF与其他分布式技术对比表

 

Xml Web Service

.Net Remoting

Enterprice Service

WSE

MSMQ

WCF

跨平台

       

.Net与.Net通讯

 

     

分布式事务

   

   

安全可靠性

     

 

消息队列

       

:  

上面的表格参考了Bruchzhang文章中的对比图,原文地址: http://www.cnblogs.com/wayfarer/archive/2006/04/05/367474.html

从表格中我们可以看出,WCF似乎等于前面几项技术之和,但事实并非如此,它既整合了原来的多项技术,而且拥有着自己得天独厚的优点,如下

  1. 统一性(Integration)
  2. 互操作性
  3. 安全可靠(Secure and Reliable)
  4. 兼容性


WCF 在安全性方面做了哪些改进?

为了保证数据通讯的安全,WCF提供了三种保护措施:1)机密性(Confidentiality)2)完整性(Integrity) 3)可验证性(Authentication),这三种措施联合起来被称为CIA。并且这些措施在WCF中是默认支持的。机密性能保证传输的数据是经过加密的,不被非法监听(eavesdrop),而完整性利用数字签名技术防止数据在传输过程中被注入(injected)或篡改(tampered),而验证(Authentication)可以采用灵活的策略来处理达到的客户端请求,比如用户名密码验证,客户端证书验证等。为了显示WCF在安全性方面的特点和优点,我制作了演示程序:Security_Compare方案,这个方案主要通过对比wcf和xml web service的消息来表现wcf在安全方面的改进,工程清单如下:

ProjectName(项目名称)

Remark(备注)

Wcf

WCF的服务端程序,默认创建,功能未经修改

WcfClient

WCF程序的客户端,用于调用Wcf

WebService

Xml Web Service服务程序,完成功能和Wcf一样

WsClient

是Xml Web Service的客户端,用于调用WebService

为了跟踪Web Service和WCF的消息,我们还需要了解一下两个工具:

  1. Microsoft SOAP Toolkit Version 3 中的 Trace Utility
  2. tcpTrace

原来一直用Trace Utilty来跟踪xml web service的消息报文,非常好用,它能按包显示出Soap信息,看起来也非常方便。有关它的消息,请从http://www.microsoft.com/downloads/details.aspx?FamilyId=C943C0DD-CEEC-4088-9753-86F052EC8450&displaylang=en 上下载SOAP Toolkit 3.0,安装后,便出现了这个工具,在跟踪xml web service的消息报文的时候,这个工具很好用,但跟踪wcf的报文却不行,能截获到数据,但每个报文都是空的,可能也和wcf报文是经过加密的有关系吧, 搜索了一下,在artech的blog中发现这么一篇文章:[原创]我的WCF之旅(9):如何在WCF中使用tcpTrace来进行Soap Trace,解决了我不能跟踪wcf消息报文的难题,他也提到Trace Utilty不能跟踪wcf,同时建议大家使用tcpTrace,并且说明了使用方法,对tcpTrace不熟悉的同学可以到他的blog上学习,很实用,我在这里就不再赘述。

经过我的跟踪,我分别将Xml web Service的消息log到ws.txt中,将wcf的消息log到wcf.txt中,您可以从下面的本文相关文件下载中获取这两个文件,观察二者在消息上的不同。用于演示的示例解决方案您也在相关文件下载中获得。

 

WCF在性能方面有那些改进?

大家都知道,越复杂,结构层次越多的框架一般效率也越低,WCF是以往其他分布式技术的集成者,它结构相对复杂,且由于默认支持安全传输,在性能上应该不如Xml Web Service技术,更不用和.Net Remoting等比较,这是一个有框架设计经验和架构师们都明白的简单道理,但是事实怎么样呢?wcf比xml web service性能到底是高还是底,低要低多少?这些问题很值得大家的研究和讨论,其实已经有人在此方面做了很详细的对比,msdn上便有一篇专门介绍此方面知识的文章: WCF Performance Comparison ,对wcf性能感兴趣的同学,可以到这文章中学习。很详尽。限于条件的限制,我这里只在我一台机器上作一个简单的对比,仅供参考。分别测试循环1000次对wcf和xml web service相同功能方法的调用,得到如下的数据:
 

 

WCF

Web Service

第一次

9523ms

7561ms

第二次

9480ms

7465ms

第三次

9508ms

7708ms

第四次

9487ms

7900ms

 

WCF开发模型和以往的其他分布式技术有何区别?

WCF不仅仅在功能上集成了以往的分布式开发技术,而且在编程模型中充分吸取原来技术的优点,如xml web service的声明性编程(declareable),和.net remoting中的配置(configuration)和wse中的安全策略声明性配置方法,这样wcf虽然功能强大,而且学习简单,便于推广。在vs2008中还集成了WCF Test Client,开发服务的时候,甚至不需要再开发测试客户端就能用WCF Test Client来进行调用,简单之极,示例程序更是无需更改以行代码,便可以运行。

上面这些是说了wse编程的简单易学性,我总结出来,主要包括以下几种特性

  1. 基于声明性编程模型
  2. 充分利用配置来实现框架的灵活。
  3. 使用配置的同时,仍保留代码编程的模型,使得框架更加丰富,便于控制。
  4. 默认的CIA支持,极大地简化了安全控制

 

相关示例文件

  1. 安全对比示例解决方案Security_Compare: /Files/jillzhang/Security_Compare.rar
  2. 跟踪soap消息的工具tcpTrace: /Files/jillzhang/tcpTrace.rar
  3. 安全对比示例跟踪结果: /Files/jillzhang/wcf.txt  ,   /Files/jillzhang/ws.txt
  4. 性能测试解决方案Perfermence_Compare: /Files/jillzhang/Perfermence_Compare.rar

 

示例程序和本文对比测试的平台依据

windows xp sp2 + visual studio.net 2008 rtm

 

参考资料

 

 

 

作者:jillzhang
出处:http://jillzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

经典中的经典,古龙名著《陆小凤》决战紫禁之巅--叶西大战原文

经典中的经典,古龙名著《陆小凤》决战紫禁之巅--叶西大战原文 作者: 古龙            (致心目中最出色的武侠小说家,古龙,文风洒脱,侠义豪情)      叶孤城再次叹息,手中的剑忽又...
  • guanking
  • guanking
  • 2013年09月26日 09:24
  • 10348

Go、Nginx、Php、Nodejs谁能胜出紫禁之巅

声明:这里的测试框架都是很常用的框架,不去跟一些奇葩但是所谓性能极高的框架进行对比 由于我们在项目中大量使用Iris和nginx这两个Web框架(纯Go语言实现,零内存拷贝),同时也听过很多人问Go的...

WCF从理论到实践(4):路在何方

本文的出发点 通过阅读本文,您能了解以下知识: Address是什么? Address的组成? 如何在配置文件中指定Address? 如何通过编程方式设置Address? Address有什么特殊应用...

WCF从理论到实践(1):揭开神秘面纱

引子      WCF是"Windows Communication Foundation "的缩写,原来的代号为"Indigo",它是MS为SOA(Service Oriented Architec...

WCF从理论到实践(7):消息交换模式

本文的出发点通过阅读本文,您能理解以下知识: WCF定义了哪几种消息交换模式? One-Way Calls Request/Reply Duplex 用示例来解析WCF的消息交换模式 本文适合的读者 ...

WCF从理论到实践系列文章索引

WCF从理论到实践系列文章索引   WCF从理论到实践系列文章是笔者记录学习WCF历程的一部笔记,至今已有30余篇,涉及到WCF技术绝大多数相关理论知识和丰富的实践实例。这篇索引对上...
  • formiss
  • formiss
  • 2011年10月15日 09:56
  • 347

WCF从理论到实践系列文章

WCF从理论到实践系列文章是笔者记录学习WCF历程的一部笔记,至今已有30余篇,涉及到WCF技术绝大多数相关理论知识和丰富的实践实例。这篇索引对上述文章做了一下整理工作,以进一步熟悉掌握WCF技术 ...

WCF从理论到实践(word版)

  • 2009年10月13日 16:59
  • 3.93MB
  • 下载

WCF从理论到实践(5):Binding细解

本文的出发点: 通过阅读本文,您能了解以下知识: WCF中的Binding是什么? Binding的组成? Binding Element 的分类? Binding描述了那些层面的信息? 选择正确的B...

WCF从理论到实践(3):八号当铺之黑色契约

本文的出发点: 通过阅读本文,能解决以下的问题 什么是契约? 契约有几种?,他们都有什么用途 如何定义契约? 契约是独立于平台的么? 契约和以往哪种技术比较相像,又有什么不同? 本文适合的读者 WCF...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WCF从理论到实践(2):决战紫禁之巅
举报原因:
原因补充:

(最多只允许输入30个字)