使用双引擎,让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(,);
memo1.Lines.Add('AddNumbers(34,7)='+ s ); end;
运行结果
全部正确。
这样我们就实现了kbmmw 服务器的 REST+TCP 双引擎。
再过几个小时2018年就过去了,在此我祝大家2019年元旦快乐,万事如意!
使用双引擎,让kbmmw 的客户端访问更方便的更多相关文章
- 使用双引擎,让kbmmw 的客户端访问更方便(既给浏览器做服务,也给桌面程序做服务)
前面我们一直都讲了如何使用kbmmw smarthttpservice 给客户端提供REST 服务.主要都是返回给 浏览器访问的,如果我们使用delphi 开发桌面应用,如何使用这些服务呢?其实一切 ...
- 使用kbmmw 生成客户端delphi函数原型
前面我们讲了使用swagger 生成java,php 的客户端调用函数原型. 对于delphi,其实很遗憾,不能直接生成客户端函数原型代码. 不要紧,解铃还须系铃人,既然是kbmmw 自己生成的,我们 ...
- Linux Samba目录服务搭建与Java客户端访问
前言: 本文比较简略,只求快速入门,若要了解详情,推荐一篇文章:http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html 1,安装sa ...
- [原创]用windows7连接windows2003的终端服务器时,出现"由于这台计算机没有远程桌面客户端访问许可证,远程会话被中断"的问题
用windows7连接windows2003的终端服务器时,出现"由于这台计算机没有远程桌面客户端访问许可证,远程会话被中断"的问题,原因是终端服务器授权方式设置为了"每 ...
- Windows Azure Virtual Network (10) 使用Azure Access Control List(ACL)设置客户端访问权限
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的China Azure. 我们在创建完Windows Azure Virtual Machi ...
- Spring之在客户端访问RESTful业务
Spring之在客户端访问RESTful业务 RestTemplate 是客户端访问RESTful业务的核心类.在概念上与Spring其他的模板类相似,比如JdbcTemplate和JmsTempla ...
- C#完全无客户端访问Oracle
网上太多的C#无客户端访问oracle案例,经我测试无一成功,特将我在oracle官网上和自己琢磨总结,终于成功,废话不多说,直接上项目. 一,准备条件 (由于我这里是用的控制台程序来测试的,所以将上 ...
- 客户端访问WebService和PageMethod
客户端访问WebService 客户端访问WebService和后台访问WebService没什么不同,注意的地方是要在ScriptManager中添加 <Services> ...
- 问题-XE8客户端访问Webservice时报“no selected dom vendor”
问题现象:XE8做的客户端访问XE8做的Webservice时,客户端报“no selected dom vendor”. 问题原因:原因不明,应该是用到了XML转换等方法吧.有高手了解的,请M我. ...
随机推荐
- 关于在centos6 + grub的旧版本中,如何关闭CPU throttling
由于个人需求,要编译安装ATLAS库,其中就有关闭CPU throttling的步骤, 最常规简单的方法是修改grub /etc/default/grub/ 之后再接一些简单的步骤 + 重启就完成了. ...
- 调试HDF0308-A50的相机驱动。
使用rk3128做为主芯片: 使用andriod5.1-sdk软件包. 1.在rk3128-86v.dts 中加入头文件 #include "rk3128-cif-sensor.dtsi&q ...
- 移动端ios下H5的:active样式失效的解决方法
在body上绑定一个touchstart事件,空函数就行: document.body.addEventListener('touchstart', function(){}, false) 或者在b ...
- channel_v3.json
channel_v3.json 下载地址:https://pan.baidu.com/s/1qRgQXiYD2-6MjTb3B3mIBg 源文件地址:https://raw.githubusercon ...
- HTTP 学习心得
一.什么是HTTP? 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的 ...
- fair scheduler配置
<property> <name>yarn.resourcemanager.scheduler.class</name> <value>or ...
- webpack 4.0配置2
上个博客记录了webpack 的基本配置今天主要是css-loader的介绍,包括单独提出css,压缩css.js文件 这里使用的插件npm 地址:https://www.npmjs.com/pack ...
- 每日笔记-redis的理解及相关应用
原文链接:常见面试题 本文大纲与之类似,在其基础上加入了自己在实际项目中对部分知识点的理解 Q1:谈谈对redis的理解 Q2:谈谈实际应用中怎么用redis的 2.1 缓存 2.2 分布式锁 2.3 ...
- vim字符查找和替换
一.替换 1. r+<待替换的字母> 将光标处的字母替换为指定的字母 2.R 连续替换直到按下ESC 3.cc 整行替换,并进入插入模式 4.cw 替换 ...
- 微信小程序开发——使用mock数据模拟api请求
前言: 微信小程序开发中,后端提供了接口设计文档,前端可以先mock数据模拟api请求进行开发调试,而且可以根据需要设计mock文件的格式和内容,这样在后端接口开发完成之前,前端可以最大限度的完成前端 ...