设计高性能的WCF解决方案.ppt_第1页
设计高性能的WCF解决方案.ppt_第2页
设计高性能的WCF解决方案.ppt_第3页
设计高性能的WCF解决方案.ppt_第4页
设计高性能的WCF解决方案.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计高性能的WCF解决方案,MauroOttaviani资深软件开发主管微软公司,日程,回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议,一些比较,与下列.NET技术具有可比性.NETRemotingSystem.EnterpriseServicesSystem.Messaging,.NETRemotingvsWCF,EnterpriseServicesvsWCF,ASMXvsWCF,WSEvsWCF,日程,回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议,传输层基础,WCF默认支持多种传输层TCP,HTTP,MSMQ,NamedPipes可以自定义其它传输层每一种传输层各有不同的考虑因素消息传输模式,可接受客户端的多寡,互操作性,开销,传输层的比较,序列化器基础,消息类型=XMLInfoset序列化器是对象图与Infosets之间的桥梁WCF自带了三种序列化器DataContractSerializer(DCS)NetDataContractSerializer(NDCS)XmlSerializer可应互操作性的要求使用相应的序列化器,编码器基础,编码器是Infoset与报文格式之间的桥梁WCF自带了三种编码器(.NET框架3.0)文本,MTOM,二进制.NET框架3.5引入了JSON编码器通常应互操作性的要求来决定使用何种编码器二进制编码速度快,但不具备互操作性MTOM用于大量的二进制数据,同时具备互操作性文本编码则可满足大部分互操作性的要求,编码器总结,二进制编码显著快于文本编码可同时提供一个可互操作的端点和一个不可互操作的端点MTOM与二进制编码相近消息越大,编码器对性能的影响也越大协议本身的开销与实际吞吐量相比可以忽略不计消息越小,编码器对性能的影响也越小大部分时间耗费在协议本身,吞吐量(已规格化),演示,序列化器与编码器,葛子昂软件设计工程师微软中国研发集团,日程,回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议,WCF客户端/代理的基础,Svcutil.exe可以为服务创建一个代理类型该类型实现了IClientChannel实例化该类型需要额外的开销还可以使用ChannelFactory应该使用哪一个?Svcutil.exe创建的类型易于使用,但开销较大ChannelFactory不易使用,但开销较小经常被误用!,客户端/代理总结,销毁不用的代理会达到阈值:可能会导致客户端挂起会耗尽资源:如套接字不要在每次调用时都创建一个新的代理如果信道是有状态的,那么可以重复使用ChannelFactory“IncreasingMiddle-TierClientPerformance”,代理的吞吐量,演示,客户端的使用,葛子昂软件设计工程师微软中国研发集团,代码:在代理内进行缓存,日程,回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议,服务基础,服务是异步的不要浪费CPU资源ServiceModel做了一些保守的限制MaxConcurrentSessions=10MaxConcurrentCalls=16InstanceContext被设定为PerCall考虑同步的开销绑定指定了闲置超时ReceiveTimeout:可防御客户端不及时关闭连接,演示,服务的使用,葛子昂软件设计工程师微软中国研发集团,日程,回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议,流传输的基础,大型数据的传输经验法则:当数据量大于1M时考虑使用流只能用于HTTP,TCP和NamedPipe传输层既可传入服务,也可从服务中传出,或双向设定绑定的TransferMode.Streamed在契约中使用System.IO.Stream设定MaxReceivedMessageSize默认设定为64k,流传输的调控,Windows和WCF会对内容进行缓存即便是流传输的情况下也是如此WCF提供了用Nagle算法来控制缓存的支持ConnectionBufferSize指定本地缓存的大小MaxOutputDelay在本地缓存数据的最长时间AllowOutputBatching在WCF内部启用批处理,演示,流传输,葛子昂软件设计工程师微软中国研发集团,日程,回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议,常见的陷阱,不销毁无用的代理每次调用都创建一个新的代理在没有必要的时候启用安全性(Web)NetTcp/NetPipe/WSHttp默认情况下开启使用ServerThrottle的默认设定MaxConcurrentSessions=10MaxConcurrentCalls=16契约中使用了流传输,而绑定中却仍然使用缓存必要时采用流传输:内存的使用,较大的负荷负荷较小时采用缓存更快,可用的工具,SvcConfigEditor:可方便地显示所有设定SvcTraceViewer:对追踪数据进行诊断性能计数器VisualStudioTeamSuite中的性能工具Netmon:可分析线上的数据及其行为3.1版已开放下载,最佳实践,不要猜想:测量!实际负荷具有很大的影响部署会造成很大的差异其它应用程序争夺资源网络拓朴可能导致延迟安全性(活动目录,x509&CRLs)对主要的用户场景从头至尾进行测量若只对场景的某一部分进行测量,则一定要谨慎,性能调整检查表(1),传输层NetPipe,NetTcp,BasicHttp,WSHttp代理重用ServiceChannel,重用ChannelFactory.安全性传输层,WS-*+MessageCredentials,完全WS-*编码器文本编码,MTOM,二进制编码,JSON压缩编码,非WCF自带(GZipStream),性能调整检查表(2),运行方式自主运行,在IIS内运行在Vista/2008Server下,IIS7内运行时可支持NetTcp/NetPipe限额/阈值在提高限额/阈值的同时,使其保持尽可能地小实例化/并发Singleton/Multiple事务OleTx,WS-AT队列使用批处理,答惑解疑,Q&A,参考资源,APerformanceComparisonofWindowsCommunicationFoundation(WCF)withExistingDistributedCommunicatio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论