RemObject服务端配置程序编写.docx

上传人:b****1 文档编号:231784 上传时间:2022-10-07 格式:DOCX 页数:17 大小:386.01KB
下载 相关 举报
RemObject服务端配置程序编写.docx_第1页
第1页 / 共17页
RemObject服务端配置程序编写.docx_第2页
第2页 / 共17页
RemObject服务端配置程序编写.docx_第3页
第3页 / 共17页
RemObject服务端配置程序编写.docx_第4页
第4页 / 共17页
RemObject服务端配置程序编写.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

RemObject服务端配置程序编写.docx

《RemObject服务端配置程序编写.docx》由会员分享,可在线阅读,更多相关《RemObject服务端配置程序编写.docx(17页珍藏版)》请在冰豆网上搜索。

RemObject服务端配置程序编写.docx

RemObject认证服务端程序编写步骤

1功能说明:

用remobject编写服务端,通rodl暴露的方法给客户调用,但这些方法需要通过认证才能使用。

服务端应提供两种服务:

1、登陆服务

提供登陆认证方法

2、应用服务

用户编写的具体方法,但需要在登陆服务认证通过的情况下才能使用

2工作示意图

3服务端编写步骤

3.1在硬盘中新建一个文件夹d:

\testServer

3.2启动delphi

3.3点击菜单fileànewàother

3.4选择remObjectsSDK页面

3.5再选择VCL图标,然后点击OK按钮进入一步

在ProjectFolder:

中录入d:

\testServer

点击advancedProjectOptions..按钮,进入高级选项设置

然后ServerClass选择成TROSuperTCPServer,也可选择其它的

MessageClass选择TROBinMessag表示采用二进制传输入方式,或者选择其它

点击确定返回

3.6再点击OK按钮,这时向导处理完成啦。

3.7点击菜单viewàprojectmanage

3.8双击testProject.exe设置服务端为默认项目

3.9打开serverForm表单

在界面上加入一个控件TROInMemorySessionManager并命名为ROSessionManager

在界面上加入一个控件TMemo并命名为memo。

3.10点击菜单RemObjectsSDKàEditServiceLibrary,进行应用服务器编辑

1)将服务名称改为AppService,并且增加一个方法getSessionID

2)增加一个服务LogServices,增加两个方法

login(user,password:

widestring):

boolean

logout(sessionID:

widestring):

3)点击菜单CodeGenàdelphiàinterface生成接口文件代码,然后按保存,选择路径为d:

\testServer

4)点击菜单CodeGenàdelphiàImplementationàAppService生成应用服务实现文件代码,然后按保存,选择路径为d:

\testServer,(注意:

如果你已经在实现代码中编写了代码就不要保存,否则你编写的代码会被覆盖,如果你要加方法,可以用delphi打开AppService_Impl单元的interface部份声明方法(例如:

functionGetSessionID:

Widestring;),然后按ctrl+shift+C产生实现代码,然后编写)

5)点击菜单CodeGenàdelphiàImplementationàLogService生成登陆服务实现文件代码,然后按保存,选择路径为d:

\testServer

6)点击菜单CodeGenàdelphiàInvoker生成服务端调用代码,然后按保存,选择路径为d:

\testServer。

3.11关闭服务器调设置工具返回到delphi,然后在delphi界面按ctrl+F9,进入下面界面

选择第二项按OK

选择第二项按OK,到此项目初步完成,并且可以编译运行了

3.12保存项目所有文件。

接下来是非常重要的设置部分啦。

3.13接口代码编写及相关设置(重点)

3.13.1设置主窗体serverform代码

1)打开主窗口文件FserverForm

2)引用单元SyncObjs

3)定义全局变量

CriticalSection:

TCriticalSection;

icount:

integer有效实例数

4)编写create方法

procedureTServerForm.FormCreate(Sender:

TObject);

begin

CriticalSection:

=TCriticalSection.create;

ROServer.Active:

=true;

end;

5)增加方法

procedureTServerForm.log(Astr:

widestring);

begin

ifCriticalSection=nilthenexit;

CriticalSection.Enter;

try

try

ifAStr=''then

Memo.Lines.Add('')

else

Memo.Lines.Add(DateTimetoStr(Now)+':

'+Astr);

except

end;

finally

CriticalSection.Leave;

end;

end;

6)编写ROSessionManager控件的onSessionCreated方法与onSessionDeleted方法;

3.13.2编写接口实现单元文件LogService_Impl

1)引用单元

implementation

{$R*.dfm}

uses

{Generated:

}NewLibrary_Invk,variants,fServerForm;

2)按F12切换到界面编辑窗口

设置sessionManager为ServerForm.ROSessionManager

3)增加私有方法

procedureTLogService.log(Astr:

widestring);

begin

ServerForm.log(Astr);

end;

4)编写login代码

functionTLogService.login(constuserid:

Widestring;constpassword:

Widestring):

Boolean;

begin

Log('User'''+UserID+'''istryinglogonwithpassword'''+Password+'''');

if(Session.Values['Login']<>Null)thenbegin

Log('User'''+Session.Values['Login']+'''isalreadyconnectedtosession'+GUIDToString(ClientID));

Log('Loginunsuccessful');

Result:

=True;

Exit;

end;

result:

=(UserID<>'')and(UserID=Password);//

ifResultthenbegin

Session.Values['Login']:

=UserId;

Session.Values['Password']:

=Password;

Log('Loginsuccessful');

end

elsebegin

Log('Invalidlogin!

');

DestroySession;//Wronglogin!

Thesessioncannotbepersisted

end;

Log('');

end;

5)编写logout代码

procedureTLogService.logout(constSessionID:

Widestring);

var

aUser:

WideString;

begin

ifSession.Values['Login']<>Nullthen

aUser:

=Session.Values['Login']

else

aUser:

='';

Log('User'''+aUser+'''hasrequestedlogout');

Log('');

DestroySession;//RemovesthesessionfromtheSessionManager

end;

3.13.3编写接口实现单元文件AppService_Impl

1)引用单元

implementation

{$R*.dfm}

uses

{Generated:

}NewLibrary_Invk,variants,fServerForm;

2)按F12切换到界面编辑窗口·

重要

设置sessionManager为ServerForm.ROSessionManager

设置RequiresSession为true;

说明:

这个参数非常重要,表示应用服务不再产生新的实例,而是用客户robinmessage.clentID来查找服务端创建的session来使用。

3)编写应用函数

functionTAppService.Sum(constA:

Integer;constB:

Integer):

Integer;

begin

Result:

=a+b;

end;

functionTAppService.GetServerTime:

DateTime;

begin

Result:

=now;

end;

functionTAppService.GetSessionID:

Widestring;

begin

Result:

=GUIDToString(Session.SessionID);

end;

保存所有文件,致此服务端已经编写完成。

编译运行程序,在浏览器中输入http:

//localhost:

8095/

如果出现ROSC:

Invalidconnectionstring,表示应用服务器编写成功。

4客户端调用步骤

4.1建立文件夹d:

\testClient

4.2新启动一个delphi

4.3在项目中引入文件D:

\testServer\NewLibrary_Intf.pas

4.4增加客户端控件

1)ROMessage:

TROBinMessage;

2)ROChannel:

TROSuperTCPChannel;

设置属性host为localhost//可以自己修改为服务端的ip

设置端口为8095//可以需要设定通讯端口

3)logServer:

TRORemoteService;

设置channel为ROChannel

设置Message为ROMessage

设置serviceName为LogService

4)appServer:

TRORemoteService;

设置channel为ROChannel

设置Message为ROMessage

设置serviceName为AppService

5)引用接口文件到项目中

D:

\testServer\NewLibrary_Intf.pas

6)在主窗口中引用NewLibrary_Intf.pas

7)定义全局变量

appsvr:

IAppService;

logsvr:

ILogService;

8)客户端界面

9)代码单元

unittempa;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1