初试RemObjects SDK

            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.csdn.net/detail/js0001/4236722

 

 

 

 

 

 

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值