使用双引擎,让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

原文地址:https://www.cnblogs.com/findumars/p/10204161.html

时间: 2024-10-16 17:10:48

使用双引擎,让kbmmw 的客户端访问更方便(既给浏览器做服务,也给桌面程序做服务)的相关文章

C# 免安装ORACLE客户端访问数据库

c#开发程序时,在没有安装oracle客户端时,访问数据库报 “System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本.” 在没有安装oracle客户端的情况下,可连接oracle数据库执行各种操作 使用方法: 将oci.dll.ociw32.dll.Oracle.DataAccess.dll.orannzsbb11.dll.oraocci11.dll.oraociicus11.dll.OraOps11w.dll拷到程序bin目录下 C# 免安装

16Exchange Server 2010跨站点部署-内部客户端访问配置

9.内部客户端访问 9.1 OWA方式访问 OWA的访问默认情况下是使用的HTTPS协议.也可以手动改为允许使用HTTP协议访问,基于安全性考虑,建议使用HTTPS.Exchange典型安装完成后即可以在内部直接使用Exchange OWA功能. 可以在这里修改SSL设置 取消要求SSL即可使用HTTP访问,这里不作测试 9.2 Outlook MAPI方式访问 如果是环境允许,强烈建议使用MAPI来访问邮箱,使用MAPI需要用到outlook客户端,在域环境下MAPI模式访问邮箱能够提高更大的

编写Web Service客户端访问www.webxml.com.cn提供的服务

Introduction  to lead/lag compensator 首先,compensator和controller有啥区别? 其实没有明确的界限,两者差不多.不必为这这个概念纠结 我找了一下关于这个问题一些人的看法,其中有很"流行"的解说 Lutz von Wangenheim · Hochschule Bremen Here is an excerpt from "G. Ellis, Control System Design Guide": &quo

Linux Samba目录服务搭建与Java客户端访问

前言: 本文比较简略,只求快速入门,若要了解详情,推荐一篇文章:http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html 1,安装samba(大部分linux上默认安装的可能不完整,建议重新安装) #检测是否安装,请注意不同安装包协议命令不尽相同#rpm -qa|grep samba #安装#yum install samba samba-client samba-swat 2,启动samba SMB服务 /etc/init.d/

Windows server 2012 搭建VPN图文教程(四)客户端访问VPN测试

Windows server 2012 搭建VPN图文教程(一)安装VPN相关服务 Windows server 2012 搭建VPN图文教程(二)配置路由和远程访问服务 Windows server 2012 搭建VPN图文教程(三)配置VPN访问账户 Windows server 2012 搭建VPN图文教程(四)客户端访问VPN测试 Part IV 客户端访问VPN测试 本部分主要介绍如何通过客户端访问VPN的方法.实验客户端操作系统为windows 8,以下是客户端配置VPN的步骤: 打

在连接windows2008时,报错:由于这台计算机没有远程桌面客户端访问许可证,远程会话被中断

前两天连接服务器的时候弹出:由于这台计算机没有远程桌面客户端访问许可证,远程会话被中断的对话框提示.前一段还在用都是好好的,怎么一下子就不行了呢?然后找了一下解决方案,解决方案很简单. 解决方案: 打开本机注册表,注册表子项:HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSLicensing,对,你没有看错,就是这个,不管他下面有没有东西,将整个子项删除.将MSLicensing删除. 但,原因是什么呢???

如何监听第三方应用程序(SOAP or RESTful 客户端)访问HTTPS网站时的数据?

随着互联网的应用越来越多,在我们的日常开发和调试当中(比如调试SOAP和RESTFul的时候),我们常常需要访问用第三方的工具访问HTTPS的网站,为了简化描述,本文使用IE浏览器访问Google 提供的https://www.googleapis.com/discovery/v1/apis RESTful服务为例,注意这个是基于https协议的访问,如果用第三方的嗅探工具,比如wiresharp,即使我们能把http的数据包抓到,显示出来的内容也是乱码,因为传送的内容经过了加密,而加密的私钥就

NFS客户端访问行为相关的几个参数解释

soft / hard Determines the recovery behavior of the NFS client after an NFS request times out. If neither option is speci- fied (or if the hard option is specified), NFS requests are retried indefinitely. If the soft option is speci- fied, then the N

SVN客户端访问URL失败--请求的名称有效,但是找不到请求的类型 (转载)

描述 给同事电脑装上SVN服务器,然后在本机连接SVN时总是报错"请求的名称有效,但是找不到请求的类型的数据".在网上找了一大堆解决方案都无果. 解决 最后发现原因竟是咱俩电脑不在一个工作组.他电脑选择的是公用网络,我是家庭网络,不在一工作组.后来统一设置成家庭网络就ok了... 参照贴文 http://blog.csdn.net/mengdonghui123456/article/details/47092309 在使用SVN客户端时遇到了个这样的问题:客户端访问服务端时输入对应的U