初试RemObjects SDK

本文介绍如何使用RemObjects SDK快速搭建一个简单的计算器服务,包括服务器端与客户端的实现过程。通过创建服务库、定义服务方法及客户端调用等步骤,展示了该框架在远程对象访问方面的高效性和易用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            RemObjects SDK是一个先进的远程框架,允许你通过网络远程地访问驻留在服务器上的对象。RemObjects SDK允许你开发客户/服务应用程序,利用高优化性能的Smart Services或跨平台兼容性的标准Web Services,使客户端和服务器端轻松高效的通讯。

一、简单的计算器示例程序

在安装完RO后(以6.0.57.993为例),首先请开启New  Items对话框(File —> New —> Other),切换到RemObjects SDK选项(如图1所示),其内的项目可以帮助我们快速的产生骨架程序:

图1

这里选择VCL Standalone(基于VCL的独立服务器程序),按下OK按钮,进入向导界面,如下图(图2)所示:

图2

点击图2中的【Advanced Project Options...】按钮进入高级选项设置,如图3所示:

图3

下表是这个窗口的字段说明:

字段说明
Project Name项目名称
Service Library NameLibrary的名称
Service NamService的名称
Server Class通讯协议,见Server类组件
Message Class讯息协议,见Client类组件
Project Folder项目的存放路径

输入必要的信息后按下OK按钮就完成了骨架程序的建立工作了,这个程序已经包含所有必须用到的组件,接下来只需要启动Delphi IDE主菜单上的RemObjects SDK—>Edit Service Library(图4)工具定义服务器的方法即可完成Server端的程序:

图4

RO 默认会帮使用者产生两个方法,一个是Sum、另一个是GetServerTime(不要都不行,如图5所示)。

图5

为求简单,这里直接运用这两个方法,不做任何的变动。请将RemObjects Service Builder关闭后编译这个项目,此时RO 会跳出一个对话窗框(如图6所示)询问是否产生Service的定义与实现,请选择是,并且在编译完成后切换到CalcService_Impl.pas加入这两个方法的实现代码

图6

{ CalculatorService }
function TCalculatorService.Sum(const A: Integer; const B: Integer): Integer;
begin
  Result := A + B;
end;

function TCalculatorService.GetServerTime: DateTime;
begin
  Result := Now;
end;

最后将TROIndyHTTPServer(他被命名为ROServer)Active设为Ture就完成了Server端的程序了。

在编写Client端程序之前必须先将Server程序执行起来,因为Client端必须由Server取得WSDL,接着请建立一个新的项目,并且在其Form上放入TROWinInetHTTPChannelTROSOAPMessage两个组件,然后启动位于主菜单上的RemObjects SDK->Import  SOAP Web Service来载入服务(图7):

图7

8099TROIndyHTTPChannel默认的Port,如果不喜欢可更改其Port地址。按下Import后会开出Service Builder,其中点击默认的New Library可以修改名称,这个名称将是程序中的单元文件的名称,如图8所示。其中可以看到CalculatorService的定义,如图9所示。

图8

图9

最后加上一些控件FORM上,这里需要指出的是,必须设置ROWinInetHTTPChannel的TargetURL属性为:http://localhost:8099/soap,然后加上调用Web Services 的程序代码就完成了Client端程序了,下图是界面(图10)

图10

接着是调用Web Services的程序代码

unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, uROClient, uROSOAPMessage, uROBaseHTTPClient, uROWinInetHttpChannel;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Edit4: TEdit;
    ROWinInetHTTPChannel1: TROWinInetHTTPChannel;
    ROSOAPMessage1: TROSOAPMessage;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses
  CalcLibrary_Intf;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  calcSer: ICalculatorService;
begin
  calcSer := CoCalculatorService.Create(ROSOAPMessage1, ROWinInetHTTPChannel1);
  try
    Edit3.Text := IntToStr(calcSer.Sum(StrToIntDef(Edit1.Text, 0), StrToIntDef(Edit2.Text, 0)));
  finally
    calcSer := nil;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  calcSer: ICalculatorService;
begin
  calcSer := CoCalculatorService.Create(ROSOAPMessage1, ROWinInetHTTPChannel1);
  try
    Edit4.Text := DateTimeToStr(calcSer.GetServerTime);
  finally
    calcSer := nil;
  end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := EmptyStr;
  Edit2.Text := EmptyStr;
  Edit3.Text := EmptyStr;
  Edit4.Text := EmptyStr;
end;

end.


下图是这个程序的执行画面(图11)

图11

很简单是吧。程序代码量很少,绝大部分关键程序都由RO完成!示例程序下载地址:http://download.youkuaiyun.com/detail/js0001/4236722

 

 

 

 

 

 

 

 

 


一、 简介 1、 RemObjects SDK 综述 欢迎使用RemObjects SDK,这个框架可用简单灵活的方式创建可升级高灵活性的多层系统。 多层系统 一个多层系统分为两层或两层以上。通常人们分为3层: 表示层:终端用户程序,Web页面或可执行文件 业务逻辑/中间层:这个层的对象(运行于一些不可见的容器中)执行确认和业务逻辑。 数据存储层:通常是数据库。 基于这个基础结构上还有很多其他形式的框架,并且都在我们文档讨论的范围之外.但是你必须知道很重要的一点,创建任何分布式系统都需要一种消息协议让客户端和中间层通讯. 标准的消息协议是RPC-protocol (DCOM的基础), Java的 RMI 或 SOAP. RemObjects SDK适合作什么 为什么当一些协议都是适用的我们还要”重复制造车轮”?这有以下几个原因: 对于DCom,如果你所有的机器都运行Windows系统并且你会配置安全,他可以在局域网中运行的很好.但COM/DCOM对Windows和Unix的通讯不适用.事实上他是Windows上的标准.而且你要在你的机器上使用基于HTTP的COM对象就必须为RPC-通讯打开防火墙的几个端口. 对于RMI,RMI是针对Java的. Borland从来没有提供和RMI通讯的工具.就算有这种工具,你还是不能和COM对象通讯. 而SOAP呢?它是唯一的公认标准消息. 看起来他实现了互用性,但是却建立在解析XML高代价之上. 除非你有高速网络或只需要发送很小的包,否则你很难使用它. 这样的例子还很很多. RemObjects的目标 RemObjects为实现下面的目标而设计: 简单:开发者不需要是专家,不需要很长的时间就可以为网络中的电脑或Internet的客户端中发布自己的简单服务.Delphi开发者不用面对自己不熟悉的语法.并且你可以轻松的理解他的原理. 高效:我们通常在本机的两个进程通讯时使用Socket,使用标准协议像Soap做客户端和服务器的通讯,为什么没有一种通用的方式可以发布我们的服务呢?RemObjects SDK允许我们创建高效的服务,并可以使用我们需要的协议方式通讯. 灵活:RemObjects SDK使用TCP/IP,HTTP,和Windows消息作为传输信道.而我们要使用UDP或管道时我们就可以轻松的创建新的信道,只要通知服务器和客户端即可,不用修改其他部分.RemObjects SDK的插入式框架可以让我们写一个简单的函数或实现一个接口IROTransportChannel即可建立新的通讯信道而扩展基础框架.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值