アンジュール -ある犬の物語-アルゴンフッ素水素化物
サーバーへの接続が確立されると、その接続が閉じられるまで、そのプロセスの接続ハンドルがクライアントコンピューターにキャッシュされます。 後続の接続で同じサーバー、ポート、および資格情報が使用され、ADS_FAST_BINDまたはADS_SERVER_BIND認証フラグのみが異なる場合、ADSIは既存の接続を再利用します。 ADSIは、この接続キャッシュをプロセスごとに実行します。
パフォーマンスを向上させるには、可能な限り既存の接続を再利用します。
Visual Basic で IAD を使用する例を次に示します (IAD インターフェイスの使用も参照してください)。
Dim cachedConn As IADs
Dim obj As IADs
Dim cachedName As String
Dim objName As String
' Connect to the server and maintain this handle to cache the connection.
Set cachedConn = GetObject("LDAP://MyMachine/DC=MyDomain,DC=Fabrikam,DC=com")
cachedName = cachedConn.Get("distinguishedName")
Debug.Print (cachedName)
' Reuse the connection to MyMachine opened by cachedConn.
' Be aware that this line executes quickly because it is not required
' to transmit over the network again.
Set obj = GetObject("LDAP://MyMachine/CN=Bob,CN=Users,DC=MyDomain,DC=Fabrikam,DC=com")
objName = obj.Get("distinguishedName")
Debug.Print (objName)
' Release the second connection.
Set obj = Nothing
' Reuse the connection to MyMachine opened by cachedConn again.
Set obj = GetObject("LDAP://MyMachine/CN=Administrator,CN=Users,DC=MyDomain,DC=Fabrikam,DC=com")
objName = obj.Get("distinguishedName")
Debug.Print (objName)
' Release the second connection again.
Set obj = Nothing
' Release the first connection.
Set cachedConn = Nothing
' The connection to MyMachine is closed.
次に示す別の例は、.NET での DirectoryEntry オブジェクトを使用した接続キャッシュの仕組みです。
// Connect to the server and maintain this handle to cache the connection.
using (DirectoryEntry? cachedConn = new DirectoryEntry("LDAP://MyMachine/DC=MyDomain,DC=Fabrikam,DC=com"))
{
DirectoryEntry? secondConn;
string? cachedName;
string? objName;
cachedName = cachedConn.Properties["distinguishedName"].Value?.ToString();
Debug.WriteLine(cachedName);
// Reuse the connection to MyMachine opened by cachedConn.
// Be aware that this line executes quickly because it is not required
// to transmit over the network again.
using (secondConn = new DirectoryEntry("LDAP://MyMachine/CN=Bob,CN=Users,DC=MyDomain,DC=Fabrikam,DC=com"))
{
objName = secondConn.Properties["distinguishedName"].Value?.ToString();
Debug.WriteLine(objName);
// Release the second connection.
secondConn = null;
// Reuse the connection to MyMachine opened by cachedConn again.
secondConn = new DirectoryEntry("LDAP://MyMachine/CN=Administrator,CN=Users,DC=MyDomain,DC=Fabrikam,DC=com");
objName = secondConn.Properties["distinguishedName"].Value?.ToString();
Debug.WriteLine(objName);
}
// Release and dispose the second connection
}
// The connection to MyMachine is closed and disposed