DataSnap REST Application开发 [技巧/经验/心得] 征集

CACACACACA 2011-01-07 12:43:57
加精
以前一直用D7,去年无意中去李维的BLOG逛了一次才注意到的.装上XE后,大体上试了试,感觉很不错.在CSDN上基本没有关于这方面的贴子,网上也很少.大都是转李维BLOG上的东西.就个人感觉,DataSnap REST Application是很好的东西.
不管一般的C/S程序还是DELPHI三层,可以更高效,更方便的组织/处理数据. 而且与ASP.NET, FLEX开发的WEB客户端都可以很好的通信.对于喜欢用DELPHI FANS来说,值得研究一下.

下面先说下基础性的东西,

DataSnap REST开发大体过程:

数据库读取数据->以JSON格式封装数据->通过HTTP(S)传输数据->接收数据->解析JSON格式数据->DBGRID(EDIT)显示数据

1. 从数据库读取数据.
关键类: TDBXReader, DBXCommand

举例:
DBXCmd := SQLConnection1.DBXConnection.CreateCommand;
DBXCmd.Text := 'select * from YourTable;
DBXReader := DBXCmd.ExecuteQuery;


2. 以JSON格式封装数据:
如果直接返回DBXReader. DELPHI会用JSON格式封装数据.

3. 传输数据
DLL/EXE这两种类型的CGI程序. 熟悉WebBroker的话,可以控制/微调一些行为.

4. 接收数据
DELPHI开发的客户端很容易接收了,ASP.NET等的WEB程序,需要相应的处理.

5. 解析JSON格式数据
不论是DELPHI还是WEB程序,应该都有解析JSON的类. DELPHI是在DBXJSON单元中有相关JSON类.

6. DBGRID(EDIT)显示数据
对于DELPHI开发者来说, 用DB控件还是EDIT,全凭个人喜好.
DBXJSONCommon单元中TDBXJSONTools类可以参考. 很容易将READER数据转到CLIENTDATASET中.

...全文
3576 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjcx994 2011-02-01
  • 打赏
  • 举报
回复
关注!
原创文章是有的


]Delphi2010中DataSnap高级技术 1-7
http://datasnap.5d6d.com/thread-14-1-2.html

DataSnap 2009 系列之1-3
http://datasnap.5d6d.com/thread-22-1-2.html

相信看了后,你们会觉得datasnap 真的很简单!

关于楼上有同学说到并发的问题,能把细节说说吗?
CACACACACA 2011-01-11
  • 打赏
  • 举报
回复
继续补充.

Delphi客户端如何将得到的DBXReader转到TClientDataSet.



DBXDBReaders.TDBXDataSetReader.CopyReaderToClientDataSet.

class procedure CopyReaderToClientDataSet(Reader: TDBXReader; Dataset: TClientDataSet); static;

zlcp520 2011-01-10
  • 打赏
  • 举报
回复
内容存入剪贴板
xuzhu3000 2011-01-10
  • 打赏
  • 举报
回复
huangkangg 2011-01-09
  • 打赏
  • 举报
回复
有点意思……
l111111222 2011-01-09
  • 打赏
  • 举报
回复
不错不错;;;;;;;;
H_Study_L 2011-01-09
  • 打赏
  • 举报
回复
要了解一下这个过程,再看一遍
lyh7736362 2011-01-08
  • 打赏
  • 举报
回复
以前一直用D7,去年无意中去李维的BLOG逛了一次才注意到的.装上XE后,大体上试了试,感觉很不错.在CSDN上基本没有关于这方面的贴子,网上也很少.大都是转李维BLOG上的东西.就个人感觉,DataSnap REST Application是很好的东西.
zkyEric 2011-01-08
  • 打赏
  • 举报
回复
这个技术我用过,很强大。
sunboyqq23 2011-01-08
  • 打赏
  • 举报
回复
不错不错;;;;;;;;
zhan7505201 2011-01-08
  • 打赏
  • 举报
回复
好帖。收藏。
hujingyu001 2011-01-08
  • 打赏
  • 举报
回复
任何技术的东西都是值得钻研的!
showjim 2011-01-08
  • 打赏
  • 举报
回复
CACACACACA 2011-01-07
  • 打赏
  • 举报
回复
2. 以JSON格式封装数据:
如果直接返回DBXReader. DELPHI会用JSON格式封装数据.
//-----------
补充一点东西.
直接返回Reader,对于DELPHI开发的客户端来说,处理很方便,如果是ASP.NET等开发的WEB程序,就需要自己去解析了. 当想让DataSnap REST尽快的返回数据时,这样就可以了. 如果不想在WEB端解析, 这时返回的类型最好自定义一下.
拿FLEX举例, FLEX中的HTTPService的result属性是个*(object)型的. 当赋值给FLEX中的DataGrid.Provider属性时,如果返回的Reader,是无法正常显示. 如果DataSnap REST返回里,返回一个VO项的数组就可以正常显示了.
haitao 2011-01-07
  • 打赏
  • 举报
回复
xml慢已经众所周知了
json的快,只是针对js吧,因为js可以调用自己的解释器直接分析json,而不是js代码去分析
其它语言使用json,效率可能与xml差不多了——因为两者的结构是类似的:都是树状层次存储的
wxgtc 2011-01-07
  • 打赏
  • 举报
回复
我只是来学习知识的
wdy100 2011-01-07
  • 打赏
  • 举报
回复
学习 学习 估计是好东西 但是用的人不多 不知道里面水多深!
dungeonsnd 2011-01-07
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
感谢LZ分享,一直用D7,
sunnyzhe 2011-01-07
  • 打赏
  • 举报
回复
谢啦谢啦,lz真好人
加载更多回复(8)

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧