DB、Delphi XE2のIntraWeb 12を使用したセッションと持続性
-
27-10-2019 - |
質問
IntraWEBアプリケーションを使用して、データベース接続(私の場合のFirebird)に関する情報を検索しています。
特に、Tdatamodule上のデータベースをLockDatamodule関数で使用すること、またはusersessionUnitでデータベースを使用することに伴う違いを知る必要があります。たとえば、ユーザーがサーバーを使用していない場合、最大30人のユーザーが接続されている場合、データベースを完全に切断する必要があります。
最悪の場合、古いパラドックスデータベースに接続する必要があり、それを処理できる構造が必要です(セッションを処理するためにWebApplication.Appidに基づいてフォルダーを生成する必要があることはわかっています)。最悪の場合...
情報や便利なリンクを前もって私に提供できる^^
解決
シナリオ1-あなたは「プールデータ接続」を残します チェックされていない IntraWebアプリケーションウィザード
このシナリオでは、ウィザードが作成します ServerController
, 、a UserSession
しかし、ではありません DataModule
. 。データベース、セッション、データセットコンポーネントをに配置します UserSession
.
新しいユーザーがあなたのウェブサイトに接続するたびに新しいインスタンス UserSession
作成され、データベースへの接続が作成されます。いつ ServerController.SessionTimeOut
ユーザーの不活性のために期限切れになります UserSession
破壊され、データベースへの特定の接続が切断されます。
30人の同時ユーザーの場合、このモデルはおそらくあなたにとって問題なく、ウェブサイトが使用されていないときにすべてのデータベース接続が切断されることを保証する必要があります。
シナリオ2-あなた 小切手 IntraWebアプリケーションウィザードの「プールデータ接続」
と同様に ServerController
そしてその UserSession
ウィザードは空のものを作成します DataModule
. 。データベース、セッション、データセットコンポーネントをに配置します DataModule
.
ServerModule
があります TIWDataModulePool
持っているコンポーネント PoolCount
財産。
アプリケーションが開始されると、作成されます PoolCount
のインスタンス DataModule
それぞれがデータベースに接続します。あなたのページがデータベースアクセスを必要とするため、彼らは呼び出します LockDataModule
と UnlockDataModule
の1つを一時的に使用するには DataModule
プールからのインスタンス。
アプリケーションが閉じるとき DataModule
プール内のインスタンスが破壊され、データベースへの接続が閉じられます。
このモデルは、ユーザーごとにオープンデータベース接続を持つことで、データベースサーバーの機能を超える場合に適切です。 Firebirdデータベースに接続している30人のユーザーの場合、私はそれが必要だとは思わない。
他のヒント
KBMMWのようなコンポーネントセットの使用を検討することをお勧めします http://www.components4programmers.com/ 私はこれを何年もの間、デスクトップアプリANSでIWアプリを使用して使用しています。私は自分のアプリをサービスとして展開し、現在ISAPIとして展開するいくつかの問題を抱えています。 KBMMWは、接続プーリングなどを提供するため、多くの接続を備えたアプリに適しています。多くの機能と利点があります。あなた自身のためにサイトをチェックしてください。
私はエンタープライズバージョンを使用していますが、無料版はあなたに役立つかもしれません。
乾杯!
- ロウ