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

上传人:牧羊曲112 文档编号:4888747 上传时间:2023-05-21 格式:DOCX 页数:15 大小:740.23KB
返回 下载 相关 举报
RemObject认证服务端程序编写步骤.docx_第1页
第1页 / 共15页
RemObject认证服务端程序编写步骤.docx_第2页
第2页 / 共15页
RemObject认证服务端程序编写步骤.docx_第3页
第3页 / 共15页
RemObject认证服务端程序编写步骤.docx_第4页
第4页 / 共15页
RemObject认证服务端程序编写步骤.docx_第5页
第5页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《RemObject认证服务端程序编写步骤.docx》由会员分享,可在线阅读,更多相关《RemObject认证服务端程序编写步骤.docx(15页珍藏版)》请在三一办公上搜索。

1、RemObject认证服务端程序编写步骤1 功能说明:用remobject编写服务端,通rodl暴露的方法给客户调用,但这些方法需要通过认证才能使用。服务端应提供两种服务:1、登陆服务提供登陆认证方法2、应用服务用户编写的具体方法,但需要在登陆服务认证通过的情况下才能使用2工作示意图客户端通过连接通道访问服务 端提供的登陆认证服务,认证 成功后会在服务端产生一新的 session,并且 sessionID=客户端 robinmessage.clentidrobinMessage 客户端clientID客户端登陆认证服务认证通过后产生session应用方法服务直接使用登陆认证产生的SessiOR

2、emote客户端通过连接通道访问服务 端提供的应用服务,根据客户 端 robinmessage.clentid 在服务 端查找相应的session.sessionid 相同的session如果找到可以使 用提供的方法,找不到提示错 误3服务端编写步骤3.1在硬盘中新建一个文件夹d:testServer3.2 启动 delphi3.3 点击菜单 file3new今other3.4 选择 remObjects SDK 页面3.5再选择VCL图标,然后点击OK按钮进入一步在 Project Folder:中录入 d:testServer点击advanced Project Options.按钮,进入

3、高级选项设置然后Server Class选择成TROSuperTCPServer,也可选择其它的Message Class选择TROBinMessag表示采用二进制传输入方式,或者选择其它点击确定返回3.6再点击OK按钮,这时向导处理完成啦。3.7 点击菜单 view project manage3.8双击testProject.exe设置服务端为默认项目3.9 打开 serverForm 表单在界面上加入一个控件 TROInMemorySessionManager 并命名为 ROSessionManager在界面上加入一个控件TMemo并命名为memo。进行应用服务3.10 点击菜单 Rem

4、Objects SDK Edit Service Library,器编辑1)将服务名称改为AppService,并且增加一个方法getSessionlD2)增加一个服务LogServices,增加两个方法login(user,password:widestring):booleanlogout(sessionID:widestring):3)点击菜单CodeGen3delphi3interface生成接口文件代码,然后按保存,选择路径为d:testServerI- 1 # NewLibrary? App5ervice夕 Log5ervice4)点击菜单CodeGen3delphi3Implem

5、entation3AppService生成应用服务实现文件代码,然后按保存,选择路径为d:testServer,(注意:如果你已经在实现代码中编写了代码就不要保存,否则你编写的代码会被 覆盖,如果你要加方法,可以用delphi打开AppService_Impl单元的interface部份声明方法(例如:function GetSessionID: Widestring;),然后按 ctrl+shift+C 产生实现代码,然后编写)5)点击菜单CodeGen3delphi3Implementation3LogService生成登陆服务实现文件代码,然后按保存, 选择路径为d:testServer

6、6)点击菜单CodeGen3delphi3Invoker生成服务端调用代码,然后按保存,选择路径为d:testServer。3.11关闭服务器调 设置工具返 回到delphi,然后在delphi界面按ctrl+F9,进入下面界面选择第二项按OK选择第二项按OK,到此项目初步完成,并且可以编译运行了3.12保存项目所有文件。接下来是非常重要的设置部分啦。3.13接口代码编写及相关设置(重点)3.13.1设置主窗体serverform代码1) 打开主窗口文件FserverForm2) 引用单元SyncObjs3) 定义全局变量CriticalSection: TCriticalSection;ic

7、ount: integer有效实例数4) 编写create方法procedure TServerForm.FormCreate(Sender: TObject);beginCriticalSection:= TCriticalSection.create;ROServer.Active := true;end;5) 增加方法procedure TServerForm.log(Astr: widestring);beginif CriticalSection = nil then exit;CriticalSection.Enter;trytryif AStr = thenMemo.Lines.

8、Add()elseMemo.Lines.Add(DateTimetoStr(Now) + : + Astr);exceptend;finallyCriticalSection.Leave;end;end;6) 编写 ROSessionManager 控件的 onSessionCreated 方法与 onSessionDeleted 方法;3.13.2编写接口实现单元文件LogService_Impl1) 引用单元implementation$R *.dfmusesGenerated: NewLibrary_Invk, variants,fServerForm;2) 按F12切换到界面编辑窗口设

9、置 sessionManager 为 ServerForm.ROSessionManager3) 增加私有方法procedure TLogService.log(Astr: widestring);beginServerForm.log(Astr);end;4) 编写login代码function TLogService.login(const userid: Widestring; const password: Widestring): Boolean;beginLog(User + UserID + is trying logon with password + Password + )

10、;if (Session.ValuesLogin Null) then beginLog(User + Session.ViluesLogin + is already connected to session + GUIDToString(ClientlD);Log(Login unsuccessful);Result := True;Exit;end;result := (UserID ) and (UserID = Password); /if Result then beginSession.ViluesLogin := UserId;Session.ViluesPassword :=

11、 Password;Log(Login successful);endelse beginLog(Invalid login!);DestroySession; / Wrong login! The session cannot be persisted end;Log();end;5)编写logout代码procedure TLogService.logout(const SessionID: Widestring);varaUser: WideString;beginif Session.ViluesLogin Null thenaUser := Session.ValuesLoginel

12、seaUser :=;Log(User + aUser + has requested logout);Log();DestroySession; / Removes the session from the SessionManager end;3.13.3编写接口实现单元文件AppService_Impl1) 引用单元implementation$R *.dfmusesGenerated: NewLibrary_Invk, variants,fServerForm;2) 按F12切换到界面编辑窗口设置 sessionManager 为 ServerForm.ROSessionManager

13、重要设置 RequiresSession 为 true;说明:这个参数非常重要,表示应用服务不再产生新的实例,而是用客户robinmessage.clentID来查找服 务端创建的session来使用。3)编写应用函数function TAppService.Sum(const A: Integer; const B: Integer): Integer;beginResult:=a+b;end;function TAppService.GetServerTime: DateTime;beginResult:=now;end;function TAppService.GetSessionID:

14、 Widestring;beginResult:=GUIDToString(Session.SessionID);end;保存所有文件,致此服务端已经编写完成。编译运行程序,在浏览器中输入http:/localhost:8095/如果出现ROSC:Invalid connection string,表示应用服务器编写成功。4客户端调用步骤 4.1 建立文件夹 d:testClient4.2新启动一个delphi4.3 在项目中引入文件 D:testServer NewLibrary_Intf.pas4.4增加客户端控件匹1=11) ROMessage: TROBinMessage;2) ROC

15、hannel: TROSuperTCPChannel;设置属性host为localhost 可以自己修改为服务端的ip 设置端口为8095可以需要设定通讯端口3) logServer: TRORemoteService;设置 channel 为 ROChannel设置 Message 为 ROMessage设置 serviceName 为 LogService4) appServer: TRORemoteService; 设置 channel 为 ROChannel 设置 Message 为 ROMessage 设置 serviceName 为 AppService5) 引用接口文件到项目中D

16、:testServer NewLibrary_Intf.pas6) 在主窗口中引用 NewLibrary_Intf.pas7) 定义全局变量appsvr:IAppService;logsvr:ILogService;8) 客户端界面9)代码单元 unit tempa;interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, uRORemoteService, uROClient, uROSuperTCPChannel, uROBinMessage,NewLib

17、rary_Intf, StdCtrls;typeTForm1 = class(TForm)ROMessage: TROBinMessage;ROChannel: TROSuperTCPChannel;logServer: TRORemoteService;appServer: TRORemoteService;Buttonl: TButton;Editl: TEdit;Edit2: TEdit;Label1: TLabel;Label2: TLabel;Button2: TButton;Button3: TButton;Button4: TButton;procedure FormCreate

18、(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);private( Private declarations public( Public declarations appsvr:IAppService;logsvr

19、:ILogService;end;varForm1: TForm1;implementation$R *.dfmprocedure TForm1.FormCreate(Sender: TObject);beginROChannel.Active:=true;appsvr:=( appServer as IAppService);logsvr:=(logServer as ILogService);end;procedure TForm1.FormDestroy(Sender: TObject);beginROChannel.Active:=False;end;procedure TForm1.

20、Button1Click(Sender: TObject);beginif logsvr.login(edit1.Text,edit2.Text) thenshowmessage(登陆成功)else beginshowmessage(登陆失败);end;end;procedure TForm1.Button2Click(Sender: TObject);beginlogsvr.logout(GUIDToString(ROMessage.ClientID); end;procedure TForm1.Button3Click(Sender: TObject);beginshowmessage(IntToStr(appsvr.Sum(3,5); end;procedure TForm1.Button4Click(Sender: TObject);beginshowmessage(服务器 sessionID:+appsvr.GetSessionID+chr(13)+本地 sessionID:+GUIDToString(ROMessage.ClientID); end;end.

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号