背景:
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;
 
   欢迎各位留言交流。

转载于:https://www.cnblogs.com/spymaster/archive/2011/03/02/1968981.html

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

  1. NHibernate 配置文件的处理和使用多数据库的多层架构思路(第二部分)

    二.数据访问层 这里演示了一个 一对多的例子: 两个表:事件表和日志表,事件表 (1: n) 日志表. 以下是两个实体类和对应的配置文件.我单独建了一个项目来存放它们,它们不算是数据访问层!数据访问层 ...

  2. 2020全国大学生数学建模A题思路讲解与核心代码

    2020全国大学生数学建模A题思路讲解与核心代码 题目 核心方法: 问题一 问题二 问题三和问题四 答案如下: 题目 核心方法: 热传导 有限差分法 遍历法 问题一 建立焊接区域中心温度变化规律模型, ...

  3. 企业大数据平台下数仓建设思路

    免费开通大数据服务:https://www.aliyun.com/product/odps 介然(李金波),阿里云高级技术专家,现任阿里云大数据数仓解决方案总架构师.8年以上互联网数据仓库经历,对系统 ...

  4. 首创一主多侧架构,比原链BaaS平台Bystack白皮书发布

    作者 | Apatheticco 经历了10年的高速发展,区块链已经成为政府.行业.企业等多方认可和推崇的创新技术,但还远没有达到成熟阶段. 随着区块链应用落地不断加速,公链.联盟链.私有链.区块链即 ...

  5. 今日头条架构演进之路——高压下的架构演进专题(含PPT)

    今日头条架构演进之路--高压下的架构演进专题(含PPT) 原创 2016-07-06 夏绪宏 高可用架构 导读:高可用架构在 6 月 25 日举办了『高压下的架构演进』专题沙龙,进行了闭门私董会研讨及 ...

  6. 今日头条架构演进之路——高压下的架构演进专题

    导读:高可用架构在前段时间举办了『高压下的架构演进』专题沙龙,进行了闭门私董会研讨及对外开放的四个专题的演讲,期望能促进业界应对峰值方法及工具的讨论,本文是 夏绪宏 介绍今日头条架构演进经验. 夏绪宏 ...

  7. 【软考系统架构设计师】2017下系统架构师案例分析历年真题

    [软考系统架构设计师]2017下系统架构师案例分析历年真题 2017下系统架构师案例分析历年真题 [软考系统架构设计师]2017下系统架构师案例分析历年真题 2017下系统架构师案例分析试题一(系统架 ...

  8. 三级综合医院数据集成平台建设与架构设计 | 实践分享

    1.医院数据集成平台建设的背景 国内大多数三级医院信息化起步于上世纪90年代初,至今发展有将近30年历史,主要分为四个阶段: 第一阶段,财务电子化模式:上世纪90年代中期,北上广的三甲医院已开始引入基 ...

  9. 电商平台中的架构实践

    从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流. 原文出处:http://blog.csdn.net/yangbutao/article/details/ ...

最新文章

  1. mysql root情况
  2. react如何获取option的下标和值_react中option标签如何确定selected?
  3. 使用Forms验证存储用户自定义信息
  4. Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员
  5. C语言 · 单词数统计
  6. 笑谈ArcToolbox (1) ArcToolbox 的发展方向
  7. for-in和for-of,forEach和Map
  8. 顶点计划:辅导员与学生关系讨论
  9. layui 弹窗自适应高度_layui弹框自适应高度
  10. java datagrid导出excel_Datagrid数据导出到Excel文件给客户端下载的几种方法
  11. onenote导入html文件,OneNote加入:获取HTML内容
  12. java中refresh是什么_浅析Spring IoC源码(三)分析refresh()方法前的准备篇(一)
  13. 七、常用类(高琪java300集+java从入门到精通笔记)
  14. 操作系统内核框架图整理
  15. 【CRM】ReferenceError: XXX is not defined at eval(eval at RunHandlerInternal)
  16. 机器人摘果子看图写话_二年级摘苹果看图写话范例
  17. 学会Python如何利用业余时间赚外快?分享几个接单途径
  18. powershell自定义字体
  19. seate底层原理_Seate
  20. Android 下使用 FFmpeg 命令行工具与问题排查

热门文章

  1. linux ctrl c 子进程,ctrl c会向Linux中的父进程和子进程发送SIGINT信号吗?
  2. java AST 表达式_Atitti.java exp ast java表达式语法ast构造器
  3. python三大神器_常用Python代码及花式写法(函数调用自身+三大神器)
  4. 自研分布式web漏洞扫描平台WDScanner
  5. 【机器学习-西瓜书】三、逻辑回归(LR);线性判别分析(LDA)
  6. pytorch学习笔记(三十八):Image-Augmentation
  7. RecSys Challenge 历年推荐赛题汇总
  8. NanoDet-Plus的学习笔记
  9. 循环赛日程安排(构造、分治)
  10. Eclipse中移除未使用的类引用的三种办法