Freigeben über


Zwischenspeichern von Verbindungen

Wenn eine Verbindung mit einem Server hergestellt wird, wird das Verbindungshandle für diesen Prozess auf dem Clientcomputer solange zwischengespeichert, bis diese Verbindung geschlossen ist. Wenn bei einer nachfolgenden Verbindungsherstellung derselbe Server, Port und dieselben Anmeldeinformationen verwendet werden und lediglich die Authentifizierungskennzeichnungen ADS_FAST_BIND oder ADS_SERVER_BIND anders sind, verwendet ADSI die bestehende Verbindung wieder. ADSI führt diese Zwischenspeicherung von Verbindungen pro Prozess durch.

Um die Leistung zu erhöhen, sollten Sie, wenn möglich, bestehende Verbindungen wiederverwenden.

Im folgenden Beispiel werden IADs in Visual Basic verwendet (siehe auch Verwenden der IADs-Schnittstellen):

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.

Im weiteren Beispiel wird gezeigt, wie die Zwischenspeicherung von Verbindungen mithilfe des Objekts DirectoryEntry in .NET funktioniert:

// 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

Weitere Informationen

DirectoryEntry

Verwenden der IADs-Schnittstellen