2026/04/19

【Delphi 現代化轉型】Day 3:授權降階計畫:用 Horse 跑出 API,每人年省 $2,000+ 支出

作者:吳祐賓

 


 

 

 

『DataSnap 還能撐多久?』

這是我近幾年來讀者私訊我最多的一句話。

 

站在資深開發者與書籍作者的角度,我看見的是技術與財務的雙重枷鎖 ── 每年支付昂貴的 Enterprise 授權費用,卻換來一個不再進化的工具。

 

EMBT 已明確將 DataSnap 列為「僅維護」狀態,不再投入新功能。這意味著繼續使用,等同每年持續支付同樣高的授權費用,但卻累積越來越難轉移的技術債,並讓招募年輕開發者變得更加困難。 


身為 DataSnap 的資深信徒,我比任何人都更關注這套架構的長遠生命力,更何況我背負著曾經支持我「Delphi in Depth DataSnap 網站應用程式全端開發」一書的眾多讀者,我,有義務帶領信任我的讀者「走出埃及」。
 

我決定在此提出具體的『降階增效』方案。

 

這是我對信任我的讀者與Delphi 同好們的承諾,也是企業轉向輕量化、現代化架構的最佳時機。

 

為了不讓過去的技術累積變成長期的負資產,我透過這幾年的實戰驗證,歸納出一條低風險、高報酬的現代化路徑。這不是單純的技術更換,而是一場提升開發靈活性並立即優化軟體授權支出的戰略調整。 

 

經過這幾年的摸索,我研究後的結論為:以 Horse 框架取代 DataSnap 的核心 REST/JSON RPC 功能。

 

透過 Horse 框架,進行一場不傷筋骨的變革:保留商業邏輯,切斷高昂的授權代價。 

 

Horse 的設計概念貼近現代 Express.js 風格,只需幾個步驟,就能讓後端開發安全地從 Enterprise 降階到 Professional,直接省下每人每年數千美元的授權成本,同時讓程式碼更容易被新一代開發者接手。


實作環節

 

如果你是第一次看到這篇文章,建議可先閱讀系列文章,但這不妨礙本篇對技術的評估。 

 

 

 

建立新的 Delphi 專案

  1. 開啟 Delphi IDE

  2. 點擊選單 File > New > Console Application(Horse 非常適合開發 Console 模式的伺服器)

  3. 將專案存檔到一個資料夾中(例如 C:\D\horseDemos\

  4. 關閉 Delphi,因為 boss 設定路徑時會修改 .dproj 的 Search Path 和 Library Path 內容

 

 

建立新的 Delphi 專案

 

使用 Boss 進行專案初始化 

  1. 開啟【命令提示字元】進入前述專案資料夾目錄
  2. 輸入 boss init 進行 boss 初始化
  3. 期間的精靈介面詢問的問題皆以 Enter 輸入預設值


輸入 boss init 後的初始化過程


使用 Boss 安裝 Horse 套件

  • 輸入 boss install horse
  • 等待 boss 下載與安裝
  • 看到 Success 字樣即安裝完成 

 

 

輸入 boss install horse 後的安裝流程

 

開啟 Delphi 專案,並將 horse 導入

  1. 開啟一開始建立的 Delphi 專案,並輸入以下的 horse beginner code
  2. 按下 F9 執行,若看到 Windows Defender 安全性警示畫面,是因程式會在系統開啟 Port 來使用,故按【允許存取】即可
  3. 看到命令提示字元啟動黑畫面即代表啟動成功
  4. 執行 Chrome / Edge / Firefox 等任一瀏覽器,網址列輸入 http://localhost:9000/ping
  5. 看到 "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 技術文章的產出,有任何問題,都可在留言區分享討論。 

 




 

 

2 則留言:

  1. 希望後續可以看到使用 horse 串接資料庫的範例,謝謝

    回覆刪除
    回覆
    1. 請問您串接的對象是 js 前端(網頁/App)還是 Delphi 前端(VCL/FMX)?是希望以 FireDAC 還是 ADO 處理?

      因為不同的場合有其偏好的解決方式。

      刪除