【问题标题】:access events when running intraweb application as a service将 Intraweb 应用程序作为服务运行时的访问事件
【发布时间】:2010-11-04 09:44:45
【问题描述】:

我将独立的 Intraweb 应用程序作为服务运行。现在我需要实现一个函数 数据库表的“心跳”时间戳。我已经在其他使用的服务应用程序中完成了此操作 TService Classm,我可以在其中使用 OnAfterInstall、OnExecute 等事件。

有没有办法在作为服务运行的独立 Intraweb 应用程序中使用这些事件?

感谢所有信息

沃尔夫冈

【问题讨论】:

    标签: delphi intraweb


    【解决方案1】:

    我开始在我自己的 Intraweb 应用程序中执行此操作,但由于 IWServiceWizard 隐藏了包括主执行循环在内的服务详细信息,所以我在服务器端完成了所有操作,我使用的是应用程序模式。

    我在我的会话类上定义了一个心跳方法(RunSQL 是我自己的数据访问层对象 DBConnection 上的一个方法,这可能是一个简单的 TADOConnection 包装器)。

    function TIWUserSession.UpdateHeartbeat: boolean;
    var
      sSQL : string;
    begin
      sSQL := 'UPDATE Heartbeats SET LastComms = getdate()'+
              ' WHERE SessionID = '+ IntToStr(FSessionID);
    
      Result := DBConnection.RunSQL(sSQL);
    end;
    

    一旦我这样做了,每当用户打开一个新网页时调用这个方法(例如)就很简单了。

    procedure TIWMyPage.IWAppFormCreate(Sender: TObject);
    begin
      inherited;
    
      Session.UpdateHeartbeat;
    end;
    

    这也可以在用户执行与服务器通信的操作时使用,即使它是异步事件 (AJAX)。

    procedure TIWMyPage.btnRefreshAsyncClick(Sender: TObject; 
      EventParams: TStringList);
    begin
      Session.UpdateHeartbeat;
    end;
    

    【讨论】:

      【解决方案2】:

      Intraweb 支持 TIWTimer,因此向数据库发送时间戳应该非常简单。编码的细节取决于详细的规范。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 2019-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-25
        • 2019-01-03
        相关资源
        最近更新 更多