zoukankan      html  css  js  c++  java
  • 使用双引擎,让kbmmw 的客户端访问更方便

    前面我们一直都讲了如何使用kbmmw smarthttpservice 给客户端提供REST  服务。主要都是返回给

    浏览器访问的,如果我们使用delphi 开发桌面应用,如何使用这些服务呢?其实一切都不是问题,kbmmw 除了

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

    我们今天就在以前的smarthttpservice 加上TCP 访问功能,最大的好处就是根本都用动原来的服务代码。

    首先我们在服务端,放一个kbmMWTCPServerTransport1。并设置其server 属性。(要使用kbmMWTCPServerTransport,

    记住在inc文件里面加上 {$DEFINE KBMMW_NATIVETRANSPORT_SUPPORT})

     

    然后检查一下我们前面设置的服务函数

       [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年元旦快乐,万事如意!




  • 相关阅读:
    2013-1-17 打开/关闭默认共享的命令
    2013-1-1遍历文件夹,改名文件
    2012-07-02 无边框最大化窗体
    2012-04-12 工具箱中添加自定义控件的方法
    2012-4-2 通过MdiParent设置窗体最前
    2012-2-7列举及终止进程
    python with as 以上这段代码执行完毕后,就算在处理过程中出问题了,文件 f 总是会关闭。
    终于好了 ipython 里执行dos命令 显示结果却显示在kernel界面里 搞定了
    Win7开启远程桌面
    哪位有方法把 dd/mm/yyyy的字符串 格式化成yyyy-mm-dd
  • 原文地址:https://www.cnblogs.com/xalion/p/10202871.html
Copyright © 2011-2022 走看看