积极答复者
关于WCF的一个设计问题

问题
-
在我的项目中,需要开发一个订单管理平台,但是订单中所需要的客户信息却在另外的一个系统中。项目设计中需要我的订单平台通过WCF访问客户信息。
我的设计如下:
public class Order { ...... public Guid Id {get;set} public Customer Consignor{get;set} //这里的Customer是从WCF中引用的类; ...... }
于是我的问题就来了,在使用ORM实例化订单列表时,系统需要不断的访问WCF服务(订单数据量较大),造成严重的瓶颈。
第一次接触WCF,也许是我的设计问题。
请求各位帮个忙,看看这里应该怎样设计或实现。
答案
-
Henry,
建议你先确定性能下降的原因,
若是由于频繁访问WCF造成WCF服务器并发相应瓶颈,参考如下文章对服务器配置进行优化,还不行的话,需考虑硬件升级
Service Throttling
http://msdn.microsoft.com/en-us/library/ms731379.aspxContention, poor performance, and deadlocks when you make Web service requests from ASP.NET applications
http://support.microsoft.com/kb/821268若是因为单个Message的数据量太大,尝试Galactica的方法,在逻辑上去除可能的冗余数据,同时,使用BinaryEncoding比Text或Mtom能更有效的压缩消息。
另外,Gzip Encoder 可以进一步压缩消息
http://msdn.microsoft.com/en-us/library/cc138373(VS.90).aspx
不过,估计性能不会很好。
Mog Liang
全部回复
-
Order是数据契约
在使用ORM实例化订单列表时,系统需要不断的访问WCF服务(订单数据量较大),造成严重的瓶颈。
----------------------------------------
你的意思 是 一次可能返回 多个表单?就是一个表单list?
每次实例化表单的时候,都要调用其它服务?吗
Frank Xu Lei--谦卑若愚,好学若饥
专注于.NET平台下分布式应用系统开发和企业应用系统集成
Focus on Distributed Applications Development and EAI based on .NET
欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum -
Henry,
建议你先确定性能下降的原因,
若是由于频繁访问WCF造成WCF服务器并发相应瓶颈,参考如下文章对服务器配置进行优化,还不行的话,需考虑硬件升级
Service Throttling
http://msdn.microsoft.com/en-us/library/ms731379.aspxContention, poor performance, and deadlocks when you make Web service requests from ASP.NET applications
http://support.microsoft.com/kb/821268若是因为单个Message的数据量太大,尝试Galactica的方法,在逻辑上去除可能的冗余数据,同时,使用BinaryEncoding比Text或Mtom能更有效的压缩消息。
另外,Gzip Encoder 可以进一步压缩消息
http://msdn.microsoft.com/en-us/library/cc138373(VS.90).aspx
不过,估计性能不会很好。
Mog Liang