資料節錄如下:
改寫部分RemoteDataModule中的代碼:
線程模型(Threading Model)用Neutral
/// Delphi class procedure TEverydayInfoServer.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); begin if Register then begin inherited UpdateRegistry(Register, ClassID, ProgID); EnableWebTransport(ClassID); RegisterPooled(ClassID, 50, 1); //關鍵是這一句,用緩衝池的. end else begin DisableWebTransport(ClassID); UnregisterPooled(ClassID); inherited UpdateRegistry(Register, ClassID, ProgID); end; end;
2015/ 02/19 更新
// C++ Builder // Listing 21.1 UpdateRegistry to enable Connection Pooling // Function invoked to (un)register object // static HRESULT WINAPI UpdateRegistry(BOOL bRegister) { TRemoteDataModuleRegistrar regObj(GetObjectCLSID(), GetProgID(), GetDescription()); // Disable these flags to disable use by socket or Web connections. // Also set other flags to configure the behavior of your application server. // For more information, see atlmod.h and atlvcl.cpp. regObj.Singleton = false; regObj.MaxObjects = 10; regObj.Timeout = 42; regObj.RegisterPooled = true; regObj.EnableWeb = true; regObj.EnableSocket = true; return regObj.UpdateRegistry(bRegister); }
從 Document 來看,設定後會保留一個 RDM Instance,一併設定 Client 的最大連線數。
Client 連線數設定上限也可以達到節省 Database 的版權費用,的確可以參考使用。
資料來源:
- 三層應用 webconnection與httpsrvr.dll與IIS的有關的問題
- 在三層應用中如何動態建立TQuery
- Installing the HttpSrvr.dll (optional)
- 以 Delphi 撰寫 Neutral 執行緒模型的 COM+ 元件
- Why shouldn't I control transactions from the client?
- delphi 三層開發經驗彙總
- 有關三層的好文
- C++ Builder 6 Developer's Guide: Chapter 21. DataSnap Multitier Connections
- Document RegisterPooled
沒有留言:
張貼留言