如何与TWebModule通信



我有一个如下构造的webservice

主机(aTForm):

private
FWebBrokerBridge: TIdHTTPWebBrokerBridge;
In the create:
FWebBrokerBridge := TIdHTTPWebBrokerBridge.Create(Self);    // TIdHTTPWebBrokerBridge = class(TIdCustomHTTPServer), in IdHTTPWebBrokerBridge.pas
FWebBrokerBridge.RegisterWebModuleClass(TWebModuleWebServices);
FWebBrokerBridge.... set some properties
FWebBrokerBridge.DefaultPort := FPort;
FWebBrokerBridge.Active := True;

TWebModuleWebServices在:

unit DMWebServices;
interface
type
TWebModuleWebServices = class(TWebModule)
procedure WebModuleCreate(Sender: TObject);
procedure WebModuleAfterDispatch(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
procedure WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);

procedure WebModuleWebServicesTTInfoAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
... other actions     

主单元从INI文件中读取布尔值设置,我希望该值在每个TWebModuleWebServices实例中都是已知的。但是怎么做呢?

  • WebModuleCreate发送者是TWebModuleWebServices,所以我没有看到太多的机会。或者重写Create?
  • 使用TWebModuleWebServices标签属性?
  • 使用全局变量或单例(这是一个全局布尔设置,没有什么复杂的)?

明智的做法是什么?

一个通用的好的(面向对象的)实践是:

  1. 创建一个新的TWebModule的后代,并将它作为一个组件注册到你自己的包中。
  2. 发布一个新属性来传递需要传输的数据。
  3. 创建您的TWebModuleWebServices模块继承您的新web模块的Delphi UI。
  4. 使用新属性来调度数据。

相关内容

  • 没有找到相关文章

最新更新