- - PR -
Webプロジェクトでのデータベースオープンについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-06-01 15:14
Webプロジェクト初心者です。よろしくお願いします。
VB.NET 2003 でWebプロジェクトを作成しています。 ADOを使用してSQLデータベースをオープンしているのですが、 ページが変わると当然ですが、DIM宣言しているDatabaseConnectionはなくなってしまいます。 そこで、ページロードするたびにオープンしてアンロードするときに閉じるのを 繰り返して使用する。(DIM宣言) もしくは、Public関数で宣言し、同じアプリケーションに接続するユーザー全員で 共有してしようするのとではどちらの方が良いのでしょうか? どちらも試してみましたが、テストした少人数ではどちらでも問題なく動きます。 多数のユーザーが同時に利用する場合などを考えて、 どちらで宣言するのがよいのかアドバイスいただけますか? また、上記以外の別の良い方法があればそちらも教えていただけると幸いです。 | ||||
|
投稿日時: 2007-06-01 15:53
Publicにしても別セッションのユーザーとはコネクションを共有しえることにはなりません。
ADO.NETはコネクションプーリングの機能が実装されているので、 DBアクセス毎にコネクションのOpenとCloseをする方法で問題ありません。 | ||||
|
投稿日時: 2007-06-01 15:54
こんにちは。
私はてっきり、ユーザー個別のセッションを横断してオブジェクトを共有するなんて出来ないと思っていました。 別セッションでデータベース接続を共有する方法があるのなら是非教えて頂きたいです。 | ||||
|
投稿日時: 2007-06-01 16:26
コネクションプーリングを使用してるってことは、ユーザー個別のセッションを横断して接続情報を共有してることとなると思いますが。 | ||||
|
投稿日時: 2007-06-01 16:42
セッションを横断してるわけじゃなくて単に振り分けているといったほうが正しいと思っていたのだが。
| ||||
|
投稿日時: 2007-06-01 16:42
PageクラスにApplicationというプロパティがありますが、これはアプリケーション全体で共有するオブジェクトを格納しておけます。
アプリケーションはサーバー上に一つだけ存在しますので、複数のユーザーでオブジェクトを共有することになります。 でもConnectionオブジェクトを使い回すってのはだめですね。 使い終わったら捨ててください。 | ||||
|
投稿日時: 2007-06-01 16:57
コネクションプーリングを行ってる環境での
Connection.Close()は接続を切断しているわけではなく接続をプールに戻すだけ。 逆にConnection.Open()は接続を確立しているとは限らず、プールに使用できる接続がある場合は、それを使い回す。(本当は難しいアルゴリズムらしい) 「セッションを横断」って表現が正しいかはわからないけど、別セッションでも同じ接続を使う可能性はあるし、スレ主が言ってる「同じアプリケーションに接続するユーザー全員で 共有してしようする」 ってのはコネクションプーリングが勝手にやっているってことだと思います。 | ||||
|
投稿日時: 2007-06-01 17:14
ごめんです。知っていてあえて書いてるです。 同じ接続を使っているという表現なら納得です。 [ メッセージ編集済み 編集者: ぶさいくろう 編集日時 2007-06-01 17:18 ] |