1. 程式人生 > >使用雙引擎,讓kbmmw 的客戶端訪問更方便(既給瀏覽器做服務,也給桌面程式做服務)

使用雙引擎,讓kbmmw 的客戶端訪問更方便(既給瀏覽器做服務,也給桌面程式做服務)

前面我們一直都講了如何使用kbmmw smarthttpservice 給客戶端提供REST  服務。主要都是返回給

瀏覽器訪問的,如果我們使用delphi 開發桌面應用,如何使用這些服務呢?其實一切都不是問題,kbmmw 除了

有強大的smartservice,也有強大的smartclient 。

我們今天就在以前的smarthttpservice 加上TCP 訪問功能,最大的好處就是根本都用動原來的服務程式碼。

首先我們在服務端,放一個kbmMWTCPServerTransport1。並設定其server 屬性。

 

 

然後檢查一下我們前面設定的服務函式

複製程式碼
   [kbmMW_Rest('method:$(service.xalionrest.helloworld.method=post), path:$(service.xalionrest.helloworld.path=helloworld)')]
    // [kbmMW_Method] 註釋了這個客戶端就不能訪問了
     function HelloWorld:string;

     [kbmMW_Rest('method:get, path:version')]
     [kbmMW_Method]
     function version:string;

     [kbmMW_Method('EchoString')]       // 迴應輸入的串
     [kbmMW_Rest('method:get, path: ["echostring/{AString}","myechostring/{AString}" ]')]
     [kbmMW_Auth('role:[SomeRole,SomeOtherRole], grant:true')]
     function EchoString([kbmMW_Rest('value: "{AString}"')] const AString:string):string;

     [kbmMW_Method]
     [kbmMW_Rest('method:get, path: "cal/addnumbers"')]
     function AddNumbers([kbmMW_Rest('value: "$arg1", required: true')] const AValue1:integer;
                         [kbmMW_Rest('value: "$arg2", required: true')] const AValue2:integer;
                         [kbmMW_Arg(mwatRemoteLocation)] const ARemoteLocation:string):string;
複製程式碼

注意 加了[kbmMW_Method] 這個屬性,客戶端就可以訪問。

加了[kbmMW_Rest('method:get, path:version')] 保證使用REST 方式訪問。

伺服器端就好了,執行就可以了。


現在我們來做客戶端,這個更簡單
放上對應的控制元件,如圖:

記住要加上單元 kbmMWSmartClient,kbmMWSmartClient,

 
 
 
  複製程式碼
  
 
procedure TForm1.Button1Click(Sender: TObject);
var
   c:IkbmMWSmartClient;
    s:string;

begin
     Transport.Host:=eIP.Text;

     // 通過給定的transport來建立一個客戶端
     c:=TkbmMWSmartRemoteClientFactory.GetClient(Transport,'XALIONREST');
     //呼叫伺服器端的服務
     s:=c.Service.EchoString('abc');

    memo1.Lines.Add('EchoString(''abc'')='+ s );
    s:=c.Service.version;
    memo1.Lines.Add('version='+ s );
    s:=c.Service.AddNumbers(34,7);
    memo1.Lines.Add('AddNumbers(34,7)='+ s );
 
end;
複製程式碼
 

執行結果

全部正確。

這樣我們就實現了kbmmw 伺服器的 REST+TCP 雙引擎。

再過幾個小時2018年就過去了,在此我祝大家2019年元旦快樂,萬事如意!

https://www.cnblogs.com/xalion/p/10202871.html