我有一个如下构造的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
标签属性? - 使用全局变量或单例(这是一个全局布尔设置,没有什么复杂的)?
明智的做法是什么?
一个通用的好的(面向对象的)实践是:
- 创建一个新的TWebModule的后代,并将它作为一个组件注册到你自己的包中。
- 发布一个新属性来传递需要传输的数据。
- 创建您的
TWebModuleWebServices
模块继承您的新web模块的Delphi UI。 - 使用新属性来调度数据。