正文

怎样在三层结构的系统中对应用程序服务器传出的数据压缩?2010-04-23 21:00:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/jianfeihua/50988.html

分享到:

转自:http://topic.csdn.net/t/20020708/15/858595.html我把图形文件(TiF格式)存放在SQl   Server数据库中,当时我要在客户端取时速度很慢(3-4秒),我想通过实现IDataIntercept接口,来压缩图像,该怎样实现。 我不知道,不过delphi中有demo的.我想,如果你在客户端用了clientdataset,在服务端用了datasetprovider,那你可以在   datasetprovider的OnGetData事件中,对图像进行压缩,然后在ClientDataSet的AfterGetRecords事件中,对图像进行解压。你的想法不错,我觉得我的系统也可以用这样的方法提高效率,能不能告说我你准备用什么方式对数据进行压缩?也许我们可以继续交流一下?用IDataIntercept的方式也不错,有空我也研究一下。实现IDataIntercept的方法不错.     我做过,但只是用于SocketConnection.它只需要实现两个方法,     1,数据进,   在里面实现解压.     2,数据出,   在里面实现压缩.         理解了就简单,具体代码可以从DEMO改写..   按下面的步骤,就可以了,不用去写代码,记住,它是内置的功能,只要如下配置即可。     1:     准备工作,先delphi光盘中的\info\extras\zlib\zlib.pas进行编绎,然后copy   到lib路径中,因为要压缩数据,必须要有压缩功能,这个delphi已经自带,它是基于流的方式对接口IDataBlock(TDataBlock实现,其实就是对TMemoryStream的操作)数据进行压缩和解压的。做了这个后,才能进行下面的工作。     2:     Open   \Demos\Midas\Intrcpt\Intrcpt.dpr       complier....     生成Intrcpt.dll       将Intrcpt.dll   copy   to   System   directory,或者你的程序下面。     注册它:regsrvr32   Intrcpt.dll     记住Intrcpt.dpr的那个GUID         3:     Server:       Open   scktsrvr.exe,相信各位都很熟悉那界面,端口(TListbox),Thread   Cache   Size(TEdit),   GUID(TEdit),好,我们要做的事,就是将注册的Intrcpt.dll那个GUID填到这个GUID(TEdit)框框中,     只需填自己程序的的那个端口的GUID啊,记住:是自已使用的那个端口。OK,Apply.         Client:     你写的程序中肯定有TSocketConnection,它有个属性InterceptGUID:   string;好了,将Intrcpt.dll的GUID填上去,它是跟Server中的一样的。OK.还有别忘了,Regsrvr32   intrcpt.dll   在你的客户端。不然,程序虽不会raise,但是Server传过来的数据是压缩的....             IDataIntercept接口只为TSocketConnection而做,DCOM不支持,只能自已写,在发送和接收的时候

阅读(1687) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册