RemObjects SDK 是高度封装的产物,对OOP发挥极致。
本文将以RemObjects SDK最简单的DEMO——FirstSample为例,
介绍客户端是如何完成远程调用服务端接口的全过程。
也理解为什么可以通过不同传输通道(TCP/HTTP...),不同消息格式(二进制,SOAP...) 与服务端进行通讯
客户端就这三个RO控件,是如何完成一个完整的调用过程的呢?
在程序启动的时候,RO已经完成了一系列动作,
先了解一个Delphi主程序代码的执行顺序
程序启动 -->
执行 initialization 处的代码 (在主程序运行前运行并且只运行一次)-->
{工程文件}
begin
Application.Initialize;
Application.CreateForm(TForm, Form1);
Application.Run;
end. -->
执行 finalization 处的代码 (在程序退出时运行并且只运行一次)
也就initialization处的代码是最先运行的,当我们把这三个控件摆上的时候,
会自动加入 uROClient,uROBinMessage,uROWinInetHttpChannel,
同时为加调用服务端接口,手动把接口声明文件也加入FirstSample_Intf
而这三个文件都有initialization ,它们做了什么呢?
{unit uROClient;}
procedure RegisterMessageClass(aROMessageClass : TROMessageClass);
begin
_MessageClasses.Add(aROMessageClass);
if Classes.GetClass(aROMessageClass.ClassName) = nil then
Classes.RegisterClass(aROMessageClass);
end;
procedure RegisterTransportChannelClass(aTransportChannelClass : TROTransportChannelClass);
begin
if _TransportChannels.IndexOf(aTransportChannelClass.ClassName)<0 then begin
_TransportChannels.AddObject(aTransportChannelClass.ClassName, TObject(aTransportChannelClass));
if Classes.GetClass(aTransportChannelClass.ClassName) = nil then
Cl