大牛们晚上好,
由于不了解WCF的我现在想急切了解一下WCF,并且欲用于项目之中。所以有以下些许疑问,期待得到热心的您的指点,谢谢!谢谢大家!1.使用WCF中间层缓存常用表数据,给Client频繁调用(非常频繁) 与 Client直接从SQL数据库查询该数据,二者在速度上有多大差距?
(我潜意识认为wcf会差太多,因为我测试从client调用wcf方法之计算两数之和,如此简单之功能,从调用到返回需要1秒时间。会不会太长?)2.wcf能否保持连接状态(会话),类似TCP三次握手,而不是http那样每次重来。(估计是废话问题)3.完!欢迎讨论!
由于不了解WCF的我现在想急切了解一下WCF,并且欲用于项目之中。所以有以下些许疑问,期待得到热心的您的指点,谢谢!谢谢大家!1.使用WCF中间层缓存常用表数据,给Client频繁调用(非常频繁) 与 Client直接从SQL数据库查询该数据,二者在速度上有多大差距?
(我潜意识认为wcf会差太多,因为我测试从client调用wcf方法之计算两数之和,如此简单之功能,从调用到返回需要1秒时间。会不会太长?)2.wcf能否保持连接状态(会话),类似TCP三次握手,而不是http那样每次重来。(估计是废话问题)3.完!欢迎讨论!
缓存就需要在客户端,那样最好,服务端缓存没难度,自己搞个静态的字典,按照Key来缓存结果集,唯一需要关注的是内存消耗,如果内存消耗过多,需要及时情况,而客户端缓存性能就高多了。
我认为缓存在客户端不太明智,首先缓存数据是需要与数据库同步的,如果在客户端缓存那么所有客户端都要查询数据库,会浪费较多资源。 如果是中间层缓存数据,且wcf中间层与客户端通信速度非常快,那么维护中间层的缓存数据只需一次操作,多客户端共享使用。通常情况运行中间层服务的硬件内存资源足够大。现在关键问题是wcf传递1000行记录到客户端,和客户端直接从数据库select出1000行数据,二者相比差距有多少。据我所知wcf传递数据是用xml序列后传递,待客户端收到再反序列,这一来一回岂不是消耗时间更多?尽管此时中间层是从内存中取数据传递,而SQL数据库从硬盘取数据传递。
而你说的WCF序列化是最大的瓶颈,我在一篇帖子里已经对其质疑过了,参考:http://bbs.csdn.net/topics/390414590,其中30楼还有更详细的分析。
不知你需要“保持连接状态”做啥事情?
wcf到是有双工模式和asp.net兼容模式。
不知你需要“保持连接状态”做啥事情?
wcf到是有双工模式和asp.net兼容模式。因为WebService每次收到新请求时都会重新去new 对象重新查询数据库,所以我担心wcf是否也是这样?不能将已经创建的对象保持在内存。
如果是这样,正如前面几位前辈所说,直接用Catch就好了呗?
抛开实际需求与运行环境,很难说清楚谁好谁差。