摘要:
回调除了用REST支持调用DataSnap服务方法外,JSON还用于实现回调方法.DataSnap2010支持客户端回调函数,使其执行在服务方法上下文中.这样就可以实现客户端调用服务端方法时,服务端就可以调用由客户端传递好参数的回调函数.例如,我们修改EchoString方法,向其中添加回调支持.修改后的EchoString方法如下:function EchoString(Value: string; callback: TDBXcallback): string;TDBXcallback类定义在DBXJSON单元.在我们实现EchoString方法前,先搞清楚如何在客户端定义回调函数(毕竟, 阅读全文
摘要:
1.连接SQL SERVER数据库procedure TForm1.Button1Click(Sender: TObject);var p: TSQLConnection;begin try p := TSQLConnection.Create(nil); try p.ConnectionName := 'MSSQLConnection'; p.DriverName := 'MSSQL'; p.GetDriverFunc := 'getSQLDriverMSSQL'; p.KeepConnection := true; p.LoginPrompt 阅读全文
摘要:
{之前说到中间层通过向客户端暴露方法的方式提供服务,实现数据库数据的读取和更新。方法调用的方式,其潜在的意义,就是说中间层不保存客户端状态信息,就像WEB服务一样,客户端需要自己保存自己的状态信息。进一步说,就是中间层具体提供方法的业务对象实例,不是也不应该专属于某个客户端,它应该能够为不同的客户端调用提供服务。如果我们把业务对象实例放到对象池中集中存放,调用方法时随用随取,方法结束即放回池中。这样就可以实现业务对象实例服务于不同的客户端调用请求。更重要的是,利用对象池,能够最大化服务器各种资源的使用效率,而且对客户端的响应也更快了,因为业务对象实例早就创建好了,取来即用。其实,DataSna 阅读全文
摘要:
// Rtti调用类的方法 procedure TForm1.Button1Click(Sender: TObject);var obj: TMyClass; t: TRttiType; m1,m2: TRttiMethod; r: TValue; begin t := TRttiContext.Create.GetType(TMyClass); m1 := t.GetMethod('msg'); m2 := t.GetMethod('Add'); obj := TMyClass.Create(Self); m1.Invoke(obj, ['Delphi 阅读全文
摘要:
TServerContainer = class(TDataModule) TCP_KeepAlive = record OnOff: Cardinal; KeepAliveTime: Cardinal; KeepAliveInterval: Cardinal; end;procedure TServerContainer.DSServerConnect( DSConnectEventObject: TDSConnectEventObject);var Val: TCP_KeepAlive; Ret: DWord; ClientConnection: TIdTCPConnection;begi 阅读全文
摘要:
unit SqlQueryPool;interfaceuses Classes, Windows, SysUtils, forms, DB, SqlExpr, FMTBcd;type TSQLQueryPool = class(TObject) private FObjList:TThreadList; FTimeout: Integer; FMaxCount: Integer; FSemaphore: Cardinal; function CreateNewInstance(List:TList): TSQLQuery; function GetLock(List:TList;Index: 阅读全文
摘要:
unit SqlStoredPool;interfaceuses Classes, Windows, SysUtils, forms, DB, SqlExpr, FMTBcd;type TSQLStoredPool = class(TObject) private FObjList:TThreadList; FTimeout: Integer; FMaxCount: Integer; FSemaphore: Cardinal; function CreateNewInstance(List:TList): TSQLStored; function GetLock(List:TList;Inde 阅读全文