轉載:http://blog.csdn.net/henreash/article/details/2261134
本文檔向你展示如何使用RemObjects(Delphi版)創建第一個服務.讀了本文檔後你可以繼續讀相關文檔:
RO06:如何創建RemObjects客戶端(Delphi版).
注意:如果你安裝了.NET版請看RO45 和 RO46.
你可以把本文檔當作一個范例並牢記創建步驟. 本文相關項目完整代碼在文檔底部有下載連接.
選擇服務類型
第一步主要是選擇一個你要創建的服務類型.
如下圖 (隨著Delphi,Windows版本不同可能有些出入):
本例我們創建一個簡單的"VCL Standalone" 可執行服務.這是最簡單的一種服務,不需要任何Web服務和其他配置就可以運行.
選擇項目選項
接下來的對話框中輸入項目的基礎選項如項目名稱和項目路徑.
關於更多有關Message類型信息請見RO07: Smart Services
RemObjects SDK 代碼生成器
按F9後會彈出一個對話框,選擇提供服務的類.
注意:
1) 如果已經安裝了Hydra,會看到Hydra Autoupdate Service選項
2) 最後兩個選項只有安裝了Data Abstract 才會出現.
完成後,項目將生成一個新單元(如下圖),並且屏幕下部的出現一個小窗口(D6)或在消息面板上顯示生成代碼信息(D7).
在後台,RemObjects預處理程序分析NewLibrary.rodl 文件 (在創建項目的時候生成的). 預處理程序尋找沒有實現單元的服務,並為其創建實現單元.
生成了三個文件:
1. NewLibrary_Invk.pas: 包含所有內部調用代理.在每次編譯都重新生成,只用於服務端.
2. NewLibrary_Intf.pas: 用於服務端和客戶端的服務接口. 再次提示,這是根據需要自動生成的文件,在上面所做的修改可能會被覆蓋.
3. NewService_Impl.pas: 包含服務的實現,在此輸入我們的邏輯代碼.與其它兩個文件不同這個文件不自動生成.如果你更新了服務 (例如通過菜單RemObjects SDK | Edit Service Library如下圖), 編譯後將報缺少方面的錯誤.將接口的聲明函數拷貝到類中並按下Ctrl+Shift+C自動增加實現部分.
function TNewService.Sum(const A: Integer; const B: Integer): Integer;
begin
result := A + B;
end;
function TNewService.GetServerTime: DateTime;
begin
result := Now;
end;
測試服務
現在服務已經運行了,我們來測試一下.
打開IE浏覽器錄入如下URL: http://localhost:8099/BIN
將出現XML文檔:
OK!服務成功運行並可以用於RO客戶端了.我們只是進行了對實際邏輯的編碼.
注意:如果你的浏覽器沒有顯示上圖的XML文檔,或許忘記將ROServer.Active設置為TRUE或輸入URL錯誤了.
附加
打開項目目錄,可以看到NewLibrary.rodl文件,其中內容由Service Builder工具維護.
RemObjects 的 Service Builder 將啟動並加載NewLibrary.rodl 文件.
在這個工具中可以向服務中增加方法並自動修改NewLibrary.rodl文件. Sum 和GetServertime方法是每個RO服務項目生成時自動產生的默認方法.
提示: 這些方法是RO早期為便於新手學習加入的.你如果想修改這個行為也很簡單. 在Windows資源管理器中,找到../ RemObjects SDK for Delphi/Templates 目錄雙擊$svclibname.rodl 文件.將調用Service Builder,從中刪除掉這兩個方法.
現在需要創建調用這個服務的客戶端了,見RO06.
提示:向導已經為我們自動的將Message組件關聯到了ROServer組件的Disneypatchers集合屬性中了.如果要添加不同的Message組件,要保證將其關聯到ROServer的Dispatcher項:
注意:
1) 新服務向導勾選框:本對話框中也將用於DA中.這時,第二個勾選框將可用,便於控制DA服務向導.當直接從RO啟動時這個勾選框總是不可用的.
2) 高級項目選項:允許更精細的控制生成代碼.最希望修改的是服務庫名稱(Service Library Name) (默認= NewLibrary) 和服務類(Server Class) (NewService).如果你的服務不是為RO客戶端創建的,可能你希望修改Message Class為SOAP, XML-RPC或 PostMessage (默認是高效的BinMessage).
基於本文檔的目的,我們保持高級項目選項的默認設置.
通常,你希望直接創建客戶端應用程序,但是你也需要知道如何創建簡單的客戶端應用,相應的我們將在RO06中展示.
激活服務
項目已經創建,主窗體顯示在Delphi IDE中. 在窗體的上面有兩個按照我們在向導中選擇的Server CLASS和Message CLASS而自動生成的控件.