2011/07/16

書評:Delphi in Depth: ClientDataSet

目前只大略的把這本書看過一次,如果看完第二次還有多的心得再補充一下

TClientDataSet真的是個很有潛力的元件

基本上,它就是BDE的延伸,很多語法和概念是繼承於它

它可以單打獨鬥,也可以多人合作(與Base DataSet搭配,如BDE、ADO、DBX等),相當萬用的一個元件,同時,它也是Midas / DataSnap架構的重要元件之一

要說它的缺點的話,應該就是它不支援SQL指令吧,例如像我想在已有資料的ClientDataSet裡做SQL查詢,就不能夠這樣使用

新手老手都能夠在這本書上看到很新鮮的東西
比方說:
新手可以從第一章看到第十章,進階在十一~十二章
老手可能就是看看十三~十五章,比較DataSnap新舊版本的差異和設計方針
(重點就是放在JSON啦!)
同時也能當工具書隨手翻翻

九到十二章是我相當少用的功能(好吧,我承認,我從來沒用過)
未來有機會我仍然會來挑戰這個功能,榨光ClientDataSet的極限吧!

2 則留言:

  1. 請問、當 ClientDataSet vs fdMemTable。以線下這年代,這本書還有深讀的價值嗎?
    (別誤會、我也是 CDS 長期愛用者)

    回覆刪除
    回覆
    1. ClientDataSet 和 fdMemTable 要解決的問題不一樣。

      以三層架構為例,同樣是跨平台:
      ClientDataSet 目標是離線處理的問題。
      fdMemTable 目標是提供快速的離線儲存。

      我的團隊是在中間層以 Delphi 處理屬於資料庫的 Trigger 和 Store Procedure。和 fdMemTable 相比,ClientDataSet 更符合我的需要,和資料庫相比,Delphi 程式在備份和邏輯移轉上更有優勢。

      以 Win32 來說,ClientDataSet 已經到了不再需要新東西的境界,現在我開發的是 Web,ClientDataSet 還有需要嗎?

      我的後端是 DBX,為了效率,我會採用 DBXReader 這類的元物件(類似 ADO 的 RecordSet 物件)處理 JSON 以加速送到客戶端。

      客戶端回來時,我使用 ClientDataSet 處理新增修改及刪除行為,輔以 Delta 建立相關 SQL,效率雖然會比固定邏輯的 API 要慢,但程式很好寫,效率也在可以接受的範圍內。

      fdMemTable 是比 ClientDataSet 更為先進的物件,它沒有許多 ClientDataSet 包袱,除了速度會比 ClientDataSet 更快之外,同時也強化了篩選等相關功能,在開發上會更為便利。

      現在,EMBT 在每一版的更新都有漸進地把 DataSnap 所需要的「包袱」加入 fdMemTable 中,可以期待有朝一 fdMemTable 取代 ClientDataSet。

      這本書可以在短時間對 CDS / fdMemTable 做一個「點」的全盤了解,深入和綜合應用還是得依照當下的環境思考它們要涉入多少成分,如果是簡單應用,或許一顆 TADOQuery 或 TfdQuery 就可以解決,期待你整合後的分享 😉

      刪除