RemObject服务端配置程序编写.docx
- 文档编号:231784
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:17
- 大小:386.01KB
RemObject服务端配置程序编写.docx
《RemObject服务端配置程序编写.docx》由会员分享,可在线阅读,更多相关《RemObject服务端配置程序编写.docx(17页珍藏版)》请在冰豆网上搜索。
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RemObject 服务端 配置 程序 编写