- - PR -
[ASP.NET]Oracleとのセッション
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-06-16 20:07
いつも拝見しています。
現在oo4o + ASP.NETでのWebアプリを構築しています。 現在問題となっているのはDBとのセッションをどのタイミング で貼るのかという問題です。 現在はSQL毎にセッションとコネクションを宣言して、カーソル 使用後は破棄しています。(でもこのセッションがなかなか解放で きていないです・・・。) Application_Startイベントでセッションを張って、Application_End イベントでリリース。 もしくはSession_Startイベントでセッションを張って、Session_End イベントでリリース。 という2つのパターンを考えています。 みなさんはどの方法をされてりるでしょうか。 ご教授をください。 | ||||||||||||||||
|
投稿日時: 2003-06-17 14:05
こんにちわ。
佐藤です。
oo4oのコネクションプールを使うと良いと思いますよ。 私はASP.NETではADO.NETで繋いでるので、普段使う事はないのですが……(^_^; でわでわ。 | ||||||||||||||||
|
投稿日時: 2003-06-17 17:24
satocさんありがとうです。
CreateDatabasePoolを調べました。 あまりOracleのヘルプには詳細なことまで書かれて なかったのでかなりの疑問があります。 1.初期プール値はこのCreateDatabasePoolを作成すればその数だけの セッションが作られるのか。 2.最大プール値を超えたときの対応は? 3.Application_StartイベントとApplication_Endイベントで いいのか? 4.複数のアプリを同じマシンからセッションをはりにいった場合は そのGlobal.asaxの記述があるWebアプリのプール数を書くのか。 それとも同じマシンからだかすべて統一でいいのか。 です。みなさんご教授ください。 | ||||||||||||||||
|
投稿日時: 2003-06-18 15:36
こんにちわ〜。
佐藤です。
initialSizeの指定数だけ張られます。
同時アクセス数やハードウェア要件等、またはシステム要求によるかと思います。一般的なシステムならConnectionPoolがあふれるとは思い難いので、待てば良いと思いますが……。 時間あたりのトランザクション数が万単位だ、とかアクティブなサイトですか?
たぶん良いと思います。 でも、もしシリアライズするつもりなら、Poolクラスを作ってSingletonに実装してしまった方が良いと思います。
これも要件次第かと思いますが(^^; 全アプリケーションでひとつのコネクションプールを使用したい、という事でしょうか? あまり気になるようでしたら自分でoo4o用にコネクションプールを作った方が早い、という考え方もありだと思います。 でわでわ。 | ||||||||||||||||
|
投稿日時: 2003-07-11 02:18
こんばんわ。レスが遅くなってしまって(^^;
自分でしてみました。 で、質問なのですが、最初にCreateDatabasePoolする時に 作成されたOraSessionはSession変数に入れたり、プロジェ クト内でグローバルにさせるのですが?(シリアル化も??) あと、複数アプリが1つのDBサーバへ同じ手法でアクセス するのですが、実用的にはどうすればよいのでしょうか。 一応調べてみてはいるのですが、更新の時に独立したセッション を作成しないといけないとか色々あるみたいですね。 よろしくお願いします。 | ||||||||||||||||
|
投稿日時: 2003-07-29 13:51
いつも拝見しています。
コネクションプールの使用で質問があります。 現在複数のアプリを同一IIS上で使用しているのですが、これを 1つのコネクションプールから使用したいと考えています。 何かルートとなるプロジェクトを作成すれば実現できるのでしょうか。 それともsatocさんの言われる「Poolクラスを作ってSingletonに実装」 をすればよいのでしょうか。 ご教授をください。 | ||||||||||||||||
|
投稿日時: 2003-07-29 14:51
oo4oを使わなければいけないのでしょうか?
ODP.NET、.NET Framework Data Provider for Oracle、Data Provider for OLEDBなどでは、接続プールは自動管理されています。 ざっと見たかんじ、Session_endは「PG内で明示的にセッションオフにしないと」と通らないようです。Application_endも、デバッガで動かしている中では通っていないようです。「おわり」を明示的に示さないと、「終わった」判断ができないのではないでしょうか。 | ||||||||||||||||
|
投稿日時: 2003-07-29 14:59
Jittaさんありがとうございます。
oo4oを使用してのプログラミングをして、もうすでに 全体のテスト段階に入ってるのです。ODP.NETへの乗り換え も検討したのですが、単純な置き換えではすまないのがわ かったのと、oo4oの機能がフルにODP.NETで使用できるのか 調査ができなかったので、oo4oで接続プールを使用し、 オブジェクト終了時にMarshal.ReleaseComObjectなどを 使用しています。 ということで、現段階のままでいきたいのです。 何かよい指針はありますでしょうか。 |