インターシステムズ・データベースへの接続
ここでは、IRISConnection オブジェクトを使用して、.NET クライアント・アプリケーションとインターシステムズ・サーバ間の接続を作成する方法を説明します。
.NET との接続の確立
以下に示すコードでは、USER というネームスペースへの接続を確立します。接続オブジェクトをインスタンス化する場合に設定できるパラメータの完全なリストについては、“接続パラメータのオプション” を参照してください。
以下の簡単なメソッドを呼び出して接続を開始できます。
接続をインスタンス化するコードの追加
public IRISConnection Conn;
private void CreateConnection(){
try {
Conn = new IRISConnection();
Conn.ConnectionString =
"Server=localhost; Port=51773; Namespace=USER;"
+ "Password=SYS; User ID=_SYSTEM;";
Conn.Open();
}
catch (Exception eConn){
MessageBox.Show("CreateConnection error: " + eConn.Message);
}
}
このオブジェクトを作成しておくと、そのオブジェクトを必要とするすべてのクラス間で共有できます。接続オブジェクトは、必要に応じて開いたり閉じたりできます。この操作は、Conn.Open() および Conn.Close() を使用して明示的に実行できます。ADO.NET の Dataset を使用している場合は、DataAdapter のインスタンスにより、必要に応じて自動的に接続が開閉します。
共有メモリ接続
リモートの InterSystems IRIS インスタンスへの標準の ADO .NET 接続では TCP/IP が使用されます。パフォーマンスを最大限に高めるために、InterSystems IRIS は、InterSystems IRIS インスタンスと同じマシン上で実行される .NET アプリケーション向けに共有メモリ接続も提供します。この接続は、高いコストのかかる可能性があるカーネル・ネットワーク・スタックの呼び出しを回避して、.NET 操作のために最大限の低遅延と高スループットを実現します。
接続でサーバ・アドレス localhost または 127.0.0.1 が指定されている場合、既定で共有メモリが使用されます。実際のマシン・アドレスが指定されている場合は、TCP/IP が使用されます。共有メモリ・デバイスに障害が発生した場合、または共有メモリ・デバイスが利用できない場合、接続は自動的に TCP/IP にフォールバックします。
共有メモリを無効にするには、接続文字列で SharedMemory プロパティを false に設定します。例えば、サーバ・アドレスが localhost に指定されている場合でも、以下の接続文字列は共有メモリを使用しません。
"Server=localhost;Port=51774;Namespace=user;Password = SYS;User ID = _system;SharedMemory=false"
共有メモリは TLS 接続には使用されません。共有メモリ接続が試行されたかどうか、およびその接続が成功したかどうかの情報は、ログに記録されます。
Note:
共有メモリ接続はコンテナの境界を越えて機能しない
現在のところ、2 つの異なるコンテナ間の共有メモリ接続はサポートされていません。クライアントが localhost または 127.0.0.1 を使用してコンテナの境界を越えて接続を試行した場合、接続モードは既定で共有メモリになり、接続は失敗します。このことは、Docker の --network host オプションが指定されているかどうかに関係なく適用されます。サーバ・アドレスの実際のホスト名を指定するか、接続文字列で共有メモリを無効にすることで (上記の例のように)、コンテナ間の TCP/IP 接続を保証できます。
サーバとクライアントが同じコンテナにある場合は、問題なく共有メモリ接続を使用できます。
接続プーリング
接続プーリングは既定で有効になっています。以下の接続文字列パラメータを使用すると、接続プーリングのさまざまな機能を制御できます。
-
Pooling — 既定は true です。接続プーリングを使用しない接続を作成するには、Pooling を false に設定します。
-
Min Pool Size および Max Pool Size — 既定値は 0 および 100 です。これらのパラメータを設定して、この特定接続文字列で接続プールの最大サイズと最小 (初期) サイズを指定します。
-
Connection Reset および Connection Lifetime — Connection Reset を true に設定すると、プールされた接続のリセット・メカニズムが有効になります。Connection Lifetime は、アイドル状態のプールされた接続をリセットするまで待機する秒数を指定します。既定値は 0 です。
例えば以下の接続文字列は、接続プールの初期サイズを 2、接続の最大数を 5 に設定し、最大接続アイドル時間を 3 秒にして接続のリセットを有効にします。
Conn.ConnectionString =
"Server = localhost;"
+ " Port = 51774;"
+ " Namespace = USER;"
+ " Password = SYS;"
+ " User ID = _SYSTEM;"
+ " Min Pool Size = 2;"
+ " Max Pool Size = 5;"
+ " Connection Reset = true;"
+ " Connection Lifetime = 3;";
コネクション・プールのさまざまなメソッドとプロパティの詳細は、“.NET Managed Provider のクイック・リファレンス” を参照してください。