使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务

简介: RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了 大家诟病的indy,因此表现的非常稳定,效率也非常高,深受很多人的追捧。

    RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了

大家诟病的indy,因此表现的非常稳定,效率也非常高,深受很多人的追捧。由于RTC 是从底层通讯做起的,因此通讯层的

功能非常强,但是在中间层数据库功能虽然有所实现,但是没有kbmmw 和RO 强,但是对于普通的远程调用做的非常优雅。

同时它重点在于使用http 协议实现功能调用,因此与kbmmw 的适合场合不完全一样。

   由于RTC 可以非常快速的建立一个webserver, 因此要实现basic4android 程序访问RTC 的http 非常方便,但是由于直接访问

http 文本,服务器端与客户端都要做解析,不但编码起来麻烦,而且容易出问题。RTC 没有提供和KBMMW 一样的Java 客户端,

只能通过别的方式使basic4android 直接访问RTC 的远程函数,经过研究,发现RTC 支持XMLRPC远程调用,好,就拿这个开刀吧。

找了一下basic4android 的网站,呵呵,找到我们要的东西了,XMLRPC Library。  下载后解包,放到basic4android 的lib 目录。

   现在回到delphi 里面,先做一个简单RTC 应用服务器。

在form 上放置四个rtc 的控件

   server: TRtcHttpServer;
    RtcServerModule1: TRtcServerModule;
    RtcFunctionGroup1: TRtcFunctionGroup;
    RtcFunction1: TRtcFunction;

并放置一个按钮

对应的属性:

注意要设置ModuleFileName 为test.

procedure TForm1.Button1Click(Sender: TObject);
begin
   server.Listen();
   Button1.Caption:='已启动';
   Button1.Enabled:=False;
end;

 rtcfunction1 的执行代码为

procedure TForm2.RtcFunction1Execute(Sender: TRtcConnection;
  Param: TRtcFunctionInfo; Result: TRtcValue);
var
  num,allnum:integer;
  mynum:TRtcArray;
  i: Integer;
begin
    mynum:=param.asArray['params'];
    num:=mynum[0];
    allnum:=0;
    for i := 1 to num do
     allnum:=allnum+i;
    result.asInteger:=allnum;

end;

好了,服务器代码完成,编译运行,并点击启动按钮。

客户端,我们就利用XMLRPC Library自身所带的 例子,稍微改动一下,以便于对应我们的服务器。

Sub Activity_Create(FirstTime As Boolean)
    If FirstTime Then
        XMLRPC1.Initialize("XMLRPC1")
    End If
    
    Activity.AddMenuItem("initXMLRPC","mnuXMLRPC")
    Activity.AddMenuItem("Call Method","mnuMethod")
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub mnuXMLRPC_Click
    XMLRPC1.initXMLRPCClient("http://192.168.1.105/test")
End Sub

Sub mnuMethod_Click
    'check whether x Is inside range 4..10
    Dim x As Int
    x = 100
    s=XMLRPC1.intCall("sumall",x)
   Msgbox(s,"")
    
    
     ' XMLRPC1.booleanCall3("isInside", x, 4, 10)
End Sub

好了,运行android 客户端,点击菜单,就会出现下面的界面。

 

好了,打完收工。

 

 

 

目录
相关文章
|
4天前
|
Android开发
Android应用实例(一)之---有道辞典VZ.0
Android应用实例(一)之---有道辞典VZ.0
10 2
|
1天前
|
移动开发 监控 Android开发
构建高效Android应用:Kotlin协程的实践与优化
【5月更文挑战第12天】 在移动开发领域,性能与响应性是衡量一个应用程序优劣的关键指标。特别是在Android平台上,由于设备的多样性和系统资源的限制,开发者需要精心编写代码以确保应用流畅运行。近年来,Kotlin语言因其简洁性和功能性而广受欢迎,尤其是其协程特性,为异步编程提供了强大而轻量级的解决方案。本文将深入探讨如何在Android应用中使用Kotlin协程来提升性能,以及如何针对实际问题进行优化,确保应用的高效稳定执行。
|
2天前
|
移动开发 API Android开发
构建高效Android应用:Kotlin协程的实践指南
【5月更文挑战第11天】 在移动开发领域,性能优化和资源管理是至关重要的。特别地,对于Android开发者来说,合理利用Kotlin协程可以极大地改善应用的响应性和稳定性。本文将深入探讨Kotlin协程在Android中的实际应用,包括它们如何简化异步编程模型、提高UI线程的响应性,以及减少内存消耗。我们将通过具体案例分析,了解如何在实际项目中有效地使用协程,从而帮助开发者构建更加高效的Android应用程序。
|
3天前
|
Java Android开发
Android开发--Intent-filter属性详解
Android开发--Intent-filter属性详解
|
3天前
|
物联网 Java 开发工具
安卓应用开发:打造未来移动生活
【5月更文挑战第10天】 随着科技的飞速发展,智能手机已成为我们日常生活中不可或缺的一部分。作为智能手机市场的两大巨头,安卓和iOS分别占据了一定的市场份额。在这篇文章中,我们将重点关注安卓应用开发,探讨如何利用先进的技术和创新思维,为用户打造更加便捷、智能的移动生活。文章将涵盖安卓应用开发的基本概念、关键技术、以及未来发展趋势等方面的内容。
|
3天前
|
开发工具 Android开发 Windows
Android应用] 问题2:ERROR: unknown virtual device name:
Android应用] 问题2:ERROR: unknown virtual device name:
|
3天前
|
XML JSON API
转Android上基于JSON的数据交互应用
转Android上基于JSON的数据交互应用
|
4天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
11 0
|
5天前
|
安全 Java Android开发
构建高效Android应用:采用Kotlin进行内存优化的策略
【5月更文挑战第8天】 在移动开发领域,性能优化一直是开发者关注的焦点。特别是对于Android应用而言,合理管理内存资源是确保应用流畅运行的关键因素之一。近年来,Kotlin作为官方推荐的开发语言,以其简洁、安全和互操作性的特点受到开发者青睐。本文将深入探讨利用Kotlin语言特性,通过具体策略对Android应用的内存使用进行优化,旨在帮助开发者提高应用性能,减少内存消耗,避免常见的内存泄漏问题。
8 0
|
6天前
|
Android开发 Kotlin
Kotlin开发Android之基础问题记录
Kotlin开发Android之基础问题记录
16 1