Delphi - 2010 - DataSnap白皮书(8)

2019-08-03 12:42

在Execute方法中,有一个TJSONValue类型的参数,可以复制(Clone)这个参数然后设置其具体内

容.Execute方法也返回一个TJSONValue类型的值,这里我们只返回同样的值: function TCallbackClient.Execute(const Arg: TJSONValue): TJSONValue; var

Data: TJSONValue; begin

Data := TJSONValue(Arg.Clone);

ShowMessage('Callback: ' + TJSONObject(Data).Get(0).JSonValue.value); Result := Data end;

例如, 在方法实际返回前(如方法正在执行),回调函数将显示EchoString方法传递参数的值.服务端新的

EchoString方法实现需要将String值赋给一个TJSONObject对象,并将其传递给回调函数.如下:

function TServerMethods2.EchoString(Value: string; callback: TDBXcallback): string; var

msg: TJSONObject; pair: TJSONPair; begin

Result := Value;

msg := TJSONObject.Create;

pair := TJSONPair.Create('ECHO', Value); pair.Owned := True;

msg.AddPair(pair); callback.Execute(msg); end;

注意这个回调函数将在客户端执行—然后在服务端Echostring方法执行完毕前返回

最后,在客户端调用EchoString方法也需要修改,因为我们现在要提供一个回调类TCallbackClient的实例,如 下所示: var

MyCallback: TCallbackClient; begin

MyCallback := TCallbackClient.Create; try

Server.EchoString(Edit1.text, MyCallback); finally

MyCallback.Free; end; end;

这个范例阐释了如何在DataSnap2010中使用客户端回调函数. 7. 使用DATASNAP 和 .NET

Delphi Prism 2010可用来构建使用我们先前生成Wind32服务的DataSnap .NET客户端.为了构建Delphi

Prism 2010 DataSnap客户端,先确保DataSnap服务正常运行.

启动Delphi Prism 2010,点击View. Server Explorer启动Delphi Prism Server Explorer.首先建立一个连

接,验证我们将以使用的DataSnap服务.

Server Explorer的根节点叫做Data Connections.右击Data Connections选择

添加连接.对话框如下,在 Data Sources列表中选择DataSnap(注意如果数据源已经预选好了我们需要点击变更一下)

不要选中 Always use this selectiong.除非你一直构建DataSnap数据连接. 点击Continue按钮进入下一步.指定连接的DataSnap服务详细信息.在协议下拉框中选择TCP/IP或HTTP.

接下来,指定服务器(运行DataSnap服务的主机名称,如在本机测试可指定localhost),然后指定端口号.默认

HTTP为80端口,TCP/IP为211端口.但从本白页中可知这两个端口都应该修改,并确保和你在

ServerContainerUnitDemo单元中设置的端口号对应.下一个属性包含路径,这在你要连接到基于Web

Broker的DataSnap服务上很重要.设置为http://后面的部分. 最后,不要忘记验证用户和密码,本例DataSnap服务使用HTTP验证.

点击测试按钮,验证连接.如果弹出连接成功信息表示连接可用.

点击OK按钮,在连接树中显示了一个新的DataSnap连接.本例中是localhost节点.展开这个节点,显示表,

视图,存储过程子节点.表和视图节点为空,但存储过程节点包括所有在DataSnap服务端定义的服务方法.包

括我们自定义的EchoString,GetEmployees和ServerTime.

我们现在可以在Server Explorer中测试服务方法.例如,右击EchoString方法,选择查看参数.弹出新窗口,

输入参数.这里输入42.右击窗口选择执行.将执行服务端的EchoString方法.如下图.

更好的是可以使用GetEmployees方法演示如何从Employees表中获取数据.这个存储过程没有参数,但还

有选择 View Parambers命令,返回一个空参数列表.右击窗体选择 执行.这是返回一个记录集.如下图: 7.1. WINFORMS 客户端

虽然已经可以运行服务端方法了,但更有用的方法是在.NET应用程序中调用这些方法.最后一个范

例,File.New Project启动Delphi Prism新项目向导.选择项目类型. 在Windows 项目类型中选择Windows Application,修改WindowsApplication1为DataSnapClient.

点击OK按钮,创建一个带有Main.pas单元的新项目.

在Server Explorer,选择新建的DataSnap服务连接,属性框中找到ConnectionString,如下:

communicationprotocol=http;hostname=localhost;port=8080;dsauthenticationuser=Bob;ds

authenticationpassword=Swart

右击数据连接节点,选择生成客户端代理(Generate Client Proxy)选项.生成新文件ClientProxy1.pas,其中

定义了TServerMethods1Client类及其中的方法(EchoString, ServerTime, 和GetEmployees)..如下:

TServerMethods1Client = class public

constructor (ADBXConnection: TAdoDbxConnection);

constructor (ADBXConnection: TAdoDbxConnection; AInstanceOwner: Boolean);

function EchoString(Value: string): string; function ServerTime: DateTime;

function GetEmployees: System.Data.IDataReader;

除了代理类还在项目的引用节点中添加了Borland.Data.AdoDbxClient 和Borland.Data.DbxClientDriver 引用.

从TServerMethods1Client类代码片段中可见,类有两个构造函数:有使用了一个ADBXConnection参数,

第二个构造函数还有一个AInstanceOwner的Boolean类型参数.这意味着我们必

须使用参数调用构造函数.

为了支持这个功能,必须修改项目属性设置.在解决方案管理器中右击DataSnapClient,选择属性.如下图,点

击Compatibility标签,选中”Allow Create constructor calls”,将允许我们调用.Create构造方法,传递参数,而不 仅仅是使用new关键字.

现在回到主窗体,添加一个按钮.在Click事件中创建一个DataSnap服务连接并调用方法.

method MainForm.button1_Click(sender: System.Object; e: System.EventArgs); var

Client: ClientProxy1.TServerMethods1Client;

Connection: Borland.Data.TAdoDbxDatasnapConnection; begin

Connection := new Borland.Data.TAdoDbxDatasnapConnection(); Connection.ConnectionString :=

'communicationprotocol=http;hostname=localhost;port=8080;dsauthenticationuser=Bob;dsauth enticationpassword=Swart'; Connection.Open; try

Client := ClientProxy1.TServerMethods1Client.Create(Connection); MessageBox.Show(

Client.EchoString('Delphi Prism 2010')); finally

Connection.Close;


Delphi - 2010 - DataSnap白皮书(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:长方体与正方体的认识评课

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: