作者:吳祐賓
『DataSnap 還能撐多久?』
這是我近幾年來讀者私訊我最多的一句話。
站在資深開發者與書籍作者的角度,我看見的是『技術與財務的雙重枷鎖』 ── 每年支付昂貴的 Enterprise 授權費用,卻換來一個不再進化的工具。
EMBT 已明確將 DataSnap 列為「僅維護」狀態,不再投入新功能。這意味著繼續使用,等同每年持續支付同樣高的授權費用,但卻累積越來越難轉移的技術債,並讓招募年輕開發者變得更加困難。
身為 DataSnap
的資深信徒,我比任何人都更關注這套架構的長遠生命力,更何況我背負著曾經支持我「Delphi in Depth DataSnap 網站應用程式全端開發」一書的眾多讀者,我,有義務帶領信任我的讀者「走出埃及」。
我決定在此提出具體的『降階增效』方案。
這是我對信任我的讀者與Delphi 同好們的承諾,也是企業轉向輕量化、現代化架構的最佳時機。
為了不讓過去的技術累積變成長期的負資產,我透過這幾年的實戰驗證,歸納出一條低風險、高報酬的現代化路徑。這不是單純的技術更換,而是一場提升開發靈活性並立即優化軟體授權支出的戰略調整。
經過這幾年的摸索,我研究後的結論為:以 Horse 框架取代 DataSnap 的核心 REST/JSON RPC 功能。
透過 Horse 框架,進行一場不傷筋骨的變革:保留商業邏輯,切斷高昂的授權代價。
Horse 的設計概念貼近現代 Express.js 風格,只需幾個步驟,就能讓後端開發安全地從 Enterprise 降階到 Professional,直接省下每人每年數千美元的授權成本,同時讓程式碼更容易被新一代開發者接手。
實作環節
如果你是第一次看到這篇文章,建議可先閱讀系列文章,但這不妨礙本篇對技術的評估。
建立新的 Delphi 專案
開啟 Delphi IDE
-
點擊選單 File > New > Console Application(Horse 非常適合開發 Console 模式的伺服器)
-
將專案存檔到一個資料夾中(例如
C:\D\horseDemos\) -
關閉 Delphi,因為 boss 設定路徑時會修改
.dproj的 Search Path 和 Library Path 內容
|
| 建立新的 Delphi 專案 |
使用 Boss 進行專案初始化
- 開啟【命令提示字元】進入前述專案資料夾目錄
-
輸入
boss init進行 boss 初始化 - 期間的精靈介面詢問的問題皆以 Enter 輸入預設值
![]() |
| 輸入 boss init 後的初始化過程 |
使用 Boss 安裝 Horse 套件
- 輸入 boss install horse
- 等待 boss 下載與安裝
- 看到 Success 字樣即安裝完成
![]() |
| 輸入 boss install horse 後的安裝流程 |
開啟 Delphi 專案,並將 horse 導入
- 開啟一開始建立的 Delphi 專案,並輸入以下的 horse beginner code
- 按下 F9 執行,若看到 Windows Defender 安全性警示畫面,是因程式會在系統開啟 Port 來使用,故按【允許存取】即可
- 看到命令提示字元啟動黑畫面即代表啟動成功
- 執行 Chrome / Edge / Firefox 等任一瀏覽器,網址列輸入 http://localhost:9000/ping
- 看到 "pong" 字樣即大功告成
program horseSrvr;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, Horse;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
// 定義一個簡單的 GET 路由
THorse.Get('/ping',
procedure(Req: THorseRequest; Res: THorseResponse)
begin
Res.Send('pong');
end);
// 啟動伺服器,監聽 9000 端口
THorse.Listen(9000);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
![]() |
| Windows Defender 會阻擋需要開啟 Port 的應用程式,記得按下允許存取鍵 |
![]() |
| 輸入網址後,就可以看到第一個 horse 現代後端服務啟動 |
這 20 幾行程式碼所實現的功能,在 DataSnap 中需要處理複雜的引導精靈與大量的背景單元,現在可以輕鬆掌握了每一行程式碼的意圖。
使用 horse,擺脫高昂枷鎖的開始
和 DataSnap 相比,幾行 Code 就能擺脫枷鎖,省下那 $2,000 授權費的關鍵竅門。
當時 DataSnap 設立之初,就是為了做 Enterprise 應用,現在 DataSnap 被廢止開發,最核心的功能被廢了一大半,那麼, Enterprise 還剩什麼?
Enterprise 對我來說剩下 FireDAC 提供的企業級資料庫驅動程式的功能,如 Oracle、Mircosoft SQL Server 等
這部份我是以 dbExpress + Devart driver 進行維護主軸,故 FireDAC 對我的誘因不足。
各位從這三篇技術文章,可以看出,技術選型的重要與開發工具商的承諾的重要性。
在 AI 快速驅動開發轉型的時代,我們不能再被舊時代的授權合約與框架綁架。
透過 Horse,可以實現了財務上的『降階增效』,更讓團隊的技術棧與全球主流的 RESTful 架構接軌。
不只是省錢,更是為了確保當企業需要招募新一代開發者時,能給出的是一張通往未來的門票,而非歷史的包袱。
人的未來性,才是用人留人的根本,您說是吧!
未來會有更多關於 horse 技術文章的產出,有任何問題,都可在留言區分享討論。






希望後續可以看到使用 horse 串接資料庫的範例,謝謝
回覆刪除請問您串接的對象是 js 前端(網頁/App)還是 Delphi 前端(VCL/FMX)?是希望以 FireDAC 還是 ADO 處理?
刪除因為不同的場合有其偏好的解決方式。