程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> RO05,

RO05,

編輯:Delphi

RO05,


轉載:http://blog.csdn.net/henreash/article/details/2261134

本文檔向你展示如何使用RemObjects(Delphi版)創建第一個服務.讀了本文檔後你可以繼續讀相關文檔:

RO06:如何創建RemObjects客戶端(Delphi版).

注意:如果你安裝了.NET版請看RO45 和 RO46.

你可以把本文檔當作一個范例並牢記創建步驟. 本文相關項目完整代碼在文檔底部有下載連接.

選擇服務類型

第一步主要是選擇一個你要創建的服務類型.

  • 在Delphi IDE中點擊File | New | Other 切換到RemObjects SDK標簽.

如下圖 (隨著Delphi,Windows版本不同可能有些出入):

本例我們創建一個簡單的"VCL Standalone" 可執行服務.這是最簡單的一種服務,不需要任何Web服務和其他配置就可以運行.

  • 選擇"VCL Standalone" 點擊OK.

選擇項目選項

接下來的對話框中輸入項目的基礎選項如項目名稱和項目路徑.

關於更多有關Message類型信息請見RO07: Smart Services

  • Ctrl-F9 編輯項目.

RemObjects SDK 代碼生成器

按F9後會彈出一個對話框,選擇提供服務的類.

注意:
1) 如果已經安裝了Hydra,會看到Hydra Autoupdate Service選項
2) 最後兩個選項只有安裝了Data Abstract 才會出現.

  • 點擊OK繼續編譯.

完成後,項目將生成一個新單元(如下圖),並且屏幕下部的出現一個小窗口(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自動增加實現部分.

  • 選擇NewService_Impl.pas 單元完成Sum方法和GetServerTime方法:

function TNewService.Sum(const A: Integer; const B: Integer): Integer;

begin

result := A + B;

end;

function TNewService.GetServerTime: DateTime;

begin

result := Now;

end;

  • 按f9(或選擇RemObjects SDK | Launch Server Executable 菜單)啟動服務.

測試服務

現在服務已經運行了,我們來測試一下.

打開IE浏覽器錄入如下URL: http://localhost:8099/BIN

將出現XML文檔:

OK!服務成功運行並可以用於RO客戶端了.我們只是進行了對實際邏輯的編碼.

注意:如果你的浏覽器沒有顯示上圖的XML文檔,或許忘記將ROServer.Active設置為TRUE或輸入URL錯誤了.

附加

打開項目目錄,可以看到NewLibrary.rodl文件,其中內容由Service Builder工具維護.

  • 在Delphi中,點擊RemObjects SDK| Service Builder.

RemObjects 的 Service Builder 將啟動並加載NewLibrary.rodl 文件.

在這個工具中可以向服務中增加方法並自動修改NewLibrary.rodl文件. Sum 和GetServertime方法是每個RO服務項目生成時自動產生的默認方法.

提示: 這些方法是RO早期為便於新手學習加入的.你如果想修改這個行為也很簡單. 在Windows資源管理器中,找到../ RemObjects SDK for Delphi/Templates 目錄雙擊$svclibname.rodl 文件.將調用Service Builder,從中刪除掉這兩個方法.

現在需要創建調用這個服務的客戶端了,見RO06.

  • 如下圖設置 Project FolderProject Name as shown below (當然你也可以根據需要設置其他值) :

提示:向導已經為我們自動的將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).

基於本文檔的目的,我們保持高級項目選項的默認設置.

  • 不勾選 'Also create a matching client application and a project group'(同時生成匹配的客戶端程序和一個項目組)

通常,你希望直接創建客戶端應用程序,但是你也需要知道如何創建簡單的客戶端應用,相應的我們將在RO06中展示.

  • 點擊OK, 創建服務端應用.

激活服務

項目已經創建,主窗體顯示在Delphi IDE中. 在窗體的上面有兩個按照我們在向導中選擇的Server CLASS和Message CLASS而自動生成的控件.

  • 點擊ROServer組件並設置其Active屬性為TRUE.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved