(原)Lazarus 异构平台下多层架构思路、DataSet转换核心代码

摘要:
3.困扰了我两天的问题是,我编写了关于数据集处理的可行性测试代码。

背景:
1、很多情况下我们的终端与服务器是分离的,并且操作系统也可能会存在很大的不同。
2、近些年火爆的WebService技术和SaaS等概念也让我们的思想得以解放。
3、Lazarus是一款可以跨平台开发的工具,在精神上基本满足了我们Once Code愿望。
4、但Lazarus还存在很多的问题,即使原生的类、函数、过程也还会报错。
问题:
1、我需要做一个三层架构,实现WinCE(或Linux)终端进行数据采集处理。
2、涉及到跨网等情况不可能采用直连数据库的方式,而Lazarus对WebService又是一团糟。
3、我打算回到原始状态,建立三层架构(客户端、服务器、数据库)形式,客户端和服务器之间以Tcp方式进行数据交互。
4、Lazarus已经没有了TClientDataSet,经查找取而代之的是TMemDataset。
架构思路:
     1、服务器接收客户端请求,进行数据(与数据库交互)的处理,处理结果以流方式进行压缩、传输。
     2、客户端接收到流后进行解压、还原,进行本地化操作处理,将本地处理结果打包,发送至服务器。
 
核心技术:
1、Tcp传输,我采用lnet组件,因为它支持:Linux、Windows、Wince,参见我的另一个贴子,可以多线程处理事务。
2、DataSet网络传输,我打算做成XML再传,==吧想了很多方式但未实现,最后官网上看到了TMemDataset的介绍,用它解决了DataSet在服务器与客户端的类型化问题。
3、困扰了我两天的问题,下面是我写可行性测试代码关于DataSet处理的。
 
请各位笑纳:
 
procedure TFormMain.DataSetMethod();
var
   DSetSource,DSetObject:TMemDataset;
   streamSource,streamObject:TStream;
   str:String;
begin
   //发送端
   //进行原始数据集的处理
   DSetSource:=TMemDataset.Create(Self);
   DSetSource.FieldDefs.Add('NAME',ftString,20);
   DSetSource.CreateTable;
   DSetSource.Open;
   DSetSource.Append;
   DSetSource.FieldByName('NAME').Value:='aaa';
   DSetSource.Post;
   DSetSource.Append;
   DSetSource.FieldByName('NAME').Value:='bbb';
   DSetSource.Post;
   streamSource := TMemoryStream.Create;
   streamObject := TMemoryStream.Create;
   DSetSource.SaveToStream(streamSource);
   streamSource.ReadBuffer(str, streamSource.Size);          //从流读至串
   DSetSource.Close;
   //好了,在开始在这里写网络传输吧
   //这写了很多代码

   //接收端
   //进行目标数据处理
   streamSource.WriteBuffer(str, Length(str));               //从串写至流
   DSetObject.LoadFromStream(streamSource);
   DSetObject.Open;
   DBGridEmployee.DataSource.DataSet:=DSetObject;
end;
 
   欢迎各位留言交流。

免责声明:文章转载自《(原)Lazarus 异构平台下多层架构思路、DataSet转换核心代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在Ubuntu下部署Flask项目手把手教你写vue插件并发布(二)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用SyncNavigator轻松实现数据库异地同步、断点续传、异构同步

最近一直在研究数据库同步的问题,在网上查了很多资料,也请教了很多人,找到了一种通过快照复制的方法。研究了一番后发现之前就是用的这个方法,效果不是很好,果断放弃。经过了一番寻觅和他人指点,最后从一位热心网友那里得知一款很好用的软件—— SyncNavigator。 好东西就要拿出来跟大家分享,所以今天向大家介绍一下这款软件,及其一些使用方法。下面先看看它有...

基于OceanStor Dorado V3存储之精简高效 Smart 系列特性

基于OceanStor Dorado V3存储之精简高效 Smart 系列特性 1.1  在线重删 1.2  在线压缩 1.3  智能精简配置 1.4  智能服务质量控制 1.5  异构虚拟化 1.6  智能数据迁移 1.7  多租户 1.8  智能配额 在线重删(SmartDedupe) OceanStor Dorado V3 在线重复数据删除是指在...

“FPGA+云"助力高性能计算

用AI防鲨鱼、用AI学写中国书法、用AI预测人类死亡时间、用AI审判罪犯……在人工智能方兴未艾的今天,越来越廉价和普及的AI领域真的是什么都不值钱,除了想象力。那在这无所不能的AI盛世,一定没道理让算力限制我们的想象力,更没道理让算力限制了我们的生产力。 从CPU到CPU+,从+GPU到+FPGA 随着通用处理器(CPU)的摩尔定律已入暮年,从美国的微...

深入理解CPU和异构计算芯片GPU/FPGA/ASIC (下篇)

3.2.1 CPU计算能力分析 这里CPU计算能力用Intel的Haswell架构进行分析,Haswell架构上计算单元有2个FMA(fused multiply-add),每个FMA可以对256bit数据在一个时钟周期中做一次乘运算和一次加运算,所以对应32bit单精度浮点计算能力为:(256bit/32bit) 2(FMA) 2(乘和加) = 32 S...

lazarus跨平台编译步骤

1.推荐用fpcupdeluxe安装lazarus,从https://github.com/newpascal/fpcupdeluxe/releases/latest 下载适合的版本 建议FPC和Lazarus选择stable   安装成功后可以安装下面2个插件,Lazarus的界面就像delphi XE一样 安装插件前的界面和D7一样:  安装插...