论DELPHI三层的数据序列格式的变化
论DELPHI三层的数据序列格式的变化
要窥三层的数据序列格式,我们可以通过观察DELPHI官方的客户端内存表。
早先流行的是TClientDataSet,它的Data和Delta属性的数据类型都是:OleVariant。
OleVariant其实是微软公司为COM和COM+战略定义的统一的数据序列格式。
早年DELPHI的三层架构就是建立在COM的基础之上的,数据序列自然也就使用OleVariant。
随着软件COM战略的失败,微软公司已经放弃COM战略,现在改为.NET战略了。
DELPHI随之也改变了三层的架构,推出了全新的三层框架:DATASNAP。
全新的FireDac数据引擎,这是一个跨平台的引擎。
相应的客户端内存表,现在主推FDMemTable,它的Data和Delta属性的数据类型都是:IFDDataSetReference。
property Data: IFDDataSetReference read GetData write SetData;
property Delta: IFDDataSetReference read GetDelta;
IFDDataSetReference居然是一个接口类型,这是许多人第一次见所发出的感叹!
IFDDataSetReference = interface (IUnknown)
['{3E9B315B-F456-4175-A864-B2573C4A2400}']
function GetDataView: TFDDatSView;
property DataView: TFDDatSView read GetDataView;
end;
然而它确实是个接口。没错的。那么,FDMemTable序列的数据类型倒底是什么?这是许多人的疑惑。
答案,我们可以通过看DELPHI官方的DEMO来一一揭晓。
TFDJSONDataSets类型:DATASNAP远程方法支持返回的数据类型,可用于查询返回N个数据集的数据。然而,它只支持WINDOWS服务器。
TFDJSONDeltas类型:DATASNAP远程方法支持的输入参数的数据类型,可用于客户端提交N个数据集的修改后的数据。然而,它只支持WINDOWS服务器。
现在,DELPHI处在物联网AI时代,跨平台是趋势。那么什么是DATASNAP跨平台的数据序列类型呢?
答案是:TStream。没有之一。
TClientDataSet 和OleVariant已经不能适应这个时代,它们已经随风远去,将逐渐从人们的眼线中消逝!
论DELPHI三层的数据序列格式的变化的更多相关文章
- DATASNAP数据序列之FIREDAC的TFDJSONDataSets
DATASNAP数据序列之FIREDAC的TFDJSONDataSets DELPHI XE5开始增加了新的数据引擎——FIREDAC,它是跨平台的数据引擎,WINDOWS.LINUX.MAC.APP ...
- IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习
相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...
- Delphi三层网络架构代码实现
Delphi三层网络架构代码实现 1 .三层网络的概念 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为: 表现层(UI).业务逻辑层(BLL).数据访 ...
- 数据交换格式与SpringIOC底层实现
1.数据交换格式 1.1 有哪些数据交换格式 客户端与服务器常用数据交换格式xml.json.html 1.2 数据交换格式应用场景 1.2.1 移动端(安卓.iOS)通讯方式采用http协议+JSO ...
- Delphi三层开发小技巧:TClientDataSet的Delta妙用
Delphi三层开发小技巧:TClientDataSet的Delta妙用 转载 2014年10月13日 09:41:14 标签: 三层 / ClientDataSet 318 from :http:/ ...
- delphi 三层架构简单例子(经测试成功)
delphi 三层架构简单例子(经测试成功) 转载 2013年12月19日 09:48:57 1100 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服 ...
- 优秀的数据序列和还原类----TSimpleMsgPack
优秀的数据序列和还原类----TSimpleMsgPack TSimpleMsgPack是D10天地弦的作品. 优点:至简,就一个单元文件实现,不需要引用其他单元. 缺点:不是标准的MSGPACK实现 ...
- JSON --- 一种轻量级的数据交换格式
目录 1. 语法 2. 解析与序列化 JSON.stringify( jsData[, filter, indent] ) JSON.parse( jsonData[, reduction]) JSO ...
- H264的RTP负载打包的数据包格式,分组,分片
H264的RTP负载打包的数据包格式,分组,分片 1. RTP数据包格式 RTP报文头格式(见RFC3550 Page12): 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 ...
随机推荐
- gentoo系统安装
1. Gentoo常用镜像 ===>http://www.linuxsir.org/bbs/thread263600.html 2. 安装方式1 http://www.linuxidc.co ...
- PHP+mysql系统报错:PHP message: PHP Warning: Unknown: Failed to write session data (files)
PHP+mysql系统报错:PHP message: PHP Warning: Unknown: Failed to write session data (files) 故障现象,后台页面点击没有 ...
- ASP.NET应用技巧:非托管COM组件的使用
众所周知,asp.net是基于通用语言运行库创建的,也就是所谓的托管执行环境.生成的代码称为托管代码.编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息.而我们编写的组件 ...
- Android工程方法数超过65535的解决办法
Error:Execution failed for task ':ttt:transformClassesWithDexForDebug'.com.android.build.api.transfo ...
- Simple Web API Server in Golang (2)
In this challenge, I tried to implement a simple OAuth2 server basing on Simple Web API Server in [1 ...
- element-ui 日期选择范围限制,只允许选择上下浮动一个月内的日期
<el-date-picker class="filter-item" type="daterange" value-format="yyyy- ...
- CSS------制作一个带+-的input框
如图: 代码:(div和input之间要连续写在一起,不能换行) <div style="font-size:36px;margin-top:30px"> <di ...
- 启动spark集群
启动Spark集群 spark@master $ ./sbin/start-all.sh 也可以一台一台启动,先启动 master spark@master $ ./sbin/start-master ...
- P1855 榨取kkksc03 二维费用背包
Kkksc03的时间和金钱是有限的,所以他很难满足所有同学的愿望.所以他想知道在自己的能力范围内,最多可以完成多少同学的愿望? 输入输出格式 输入格式: 第一行,n M T,表示一共有n(n<= ...
- 010 使用jquery实现小需求练习-------对应选择器的练习
1.需求 点击所有的 p 节点, 能够弹出其对应的文本内容 使第一个 table 隔行变色 点击 button, 弹出 checkbox 被选中的个数 2.程序 <!DOCTYPE html&g ...