如果仅仅是Recordset对象,你可以把它Save到一个ADODB.Stream对象中,然后获取该对象的2进制串(这个操作和Marshel很类似)存入SPM。需要使用该recordset的时候可以通过反向操作来实现恢复出一个Recordset,这样可以减少SQL服务器的资源消耗,但是增加了组件服务器的内存消耗。ps:MS建议直接访问SQL,避免使用recrodset对象的filter操作,理由是filter操作会遍历整个recordset对象,而一般DBMS对于条件过滤(特别是复杂的)都会有优化。所以filter操作速度肯定比使用DBMS慢。ps again:我不是MS的
解决方案 »
- 关于VC多线程实现服务器加多个客户端的套接字问题
- MFC存在根路径受到改变,如何解决?
- ADO 数据绑定
- 问:如何实现调色板 WM_REALIZEPAL ?
- CListCtrl大图标模式下,如何得到当前被选中项的索引数?
- 我用 windows media 9.0播放一个avi文件很清晰,但用以前的或realone,金山影霸等效果不好,为什么?
- 极度奇怪:xp用ping 这个地址 192.168.100.255得到所有机器的回应,98下却报超时,何解?
- 储存过程返回的纪录为空时,recordset出错
- 网络入侵监测的源代码
- 如何屏蔽Windows2000下方的任务条!!!
- 一个简单小问题:如何将float转化成CString?
- huqiming(Super)请进
我看了一本书《Programming Distributed Applications with COM+ and Microsoft Visual Basic 6.0,Second Edition》,作者是Ted Pattison,中译本《COM+与Visual Basic 6分布式应用程序设计》,机械工业出版社。
虽然是一本讲VB开发的书(我不喜欢用VB),但其对COM+的探讨很有深度,不可多得,而且中译本译得还凑合。
此书讲到(中译本P326):“你应该避免在ASP Application变量中和SPM的共享资源中使用ADO记录集和ADO的Stream对象。因为它们的线程特性使得这样做是非常不尽人意的。在这些中间层变量中缓存XML文本总是安全的,因为这些数据不过是一个字符串而已。你的另一个选择是,把只读的XML数据加载到一个DOMFreeThreadedDocument对象中。该对象具有完善的线程性能,这就使得把它缓存到ASP Application变量中和SPM的共享资源中都是可以接受的。”
你的方法与Ted是基本一致的,而且给我一个很有益的思路。非常感谢!
不过我没有在MSDN上找到DOMFreeThreadedDocument的接口,因为我用VC做程序,VC没有对这个对象的直接支持。