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

下载本文档

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

文档简介

设计高性能的WCF解决方案第1页/共40页设计高性能的WCF解决方案MauroOttaviani资深软件开发主管微软公司第2页/共40页日程回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议第3页/共40页一些比较与下列.NET技术具有可比性.NETRemotingSystem.EnterpriseServicesSystem.Messaging/en-us/library/bb310550.aspx速度比以下网络服务更快ASMX(ASP.NET网络服务)WSE性能优于其它同类技术/en-us/netframework/bb499684.aspx第4页/共40页.NETRemotingvsWCF第5页/共40页EnterpriseServicesvsWCF第6页/共40页ASMXvsWCF第7页/共40页WSEvsWCF第8页/共40页日程回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议第9页/共40页传输层基础WCF默认支持多种传输层TCP,HTTP,MSMQ,NamedPipes可以自定义其它传输层每一种传输层各有不同的考虑因素消息传输模式,可接受客户端的多寡,互操作性,开销第10页/共40页传输层的比较第11页/共40页序列化器基础消息类型

==XMLInfoset序列化器是对象图与Infosets之间的桥梁WCF自带了三种序列化器DataContractSerializer(DCS)NetDataContractSerializer(NDCS)XmlSerializer可应互操作性的要求使用相应的序列化器第12页/共40页编码器基础编码器是Infoset与报文格式之间的桥梁WCF自带了三种编码器(.NET框架3.0)文本,MTOM,二进制.NET框架3.5引入了JSON编码器通常应互操作性的要求来决定使用何种编码器二进制编码速度快,但不具备互操作性MTOM用于大量的二进制数据,同时具备互操作性文本编码则可满足大部分互操作性的要求第13页/共40页编码器总结二进制编码显著快于文本编码可同时提供一个可互操作的端点和一个不可互操作的端点MTOM与二进制编码相近消息越大,编码器对性能的影响也越大协议本身的开销与实际吞吐量相比可以忽略不计消息越小,编码器对性能的影响也越小大部分时间耗费在协议本身第14页/共40页吞吐量(已规格化)第15页/共40页演示序列化器与编码器葛子昂软件设计工程师微软中国研发集团第16页/共40页日程回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议第17页/共40页WCF客户端/代理的基础Svcutil.exe可以为服务创建一个代理类型该类型实现了IClientChannel实例化该类型需要额外的开销还可以使用ChannelFactory<T>应该使用哪一个?Svcutil.exe创建的类型易于使用,但开销较大ChannelFactory<T>不易使用,但开销较小经常被误用!第18页/共40页客户端/代理总结销毁不用的代理会达到阈值:可能会导致客户端挂起会耗尽资源:如套接字不要在每次调用时都创建一个新的代理如果信道是有状态的,那么可以重复使用ChannelFactory“IncreasingMiddle-TierClientPerformance”

/en-us/library/aa738757.aspx如果进行缓存,那么还要考虑对伸缩性的影响异步,异步,异步!第19页/共40页代理的吞吐量第20页/共40页演示客户端的使用葛子昂软件设计工程师微软中国研发集团第21页/共40页代码:在代理内进行缓存第22页/共40页日程回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议第23页/共40页服务基础服务是异步的不要浪费CPU资源ServiceModel做了一些保守的限制<ServiceThrottlingBehavior/>MaxConcurrentSessions==10MaxConcurrentCalls==16InstanceContext被设定为PerCall考虑同步的开销绑定指定了闲置超时ReceiveTimeout:可防御客户端不及时关闭连接第24页/共40页演示服务的使用葛子昂软件设计工程师微软中国研发集团第25页/共40页日程回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议第26页/共40页流传输的基础大型数据的传输经验法则:当数据量大于1M时考虑使用流只能用于HTTP,TCP和NamedPipe传输层既可传入服务,也可从服务中传出,或双向设定绑定的TransferMode.Streamed在契约中使用System.IO.Stream设定MaxReceivedMessageSize默认设定为64k第27页/共40页流传输的调控Windows和WCF会对内容进行缓存即便是流传输的情况下也是如此WCF提供了用Nagle算法来控制缓存的支持ConnectionBufferSize指定本地缓存的大小MaxOutputDelay在本地缓存数据的最长时间AllowOutputBatching在WCF内部启用批处理第28页/共40页演示流传输葛子昂软件设计工程师微软中国研发集团第29页/共40页日程回报传输层,序列化器,及编码器客户端的选项服务端的选项流传输通常的建议第30页/共40页常见的陷阱不销毁无用的代理每次调用都创建一个新的代理在没有必要的时候启用安全性(Web)NetTcp/NetPipe/WSHttp默认情况下开启使用ServerThrottle的默认设定<ServiceThrottlingBehavior/>MaxConcurrentSessions==10MaxConcurrentCalls==16契约中使用了流传输,而绑定中却仍然使用缓存必要时采用流传输:内存的使用,较大的负荷负荷较小时采用缓存更快第31页/共40页可用的工具SvcConfigEditor:可方便地显示所有设定SvcTraceViewer:对追踪数据进行诊断性能计数器VisualStudioTeamSuite中的性能工具Netmon:可分析线上的数据及其行为3.1版已开放下载/netmonETW(Xperf)/en-us/library/aa363668.aspx/events/storage-developer2007/presentations/BWorthington_Capturing_Comprehensive_Storage_Workload.pdf第32页/共40页最佳实践不要猜想:测量!实际负荷具有很大的影响部署会造成很大的差异其它应用程序争夺资源网络拓朴可能导致延迟安全性(活动目录,x509&CRLs)对主要的用户场景从头至尾进行测量若只对场景的某一部分进行测量,则一定要谨慎第33页/共40页性能调整检查表(1)传输层NetPipe,NetTcp,BasicHttp,WSHttp代理重用ServiceChannel,重用ChannelFactory.安全性传输层,WS-*+MessageCredentials,完全WS-*编码器文本编码,MTOM,二进制编码,JSON压缩编码,非WCF自带(GZipStream)第34页/共40页性能调整检查表(2)运行方式自主运行,在IIS内运行在Vista/2008Server下,IIS7内运行时可支持NetTcp/NetPipe限额/阈值在提高限额/阈值的同时,使其保持尽可能地小实例化/并发Singleton/Multiple事务OleTx,WS-AT队列使用批处理第35页/共40页答惑解疑Q&A第36页/共40页参考资源APerformanceComparisonofWindowsCommunicationFoundation(WCF)withExistingDistributedCommunicationTechnologies/en-us/library/bb310550.aspxIncreasingMiddle-TierClientPerformance/en-us/library/aa738757.aspxNetmon3.0.NETStockTraderSampleApplication/en-us/netframework/bb499684.aspxETW(Xperf)/en-us/library/aa

温馨提示

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

评论

0/150

提交评论