DE69730657T2 - Verfahren und System für gleichmässigen Zugriff auf mehrere Verzeichnisdienste - Google Patents

Verfahren und System für gleichmässigen Zugriff auf mehrere Verzeichnisdienste Download PDF

Info

Publication number
DE69730657T2
DE69730657T2 DE69730657T DE69730657T DE69730657T2 DE 69730657 T2 DE69730657 T2 DE 69730657T2 DE 69730657 T DE69730657 T DE 69730657T DE 69730657 T DE69730657 T DE 69730657T DE 69730657 T2 DE69730657 T2 DE 69730657T2
Authority
DE
Germany
Prior art keywords
directory service
interface
class
oleds
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69730657T
Other languages
English (en)
Other versions
DE69730657D1 (de
Inventor
Chuck Y. Bellevue Chan
Krishna Bellevue Ganugapati
Margaret K. Kirkland Johnson
Steven G. Redmond Judd
Stuart L. S. Bellevue Kwan
Colin Issaquah Watson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE69730657D1 publication Critical patent/DE69730657D1/de
Publication of DE69730657T2 publication Critical patent/DE69730657T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Description

  • Technisches Gebiet
  • Diese Erfindung betrifft Computer-basierte Verzeichnisdienste und ganz besonders ein Verfahren und System zum gleichmäßigen Zugreifen auf die Verzeichnisdienste.
  • Hintergrund der Erfindung
  • Computersysteme speichern und unterhalten typischerweise eine große Menge an Daten, die das Computersystem und seine Benutzer betreffen. Zum Beispiel kann ein Computersystem Namen, E-Mail-Adressen und Telefonnummern der Benutzer des Computersystems bewahren. Das Computersystem kann auch Information bezüglich der verschiedenen mit dem Computersystem verbundenen Drucker unterhalten. Diese Information kann Druckermerkmale (z.B. Laser und Farbe) und Namen von Benutzern enthalten, die berechtigt sind, jeden Drucker zu benutzen. Mehrere verschiedene Arten von Computerprogrammen, bekannt als "Clients", können Zugang zu dieser Information benötigen. Zum Beispiel kann ein Client ein Computerprogramm sein, das festzustellen hat, welche Drucker benutzt werden können, um ein Dokument in Farbe zu drucken. Ein anderer Client kann ein Computerprogramm sein, das einem Systemverwalter erlaubt, die Information zu aktualisieren, um z.B. Information bezüglich eines neu hinzugefügten Druckers widerzuspiegeln. Computersysteme haben traditionell solche Information in einer Vielfalt von Stellen und Formaten gespeichert. Zum Beispiel kann Information bezüglich eines Druckers in einer Konfigurationsdatei gespeichert werden, und Information bezüglich eines Benutzers kann in einer Datenbank gespeichert werden. Typischerweise war es daher für einen Programmierer, der einen Client entwickelte, sehr schwer, auch nur zu wissen, wo nach dieser Information zu suchen ist, geschweige denn zu wissen, wie darauf zuzugreifen ist.
  • Einige Computersysteme stellen einen Verzeichnisdienst bereit, um beim Speichern und Unterhalten dieser Information zu helfen. Ein Verzeichnisdienst stellt einen Speicher dieser Information bereit, auf den ein Client über das Netzwerk zugreifen kann. Verzeichnisdienste verweisen gewöhnlich auf die Dinge (z.B. Benutzer, Drucker oder Zugriffsgruppen), für die Information unterhalten wird, als "Objekte". Verzeichnisdienste gliedern solche Objekte hierarchisch in ein Verzeichnis. Das heißt, ein Objekt, auf das als ein Behälterobjekt verwiesen wird, kann verschiedene andere Objekte enthalten, auf die als enthaltene Objekte verwiesen wird. Zum Beispiel ist eine Zugriffsgruppe, die Benutzer umfasst, die sich in gemeinsame Zugriffsrechte auf eine Ressource teilen, ein Behälterobjekt, das Benutzer enthält, die enthaltene Objekte sind. Jedes Objekt, für das ein Verzeichnisdienst Information untehält, hat einen eindeutigen Identifikator (z.B. ein Name), mit dem ein Client das Objekt identifizieren kann. Obwohl Verzeichnisdienste ursprünglich entwickelt wurden, um Information bezüglich Computersystemen zu unterhalten, können sie benutzt werden, um Information ohne Bezug auf Computersysteme zu unterhalten. Zum Beispiel kann ein Verzeichnisdienst von einem Flugzeughersteller verwendet werden, um eine Teileliste für die Komponenten und Unterkomponenten eines Flugzeugs zu unterhalten.
  • 1 veranschaulicht eine Musterhierarchie eines Verzeichnisdienstes. Jeder Block stellt ein Objekt einer bestimmten "Objektklasse" dar. Zum Beispiel, ein Objekt, das eine Firma darstellt, würde eine Objektklasse mit Namen "Firma" haben. Jede Objektklasse definiert die Merkmale von Objekten dieser Objektklasse. Zum Beispiel kann die Objektklasse Firma die Merkmale "Name" und "Adresse" definieren. Jedes Objekt hat einen Merkmalwert für jedes für die Objektklasse definierte Merkmal. Zum Beispiel kann ein Objekt der Objektklasse Firma den Merkmalwert "MS" für das Namensmerkmal haben. Block 101 entspricht einem Objekt der Objektklasse Firma und hat einen Wert für den Namen und Adressmerkmale. Block 102 entspricht einem Objekt der Objektklasse Abteilung und hat einen Wert für den Namen der Abteilung (z.B. "System"). Block 103 entspricht einem Objekt der Objektklasse Benutzer und hat einen Wert für die E-Mail-Adresse des Benutzers. Weil der Verzeichnisdienst hierarchisch gegliedert ist, kann jedes Objekt durch einen Pfad von der Wurzel zu dem Objekt eindeutig identifiziert werden. Zum Beispiel wird Objekt 102 durch den Pfad "Firma=MS\Abtei-lung=System" eindeutig identifiziert. Der Verzeichnisdienst stellt einen begrifflichen endlichen Raum, bezeichnet als Namensraum, bereit, in dem ein gegebener Name aufgelöst werden kann. Der Verzeichnisdienst löst Pfade zu Objekten in dem Verzeichnis unzweideutig auf.
  • Verschiedene Lieferanten stellen Verzeichnisdienstsysteme bereit. Jeder Lieferant entwirft und implementiert typischerweise eine Anwendungsprogrammschnittstelle (API), um Clients zu erlauben, auf sein Verzeichnisdienstsystem zuzugreifen. Jedes Verzeichnisdienstsystem kann sehr verschiedene API-Sätre haben, was in der Regel der Fall ist. Wenn ein Client Verzeichnisdienstsysteme benutzen muss, weil z.B. der Client in einer Umgebung arbeitet, die Personal Computer und Mainframe Computer enthält, müsste der Programmierer des Client über die AIP-Sätre jedes Verzeichnisdienstes Bescheid wissen und den Client entwerfen, um jeden der API-Sätze zu unterstützen.
  • Obwohl jeder API-Satz tieferantenspezifisch ist, stellen API-Sätze im Allgemeinen ähnliche Funktionalität bereit. Die API-Sätze enthalten gewöhlich Funktionen zum Zugreifen auf Merk malwerte der Objekte und Funktionen zum Definieren neuer Objektklassen. Die Funktionen zum Manipulieren von Objekten sind z.B. OpenObject, ReadObject, WriteObject, ListObjects, CloseObject, CreateObject und DeleteObject. Der Funktion OpenObject wird die Identifikation (z.B. Pfad) zu einem Objekt übergeben, und sie gibt eine Handhabe zurück, die dieses Objekt identifiziert. Die Handhabe wird später von dem Client benutzt, um das offene Objekt gegenüber dem Verzeichnisdienst zu identifizieren. Die Funktion OpenObject benutzt die Identifikation, um das Objekt zu identifizieren, und lokalisiert dann die Merkmale des identifizierten Objekts. Der Funktion ReadObjekt werden eine Handhabe zu einem offenen Objekt und eine Liste der Namen der Merkmale dieses Objekts, die zurückzugewinnen sind, übergeben. Die Funktion ReadObjekt gibt die aktuellen Merkmalwerte für diese Merkmale zurück. Der Funktion WriteObject wird eine Handhabe zu einem offenen Objekt und einen Liste von Merkmalnamen und Merkmalwertpaaren übergeben. Die Funktion WriteObject setzt jedes genannte Merkmal in dem offenen Objekt auf den Merkmalwert des Paares. Der Funktion ListObjects wird eine Handhabe zu einem offenen Objekt übergeben, und sie gibt eine Liste zurück, die die Identifikation jedes Objekts enthält, das in dem offenen Objekt enthalten ist. Der Funktion CloseObject wird eine Handhabe zu einem offenen Objekt übergeben, und sie schließt das Objekt, sodass darauf mit dieser Handhabe nicht mehr zugegriffen werden kann. Der Funktion CreateObject wird eine Objektklasse übergeben, sie erzeugt ein Objekt der Objektklasse, die in dem offenen Objekt enthalten ist, und gibt eine Handhabe zu dem enthaltenen Objekt zurück. Der Funktion DeleteObject wird eine Handhabe zu dem offenen Objekt übergeben, und sie entfernt das offene Objekt aus seinem Behälterobjekt.
  • Die Funktionen zum Definieren der Objektklassen sind CreateObjectClass, DeleteObjectClass, CreateProperty, DeleteProperty, AddPropertyToObjectClass, DeletePropertyFrom-ObjectClass und ListPropertiesOfObjectClass. Der Funktion CreateObjectClass wird der Name einer neuen Objektklasse übergeben, und sie erzeugt eine neue Objektklasse. Sobald eine Objektklasse erzeugt ist, kann ein Client Objekte dieser Objektsklasse erzeugen. Der Funktion CreateProperty werden der Name eines Merkmals und der Merkmaltyp (z.B. Ganzzahl oder Zeichenkette) übergeben, und sie erzeugt ein Merkmal dieses Merkmaltyps (z.B. Merkmalname von "Adresse" mit Merkmaltyp "Zeichenkette"). Der Funktion AddProperty-ToObjectClass werden der Name einer Objektklasse und der Name eines Merkmals übergeben, und sie fügt das genannte Merkmal als ein Merkmal der genannten Objektklasse hinzu. Der Funktion ListPropertiesOfObjectClass wird der Name einer Objektklasse übergeben, und sie gibt eine Liste der Merkmale zurück, die dieser Objektklasse hinzugefügt wurden. Die Funktionen DeleteObjectClass, DeleteProperty und DeletePropertyFromObjectClass führen das durch ihre Namen angedeutete Verhaften durch.
  • Die vorliegende Efindung wird im Folgenden unter Verwendung einiger objektorientierter Verfahren beschrieben, und daher wird eine Übersicht von wohl bekannten objektorientierten Programmiertechniken bereitgestellt. (Der Begriff "Objekt" hat viele verschiedene Bedeutungen, wenn er in verschiedenen Kontexten gebraucht wird. Im Rest des Hintergrunds wird der Begriff "Objekt" in einem objektorientierten Sinn gebraucht, um auf eine In-Speicher-Datenstruktur zu verweisen.) Zwei übliche Eigenschaften von objektorienterten Programmiersprachen sind die Unterstützung für Dateneinkapselung und Daten-Hinterlassenschaft. Dateneinkapselung betrifft das Binden von Funktionen und Daten. Hinterlassenschaft betrifft die Fähigkeit, einen Datentyp in Form von anderen Datentypen zu deklarieren. In der Sprache C++ werden Einkapselung und Hinterlassenschaft durch die Verwendung von Klassen unterstützt. Eine Klasse ist ein benutzerdefinierter Typ. Eine Klassendeklaration beschreibt die Datenelemente und Funktionselemente der Klasse. Ein Funktionselement wird auch als ein Verfahren einer Klasse bezeichnet. Die Datenelemente und Funktionselemente einer Klasse werden zusammengebunden, insofern als die Funktion auf einer Instanz der Klasse arbeitet. Ein Instanz einer Klasse wird auch ein Objekt der Klasse genannt. Eine Klasse liefert daher eine Definition für eine Gruppe von Objekten mit ähnlichen Merkmalen und gemeinsamem Verhaften.
  • Um Speicher für ein Objekt einer bestimmten Klasse (Typ) zuzuteilen, wird ein Objekt eingerichtet. Sobald eingerichtet, können den Datenelementen des einzelnen Objekts Daten zugewiesen werden. Ebenfalls können, sobald eingerichtet, die Funktionselemente des einzelnen Objekts aufgerufen werden, um auf die Datenelemente zuzugreifen und sie zu manipulieren. Auf diese Weise implementieren daher die Funktionselemente das Verhalten des Objekts, und dasObjekt liefert eine Struktur zum Einkapseln von Daten und Verhaften in eine einzige Wesenheit.
  • Um das Konzept der Hinterlassenschaft zu unterstützen, können Klassen aus (basierend auf der Deklaration von) anderen Klassen abgeleitet werden. Eine abgeleitete Klasse ist eine Klasse, die die Eigenschaften, Datenelemente und Funktionselemente ihrer Grundklassen erbt. Eine Klasse, die die Eigenschaften einer anderen Klasse erbt, ist eine abgeleitete Klasse. Eine Klasse, die nicht die Eigenschaften einer anderen Klasse erbt, ist eine Primär(Wurzel) Klasse. Eine Klasse, deren Eigenschaften von einer anderen Klasse geerbt werden, ist eine Grundklasse. Ein abgeleitete Klasse kann die Eigenschaften von mehreren Klassen erben; das heißt, eine abgeleitete Klasse kann mehrere Grundklassen haben. Dies wird als mehrfache Hinterlassenschaft bezeichnet.
  • Eine Klasse kann auch spezifizieren, ob ihre Funktionselemente virtuell sind. Deklarieren, dass ein Funktionselement virtuell ist, bedeutet, dass die Funktion durch eine Funktion des gleichen Namens und Typs in einer abgeleiteten Klasse umgestoßen werden kann. Wenn eine virtuelle Funktion deklariert wird, ohne Implementierung bereitzustellen, wird sie als eine reine virtuelle Funktion bezeichnet. Eine reine virtuelle Funktion ist eine Funktion, die mit dem reinen Spezifizierer, "=0", deklariert wird. Wenn eine Klasse eine reine virtuelle Funktion spezifiziert, dann muss jede abgeleitete Klasse eine Implementierung für dieses Funktionselement spezifizieren, bevor das Funktionselement aufgerufen werden kann. Eine Klasse, die wenigstens ein reines virtuelles Funktionselement enthält, ist eine abstrakte Klasse.
  • 2 ist ein Blockdiagramm, das typische Datenstrukturen veranschaulicht, die benutzt werden, um ein Objekt darzustellen. Ein Objekt umfasst Instanzdaten (Datenelemente) und Funktionselemente, die das Verhalten des Objekts implementieren. Die Datenstrukturen, die zur Darstellung eines Objekts benutzt werden, umfassen die Instanzdatenstruktur 201, die Tabelle virtueller Funktionen 202 und die Funktionselemente 203, 204, 205. Die Instanzdatenstruktur 201 enthält einen Zeiger auf die Tabelle virtueller Funktionen 202 und enthält Datenelemente. Die Tabelle virtueller Funktionen 202 enthält einen Eintrag für jedes für das Objekt definierte virtuelle Funktionselement. Jeder Eintrag enthält einen Verweis auf den Code, der das entsprechende Funktionselement implementiert. Das Layout dieses Musterobjekts entspricht Modellen, die im US Patent Nr. 5,297,284, betitelt "A Method for Implementing Virtual Functions and Virtual Bases in a Compiler for an Object Oriented Programming Language" beschrieben sind. Im Folgenden wird ein Objekt als ein Fall einer Klasse beschrieben, wie durch die Programmiersprache C++ definiert. Eine in der Technik erfahrene Person würde erkennen, dass andere Objektmodelle unter Verwendung anderer Programmiersprachen definiert werden können.
  • Ein Vorteil der Verwendung von objektorientierten Techniken ist, dass diese Techniken benutzt werden können, um das Teilen von Objekten zu erleichtern. Zum Beispiel kann ein Programm, das die Funktionselemente eines eingerichteten Elements implementiert (ein "Server-Programm"), das Objekt mit einem anderen Programm (ein "Client-Programm") teilen. Um einem Objekt einer beliebigen Klasse zu erlauben, mit einem Client-Programm geteilt zu werden, werden Schnittstellen definiert, durch die auf ein Objekt zugegriffen werden kann, ohne dass des Client-Programm zum Zeitpunkt der Compilation Zugriff auf die Klassendefinitionen haben muss. Eine Schnittstelle ist ein benannter Satz von logisch verwandten Funktionselementen. In C++ ist eine Schnittstelle eine abstrakte Klasse ohne Datenelemente, und deren virtuelle Funktionen sind alle rein. Eine Schnittstelle stellt daher ein veröffentlichtes Protokoll zum Kommunizieren von zwei Programmen bereit. Schnittstellen werden typischerweise zur Ableitung benutzt: Ein Programm definiert (implementiert) Klassen, die Implementierungen für die Schnittstellen, von denen die Klassen abgeleitet werden, bereitstellen. Danach werden Objekte als Instanzen dieser abgeleiteten Klassen erzeugt. Objekte, die aus abgeleiteten Klassen, die bestimmte Schnittstellen implementieren, eingerichtet werden, sollen die Schnittstellen "unterstützen". Ein Objekt unterstützt, abhängig von der gewünschten Funktionalität, eine oder mehrere Schnittstellen.
  • Wenn ein Client-Programm ein Objekt zu teilen wünscht, muss das Client Programm auf den Code zugreifen, der die Schnittstellen für das Objekt (der abgeleitete Klassencode) implementiert. In der OLE 2.01 Umgebung, gegründet von Microsoft Corporation in Redmont, Washington, wird, um auf den abgeleiteten Klassencode (auch Klassencode genannt) zuzugreifen, jeder Klassenimplementierung ein einmaliger Klassenidentifikator (ein "CLSID") gegeben. OLE 2.01 wird in "Inside OLE", 2. Ausgabe, Microsoft Press, 1995 von Kraig Brock schmidt beschrieben. Zum Beispiel kann Code, der ein von Microsoft Corporation entwickeltes Spreadsheet-Objekt implementiert, einen Klassenidentifikator "MSSpreadsheet" haben, während Code, der ein von einer anderen Firma entwickeltes Spreadsheet-Objekt implementiert, einen Klassenidentifikator "LTSSpreadsheet" haben kann. Eine ständige Registrierung wird in jedem Computersystem bewahrt, die jeden CLSID in den Code abbildet, der die Klasse implementiert. Typischerweise wird, wenn ein Spreadsheet-Programm auf einem Computersystem installiert wird, die ständige Registrierung aktualisiert, um die Verfügbarkeit dieser Klasse von Spreadsheet-Objekten widerzuspiegeln. Solange der Spreadsheet Entwickler jedes Funktionslement, das durch die von Spreadsheet-Objekten zu unterstützenden Schnittstellen definiert wird, implementiert, und solange die ständige Registrierung aufrechterhalten wird, kann das Client-Programm auf die Funktionselemente von geteilten Spreadsheet Objekten ohne Rücksicht darauf zugreifen, welches Server-Programm sie implementiert hat oder wie sie implementiert wurden.
  • Da ein Objekt einige Schnittstellen unterstützen kann und andere nicht, kann ein Client Programm zur Laufzeit feststellen müssen, ob ein bestimmtes Objekt eine bestimmte Schnittstelle untersützt. Um diese Feststellung zu ermöglichen, unterstützt jedes COM-Objekt die IUnknown-Schnittstelle, die ein Funktionselement enthält, und Querylnterface, die angibt, welche Schnittstellen für das Objekt implementiert sind. Das Querylnterface-Verfahreen ist wie folgt definiert:
    virtual HRESULT Querylnterface (REFIID iid, void**ppv) = 0;
  • Dem Querylnterface-Verfahren wird ein Schnittstellenidentifikator in Parameter iid (von Typ REFIID) übergeben, und es gibt in Parameter ppv einen Zeiger auf die Implementierung der designierten Schittstelle "iid" zurück. Das Querylnterface-Verfahren ist typischerweise codiert, um über alle verfügbaren Schnittstellen des Objekts, zu dem es gehört, Bescheid zu wissen. Wenn das Objekt die Schnittstelle nicht unterstützt, gibt das Querylnterface-Verfahren unwahr zurück. Der Typ HRESULT gibt einen vordefinierten Status an.
  • Die (Unknown-Schnittstelle definiert auch die Verfahren AddRef und Release, die zum Implementieren einer Verweiszählung benutzt werden. Wann immer einer neuer Verweis auf eine Schnittstelle erzeugt wird, wird das AddRef-Verfahren aufgerufen, um einen Verweiszählwert des Objekts zu erhöhen. Wenn ein Verweis nicht mehr gebraucht wird, wird das Release-Verfahren aufgerufen, um den Verweiszählwert zu dekrementieren, und wenn der Verweiszählwert auf null geht, wird das Objekt freigesetzt.
  • Zusammenfassung der Erffindung
  • Die Erfindung wird durch die Gegenstände der unabhängigen Ansprüche bereitgestellt.
  • Bevorzugte Ausführungen werden in den abhängigen Ansprüchen definiert.
  • Die vorliegende Erfindung stellt eine Definition für OLE-Schnittstellen und ein Modell für Anbieter-Software zum Zugreifen auf eine Vielzahl von Verzeichnisdiensten in einer gleichmäßigen Weise bereit. Jeder Verzeichnisdienstanbieter verwaltet Information bezüglich Objekten dieses Verzeichnisdienstes. Die Art der Information, die ein Verzeichnisdienst für ein Objekt verwaltet, wird durch die Objektklasse des Objekts definiert. Eine Objektklasse definiert die Merkmale (d.h. Information), die ein Verzeichnisdienst für Objekte dieser Objektklasse verwaltet. Jedes Merkmal hat einen Merkmalnamen und Merkmaltyp. Ein Verzeichnisdienst hat einen Merkmalnamen für jedes durch die Objektklasse jedes Objekts definierte Merkmal. Das Verzeichnisdienstsystem umfasst eine Schema-Browsing-Komponente, eine Namenauflösungskomponente, eine Bindungskomponente und eine Erweiterungskomponente. Die Schema-Browsing-Komponente steuert das Rückgewinnen des Merkmalnamens und Merkmalstyps jedes Merkmals jeder Objektklasse jedes Verzeichnisdienstens. Ein Client eines Verzeichnisdienstsystems benutzt die Schema-Browsing-Komponente, um Merkmalnamen und Merkmaltypen der Objektklassen zurückzugewinnen. Die Namenauflösungskomponente steuert die Rückgewinnung eines eindeutigen Identifikators eines Objekts innerhalb eines Verzeichnisdienstes und das Auffinden des Objekts innerhalb des Verzeichnisdienstes. Die Bindungskomponente steuert das Binden an ein In-Speicher-Objekt, das ein lokalisiertes Objekt in einem Verzeichnisdienst darstellt. Die Erweiterungskomponente steuert das Definieren neuer Objektklassen und neuer Merkmale für jeden Verzeichnisdienst. Ein Client des Verzeichnisdienstsystems benutzt die Erweiterungskomponente, um neue Objektklas sen und neue Merkmale zu definieren.
  • Kurzbeschreibung der Zeichnungen
  • 1 veranschaulicht eine Musterhierarchie eines Verzeichnisdienstes.
  • 2 veranschaulicht typische Datenstrukturen, die zum Darstellen eines Objekts benutzt werden.
  • 3A veranschaulicht die Hierarchie von OleDs.
  • 3B veranschaulicht die Beziehung zwischen OleDs-Objekten und ihren entsprechenden Objekten in einem Verzeichnisdienst.
  • 4 ist ein Blockschaltbild eines zum Implementieren der vorliegenden Erfindung konfigurierten Computersystems.
  • 5 ist ein Flussdiagramm der Funktion OleDsGetObject, die die Bindefunktion von OleDs ist.
  • 6 ist ein Flussdiagramm des Verfahrens IOleDs::Getlnfo.
  • 7 ist ein Flussdiagramm des Verfahrens IOleDS::Get.
  • 8 ist ein Flussdiagramm des Verfahrens IOleDsContainer::CopyHere.
  • 9 ist ein Flussdiagramm des Verfahrens IOleDs::Create.
  • 10 ist ein Flussdiagramm der Prozedur zum Anzeigen aller Namensräume.
  • Ausführliche Beschreibung der Efindung
  • Die vorliegende Erfindung stellt ein Rahmenwerk zum gleichmäßigen Zugriff auf verschiedene unterschiedliche Verzeichnisdienste bereit. In einer bevorzugten Ausführung stellt das Verzeichnisdienstsystem, bezeichnet als OleDs, eine Architektur bereit, die Clients erlaubt, auf den Inhalt dieser verschiedenen Verzeichnisdienste unter Verwendung eines einzigen, gemeinsamen Satzes von OleDs-Objekten, -Attributen und -Schnittstellen zuzugreifen. Ein OleDs-Objekt ist eine In-Speicher-Struktur, die einem Objekt eines Verzeichnisdienstes oder einer Objektklasse des Verzeichnisdienstes entspricht. Wenn ein OleDs-Objekt einem Objekt entspricht, stellt es eine Schnittstelle zum Zugreifen auf die Merkmalwerte und Verfahren dieses Objekts bereit. Wenn ein OleDs-Objekt einer Objektklasse entspricht, stellt es eine Schnittstelle zum Zugreifen auf die Definition dieser Objektklasse bereit. Jeder Anbieter eines Verzeichnisdienstes liefert eine Implementierung dieser Schnittstellen für seinen Verzeichnisdienst, die das Verhalten seines API-Satzes in das Verhalten dieser OleDs-Schnittstellen abbildet. Auf diese Weise kann ein Client, der entwickelt ist, um die OleDs-Architek tur zu verwenden, auf jeden dieser Verzeichnisdienste ungeachtet der Unterschiede in ihren API-Sätzen zugreifen.
  • OleDs modelliert alle Verzeichnisdienste als innerhalb eines Wurzelbehälterobjekts, bezeichnet als ein "Namensraum"-Behälter, befindlich. 3 veranschaulicht den Namensraum-Behälter. Die Objekte in dem Namensraum-Behälter stellen die verschiedenen Verzeichnisdienste dar. OleDs stellt eine Schnittstelle zum Aufzählen der in dem Namensraum-Behälter enthaltenen Verzeichnisdienste bereit. Jeder enthaltene Verzeichnisdienst wird durch ein OleDs-Namensraum-Behälterobjekt dargestellt. Ein Client kann die Schnittstelle verwenden, um das Vorhandensein eines Verzeichnisdienstes zu ermitteln, und kann auf sein Schema zugreifen, um die Definition der Objektklassen des Verzeichnisdienstes zu ermitteln. Das Schema enthält eine Definition der Objektklassen des Verzeichnisdienstes. Durch die vom OIeDs bereitgestellten Schnittstellen kann ein Client zur Laufzeit das Vorhandensein und den Inhalt von Verzeichnisdiensten ermitteln, die zur Kompilationszeit nicht bekannt waren.
  • Da jeder Verzeichnisdienst typischerweise seine eigene Konvention zur Benamung seiner Objekte hat, stellt das OleDs eine gleichförmige Benamungskonvention bereit, die jedes Objekt in den verschiedenen Verzeichnisdiensten ohne Konflikt eindeutig identifiziert. Dieser eindeutige Identifikator wird als ein OleDS-Pfad bezeichnet Der OleDs-Pfad ist eine Zeichenkette, die den Verzeichnisdienst und den Satz von eingepackten Behälterobjekten identifiziert, die geöffnet werden müssen, um auf das identifizierte Objekt zuzugreifen. Das OleDs hat das folgende Format:
  • Figure 00090001
  • Der "Namespaceldentifier" identifiziert den Verzeichnisdienst eindeutig. Die Zeichenfolge nach dem "1" oder ":" ist in einem vom Verzeichnisdienst unabhängigen Format. Das heißt, jeder Verzeichnisdienst kann sein eigenes Format definieren.
  • OleDs stellt eine Bindefunktion zum Binden eines OleDs-Pfades an ein OleDs-Objekt bereit, das dem durch den OleDs-Pfad identifizierten Objekt entspricht. Dieser Bindefunktion wird ein OleDs-Pfad übergeben, und sie gibt einen Zeiger auf das dem Objekt eintsprechende OleDs-Objekt zurück. Um das OleDs-Objekt zu binden, teilt die Bindefunktion den Namensraum-Identifikator von dem OleDs-Pfad. Die Bindefunktion benutzt diesen Namensraum-Identifikator, um Code zurückzugewinnen (z.B. in einer dynamisch verbundenen Bibliothek), der den Zugriff auf den identifizierten Namensraum implementiert. (OleDs unterhält eine Registrierung für Verzeichnisdienstanbieter, um die Stelle ihrer Implementierung von OleDs-Schnittstellen zu registrieren.) Die Bindefunktion ruft dann den rückgewonnenen Code durch Übergeben des OleDs-Pfades auf. Der aufgerufene Code benutzt den API-Satz des Verzeichnisdienstes, um auf das identifizierte Objekt zuzugreifen und das durch durch die OleDs-Schnittstelle definierte Verhalten zu implementieren.
  • OleDs modelliert dieObjekte jedes Verzeichnisdienstes als entweder OleDs-Behälterobjekte oder OleDs-Blattobjekte. Um auf ein Behälterobjekt eines Verzeichnisdienstes zuzugreifen, wird ein OleDs-Behälterobjekt eingerichtet, das eine durch den Anbieter des Verzeichnisdienstes bereitgestellte Implementierung hat. Desgleichen wird, um auf ein Blattobjekt des Verzeichnisdienstes zuzugreifen, ein OleDs-Blattobjekt eingerichtet, das eine durch den Anbieter des Verzeichnisdienstes bereitgestellte Implementierung hat. Jedes OleDs-Objekt enthüllt eine Schnittstelle zum Zugreifen auf die Merkmale des entsprechenden Objekts des Verzeichnisdienstes. Jedes OleDs-Behälterobjekt enthüllt außerdem eine Schnittstelle, über die auf seine enthaltenen Objekt durch einen Client zugegriffen werden kann.
  • 4 veranschaulicht die Beziehung zwischen OleDs-Objekten und ihren entsprehenden Objekten in einem Verzeichnisdienst. Jeder Verzeichnisdienstanbieter stellt Implementierungen jeder durch die OleDs-Objekte enthüllten Schnittstelle bereit. Diese Implementierungen bewirken ein Abbilden des Verhaltens des API-Satres des Anbieters in das Verhalten der OleDs-Schnittstellen. Jeder Client kann daher gleichmäßig auf vielfache Verzeichnisdienste unter Verwendung der Anbieter-Implementierungen der OleDs-Schnittstellen zugreifen.
  • Um Clienten beim Zugreifen auf die Objekte eines Verzeichnisdienstes zu helfen, definiert OleDs ein Modell zur Darstellung des Schemas jedes Verzeichnisdienstes. Begrifflich wird jeder Verzeichnisdienst als ein Schemabehälterobjekt besitzend angesehen, das ein Schemaobjekt für jede Objektklasse enthält. Das Schemaobjekt definiert die Merkmale der Objektklasse. Dem Schemabehälter wird ein vordefinierter Name in dem Namensraum, z.B. "Schema" zugewiesen. Um auf einen Schemabehälter zuzugreifen, benutzt ein Client die OleDs-Bindefunktion durch Übergeben des OleDs-Pfades des Schemas (z.B. "@WinNTDS! Schema"). Die OleDs-Bindefunktion gibt einen Zeiger auf ein OleDs-Behälterobjekt zurück, das dem Schemabehälterobjekt entspricht. Ein Client kann Schnittstellen des OleDs-Behälterobjekts benutzen, um die enthaltenen Schemaobjekte aufzuzählen. In dieser Weise kann ein Client die Definition der verschiedenen Objektklassen zur Laufzeit ermitteln. Außerdem kann ein Client zusätzliche Objektklassen durch Hinzufügen von Schemaobjekten zu dem Schemabehälterobjekt definieren.
  • OleDs definiert im Voraus mehrere Objektklassen, um die Implementierung des Abbildens des Verhaltens eines Verzeichnisdienst-API-Satres in das Verhalten der OleDs-Schnittstellen zu erleichtern. Insbesondere stellt OleDs Objekklassendefinitionen für gemeinsame Behälterobjekte, z.B. Organisationseinheit und Land, und für gemeinsame Blattobjekte, z.B. ein Benutzer oder eine Ressource, bereit.
  • OleDs definiert das Konzept eines Vorgabe-Namensraumes oder Verzeichnisdienstes. Ein Vorgabe-Namensraum ist der Namensraum, den ein Client zu benutzen wünscht, wenn in dem OleDs-Pfad kein Namensraum spezifiziert ist. Die Identifikation des Vorgabe-Namensraumes für einen Client oder Benutzer würde typischerweise in der durch den Client oder Benutzer indexierten Registrierung gespeichert werden.
  • OleDs definiert auch das Konzept eines Vorgabe-OleDs-Objekts, das durch jeden Anbieter implementiert wird, um einem Client zu erlauben, Objekte einer neu definierten Objektklasse dem Verzeichnisdienst hinzuzufügen. Ein Verzeichnisdienstanbieter würde typischerweise eine Implementierung eines OleDs-Objekts für jede Objektklasse in dem Verzeichnisdienst bereitstellen. Zum Beispiel kann ein Anbieter verschiedene Implementierungen für die Objektklassen für ein Computerobjekt und Firmenobjekt bereitstellen. Jede Implementierung hat Kenntnis davon, welche Merkmale für die entsprechende Objektklasse definiert sind, und kann den API-Satz auffordern, die Werte der Merkmale zurückzugewinnen. Wenn jedoch ein Client ein neues Objekt zur Laufzeit definiert, wird es keine entsprechende Implementierung geben. Folglich stellt jeder Anbieter, der es erlaubt, dass neue Objektklassen für seinen Verzeichnisdienst definiert werden, auch eine Implementierung eines Vorgabe-OleDs-Objekts bereit. Wann immer ein Client verlangt, ein OleDs-Objekt für ein Objekt einzurichten, für das es keine Implementierung gibt, wird ein Vorgabe-OleDs-Objekt eingerichtet.
  • Das Vorgabe-OleDs-Objekt enthält den Namen der Objektklasse, der es entspricht, den es benutzt, um die Definition der Objektklasse aus dem Schema zurückzugewinnen. Mittels dieser Definition kann das Vorgabe-OleDs-Objekt auf das entsprechende Objekt des Verzeichnisdienstes zugreifen.
  • 3A ist ein Blockdiagramm, das die Hierarchie des OleDs veranschaulicht. Die Hierarchie enthält einen als "Namensräume" bezeichneten Wurzelbehälter. Der Namensraum-Behälter enthält folgerichtig den Namensraum für jeden Verzeichnisdienst. 3B ist ein Blockdiagramm, das die Architektur des OleDs veranschaulicht. Jeder Anbieter eines Verzeichnisdienstes implementiert ein Abbilden des Verhaltens des Anbieter-API-Satres in das Verhalten der OleDs-Schnittstellen. Jedes OleDs-Behälterobjekt enispricht einem Behälterobjekt in dem Verzeichnisdienst, und jedes OleDs-Blattobjekt entspricht einem Blattobjekt in dem Verzeichnisdienst.
  • OleDs sorgt für frühes und spätes Binden eines Client an die OleDs-Objekte. Frühes Binden bedeutet, dass der Entwickler eines Client zur Kompilationszeit den Namen der Merkmale jedes Objekts kennt. Der Client kann daher programmiert werden, um auf die Werte von diesen Merkmalen unter Verwendung von Verfahren zum "Holen" und "Ablegen" von Merkmalen (z.B. "get_Address" oder "put_Name") direkt zuzugreifen. Jedes OleDs-Objekt enthüllt die IDispatch-Schnittstelle (definiert in Ole 2.01), die es erlaubt, zur Laufzeit einen Client an ein Merkmal zu binden (d.h. spätes Binden).
  • Jdes OleDs-Objekt enthüllt die IOleDs-Schnittstelle. Die IOleDs-Schnittstelle definiert verschiedene Attribute des OleDs-Objekts zusammen mit Verfahren zum Zugreifen auf die Merkmale des entsprechenden Objekts in dem Verzeichnisdienst. (Im Folgenden betrifft der Begriff "Merkmal" Daten in einem Verzeichnisdienst, und der Begriff "Attribut" betrifft Daten, die durch OleDs für die OleDs-Objekte definiert werden.) Jedes OleDs-Objekt, das ein Behälter ist, stellt auch die IOleDsContainer-Schnittstelle bereit. Die IOleDsContainer-Schnittstelle definiert verschiedene Attribute, die mit Behälterobjekten und Verfahren für manipulierte enthaltene Objekt in Beziehung stehen. Außerdem kann jedes OleDs-Objekt optional eine Schnittstelle benannt IOleDs<class> oder IOleDs<class>operations bereitstellen, wo <class> dem Namen der Objektklasse des entsprechenden Objekts in dem Verzeichnisdienst entspricht, und <class>operations den Operationen entspricht, die auf einem Objekt durchgeführt werden können. Zum Beispiel hat ein Punktqueue-Objekt Operationen wie Pausieren, Starten und Löschen eines Druckauftrags. Im Folgenden werden diese und andere OleDs-Schnittstellen definiert, zusammen mit einer Beschreibung einer Beispielimplementierung von bestimmten Verfahren der Schnittstellen.
  • 4 ist ein Blockschaltbild eines zum Implementieren der vorliegenden Erfindung konfigurierten Computersystems. Das Computersystem 400 umfasst einen Speicher 401, eine zentrale Verarbeitungseinheit 402, eine E/A-Schnittstelle 403, Speichereinrichtungen 404 und eine Anzeigeeinrichtung 405. Verschiedene Implementierungen der OleDs-Objekte werden in einem computerlesbaren Speicher, z.B. einer Platte, gespeichert. Diese Implementierungen werden zum Ausführen in den Computerspeicher geladen. Der Speicher enthält auch eine Implementierung der OleDs-Objekte 408, 411, 414 für drei Verzeichnisdienste. Jede Implementierung der OleDs-Objekte greift auf den entsprechenden API-Satz der Verzeichnisdienste 409, 412, 415 zu. Diese API-Sätze stellen Zugriff auf die Merkmale der Objekte 410, 413, 416 für den zugrunde liegenden Verzeichnisdienst bereit. Außerdem stellt das OleDs selbst Implementierungen der Bindefunktion, des Namensraum-Behälters und ver schiedener OleDs-Objekte bereit, die typischen Objekten von Verzeichnisdiensten entsprechen.
  • OleDsGetObiect-Funktion
  • 5 ist ein Flussdiagramm der Funktion OleDsGetObject, die die Bindefunktion des OleDs ist. Der Funktion OleDsGetObject werden ein OleDs-Pfad zu einem Objekt und ein Schnittstellen-Identifikator übergeben, und sie gibt einen Zeiger auf die identifizierte Schnittstelle für ein OleDs-Objekt, das dieses Objekt darstellt, zurück. In Schritt 501 teilt die Funktion den Namensraum-Identifikator von dem OleDs-Pfad. Die Funktion benutzt den Namensraum-Identifikator, um die Implementierung einer von dem Anbieter des identifizierten Namensraumes bereitgestellten Parsing-Schnittstelle zu lokalisieren. In Schritt 502 ruft die Funktion eine Funktion CoGetClassObject (definiert durch OLE 2.01) auf, um einen Zeiger zu einem Objekt einer Klasse Fabrik für eine von dem Anbieter des identifizierten Namensraumes implementierte ParseDisplayName-Klasse zurückzugewinnen. Die Funktion erzeugt dynamisch den Klassenidentifikator der ParseDisplayName-Klasse für den identifizierten Namensraum. Wenn z.B. der geparste Namensraum "WinNTDS" ist, kann der Klassenidentfikator "CLSID_ PNDWinNTDS" sein. Das Klassefabrik-Objekt richtet ein Objekt der ParsedDisplayName-Klasse ein, das die einzurichtende IParseDisplayName-Schnittstelle enthüllt. Die IParseDisplayName-Schnittstelle liefert ein Verfahren zum Zurückgeben eines Monikers an das OleDs-Objekt für das durch den OleDs-Pfad identifizierte Objekt. In Schritt 503 ruft die Funktion das Verfahren ICIassFactory::Createlnstance durch Übergeben des Identifikators der IParseDisplayName-Schnittstelle auf und empfängt einen Zeiger auf die IParseDisplayName-Schnittstelle. Das Verfahren Createlnstance erzeugt eine Instanz der durch den dynamisch erzeugten Klassenidentifikator identifizierten Klasse. In Schritt 504 ruft die Funktion das Verfahren IParseDisplayName::ParseDispIayName durch Übergeben des OleDs-Pfades auf. Das Verfahren ParseDisplayName gibt einen Zeiger auf einen Moniker (IMoniker-Schnittstelle) für das durch den OleDs-Pfad identifizierte Objekt zurück. In Schritt 505 ruft die Funktion das Verfahren IMoniker::BindToObject auf, um einen Zeiger auf das OleDs-Objekt, das das durch den OleDs-Pfad identifizierte Objekt darstellt, zurückzugewinnen. Die Funktion gibt dann den Zeiger auf das OleDs-Objekt zurück.
  • IOleDs-Schnittstelle
  • Die IOleDs-Schnittstelle definiert Attribute und Verfahren, die jedem OleDs-Objekt gemeinsam sind. Das Folgende ist die Schnittstellendefinition zusammen mit einer Beschreibung ihrer Attribute und Verfahren:
  • Figure 00140001
  • Attribute
  • Name Beschreibung.
  • Name Relativer Name dieses Objekts in dem Behälterobjekt
  • OleDsPath OleDs-Pfad dieses Objekts
  • Class Name der Objektklasse dieses Objekts
  • GUID Eindeutiger Identifikator für Objekte dieser Objektklasse
  • Parent OleDs-Pfad des Behälterobjekts dieses Objekts
  • Schema OleDs-Pfad des Schemaobjekts, das diese Objektklasse darstellt
  • Verfahren
  • Name Beschreibung
  • Access Erlangt die IOIeDsAccess-Schnittstelle (unten beschreiben) des OleDs-Zugriffssteuerobjekts, das den Sicherheitserlaubnissen dieses Objekts entspricht.
  • PropAccess Gibt einen Zeiger auf die OleDsAccess-Schnittstelle des abhängigen OleDs-Zugriffssteuerobjekts auf ein Merkmal davon darstellt, zurück.
  • GetInfo Gewinnt die Merkmalwerte dieses Objektes aus dem Verzeichnisdienst zurück und speichert sie in dem OleDs-Objekt. Der vHints-Parameter erlaub einem Client, anzugeben, welche Funktionssätze zurückgewonen werden sollten, sodass das Verfahren den Netzwerkzugriff optimieren kann.
  • SetInfo Macht Änderungen an diesen Objekt. Wenn Merkamle dieses Objekts geändert wurden, schreibt das Verfahren die Merkmale aus dem OleDs-Objekt in den Verzeichnisdienst.
  • Get Gewinnt den Wert für ein benanntes Merkaml aus dem OleDs-Objekt zurück.
  • Put Setzt den Wert für ein benanntes Merkaml in das OleDs-Objekt zurück.
  • 6 und 7 veranschaulichen Implementierungen von Verfahren der IOleDs-Schnittstelle. 6 ist ein Flussdiagramm des Verfahrens IOleDs::Getlnfo. Dieses Verfahren lädt die Merkmale für das Objekt aus dem Verzeichnisdienst in das OleDs-Objekt. OleDs definiert einen Übergebungs- oder Transaktionsprozess, durch den Aktualisierungen an Merkmalen des Objekts nur in dem OleDs-Objekt gespeichert (mit dem Verfahren Put) werden, und nur in dem Verzeichnisdienst gespeichert werden, wenn ein Client es verlangt (mit dem Verfahren Setlnfo). Wenn ein OleDs-Objekt erstmals eingerichtet wird, z.B., wenn die Funktion OeDsGetObject aufgerufen wird, würde das eingerichtete Objekt typischerweise die Handhabe enthalten, die das Objekt für den API-Satz des Verzeichnisdienstes identifiziert. In Schritt 601 ruft das Verfahren die Funktion ReadObject durch Übergeben einer Handhabe zu dem Objekt und einer Liste von Merkmalnamen für das Objekt auf. Die Funktion Read-Object gewinnt die Werte für die benannten Merkmale aus dem Verzeichnisdienst zurück. In einer Implementierung des Verfahrens Getlnfo für ein OleDs-Vorgabeobjekt gewinnt das Verfahren eine Liste der Merkmalnamen aus dem Schemaobjekt für die Objektklasse dieses Objekts zurück. In Schritten 60204 durchläuft das Verfahren eine Schleife, um die rückgewonnenen Werte in dem OLeDs-Objekt zu speichern. In Schritt 602 wählt das Verfahren den nächsten Wert beginnend mit dem ersten aus. Wenn in Schritt 703 alle Werte bereits ausgewählt wurden, kehrt das Verfahren zurück, ansonsten fährt das Verfahren bei Schritt 604 fort. In Schritt 604 speichert das Verfahren den ausgewählten Wert in dem OleDs-Objekt und springt zurück zu Schritt 602, um den nächsten Wert auszuwählen.
  • 7. ist ein Flussdiagramm des Verfahrens IOleDs::Get. Dem Verfahren wird ein Merkmalname übergeben, es gewinnt den Wert des übergebenen Merkmals aus dem OleDs-Objekt zurück und kehrt zurück.
  • IOleDsContainer-Schnittstelle
  • Die IOleDsContainer-Schnittstelle definiert Attribute und Verfahren, die jedem OleDs-Objekt, das ein Behälter ist, gemeinsam sind. Das Folgende ist die Schnittstellendefinition zusammen mit einer Beschreibung ihrer Attribute und Verfahren.
  • Figure 00160001
  • Attribute
  • Name Beschreibung
  • Filter Anordnung von Filtern für die Objektlasse, die in einer gegebenen Aufizählung zurückgegeben wird. Wenn Filter leer ist, werden alle Objekte aller Objektklassen zurückgegeben. Jeder Anordnungseintrag hat das folgende Format
    Figure 00160002
  • Count Anzahl von OleDs-Objekten in dem Behälter, die das Filter passieren.
  • NewEnum Aufzähler von enthaltenen Objekten.
  • Verfahren
  • Name Beschreibung
  • GetObject Gibt die IOleDs-Schnittstelle des Objekts in diesem durch die Objektklasse definierten Behälterobjekt und den relativen Namen in dem Behälterobjekt zurück. Wenn die Objektklasse nicht übergeben wird, gibt das Verfahren die Schnittstelle für das erste mit diesem relativen Namen gefundene Objekt zurück.
  • Create Erzeugt ein Objekt der spezifizierten Objektklasse und relativen Namen in die sem Behälterobjekt und gibt einen Zeiger auf die IOleDs-Schnittstelle zurück. Das Objekt wird erst wirklich in dem Verzeichnisdienst erzeugt, wenn das Verfahren IOleDs::Setlnfo aufgerufen wird, sodass die verbindlichen Merkmale festgelegt werden können.
  • Delete Löscht das durch die Objektklasse und den relativen Namen identifizierte Objekt in diesem Behälterobjekt.
  • CopyHere Erzeugt ein neues Objekt in diesem Behälterobjekt, das mit dem spezifizierten Objekt identisch ist, und gibt einen Zeiger auf die IOleDs-Schnittstelle zu dem neuen Objekt zurück. NewName ist ein optionaler Parameter, der, wenn vorden, den Namen des neuen Objekts in dem Behälterobjekt enthält.
  • MoveHere Wie Verfahren CopyHere, außer dass das Quellenobjekt nach dem Kopieren gelöscht wird.
  • 8 ist ein Flussdiagramm des Verfahrens IOleDsContainer::CopyHere. Dieses Verfahren erzeugt eine Kopie des spezifizierten Quellenobjekts innerhalb dieses Behälterobjekts. In Schritt 801 bestimmt das Verfahren die Objektklasse des zu kopierenden Objekts. In Schritt 802 erzeugt das Verfahren ein Objekt in dem Verzeichnisdienst der bestimmten Objektklasse durch Aufrufen der Funktion CreateObject. In Schritt 803 gewinnt das Verfahren den OleDs-Pfad zu dem Schemaobjekt für diese Objektklase zurück. In Schritt 804 ruft das Verfahren die Funktion OleDsGetObject durch Übergeben des OleDs-Pfades zu dem Schemaobjekt auf und gewinnt einen Zeiger auf die IOeDs-Schnittstelle des OleDs-Schemaobjekts zurück. In Schritt 805 ruft das Verfahren das Verfahren IOleDs::Querylntertace des OleDs-Schemaobjekts auf, um einen Zeiger auf die IOleDsClass-Schnittstelle zurückzugewinnen. Die IOleDsClass-Schnittstelle liefert Verfahren zur Rückgewinnung des Namens der für diese Objektklasse definierten Merkmale. In Schritt 806 ruft das Verfahren das Verfahren IOleDs-Class::GetMandatoryProperties auf, um eine Liste der obligatorischen Merkmale dieser Schemaklasse zurückzugewinnen. In Schritt 807 ruft das Verfahren das Verfahren IOle-Ds::Properties auf, um alle zusätzlichen Merkmale für diese Klasse zurückzugewinnen. In Schritten 808-811 durchläuft das Verfahren eine Schleife, um jeden der Werte der Merkmale aus dem Quellen-OleDs-Objekt in das Ziel-OleDs-Objektzu kopieren. In Schritt 808 wählt dasVerfahren das nächste Merkmal beginnend mit dem ersten aus. Wenn in Schritt 809 allle Merkmale bereits ausgewählt wurden, fährt das Verfahren in Schritt 812 fort, ansonsten fährt das Verfahren in Schritt 810 fort. In Schritt 810 ruft das Verfahren das Verfahren IOleDs::Get des Quellen-OleDs-Objekts auf, um den Wert für das ausgewählte Merkmal zurückzugewinnen. In Schritt 811 speichert das Verfahren den rückgewonnenen Wert in dem Ziel-IOieDs-Objekt und springt zurück zu Schritt 808, um das nächste Merkmal zu wählen. In Schritt 812 kopiert das Verfahren die Attribute des Quellen-OleDs-Objekts in das Ziel-OleDs-Objekt und kehrt zurück.
  • 9 ist ein Flussdiagramm des Verfahrens IOleDs::Create. In Schritt 901 ruft das Verfahren die Funktion CreateObject des Verzeichnisdienstes durch Übergeben einer Objektklasse auf und empfängt eine Handhabe zu einem neu erzeugten Objekt dieser Objektklasse.
  • IOleDsClass-Schnittstelle
  • Die IOleDsClass-Schnittstelle wird durch ein OleDs-Schemaobjekt enthüllt, um Zugriff auf die Definition der Objektklasse bereitzustellen. Das Folgende ist die Schnittstellendefintion zusammen mit einer Beschreibung ihrer Attribute und Verfahren.
  • Schnittstelle IOleDsClass: IOleDS
    Figure 00180001
  • Attribute
  • Name Beschreibung
  • CLISD CLISD des Codes, der das OleDs-Objekt für diese Objektklasse implementiert.
  • OID Namensraumspezifischer Identifikator, der diese Objektklasse definiert. Dieser wird bereitgestellt, um Schemaerweiterung über OleDs in Namensräumen zu erlauben, die namensraumspezifische OIDs für Objektklassen bentötigen.
  • Abstrakt Boolescher Wert, der angibt, ob diese Objektklasse abstrakt ist.
  • Mandatory Properties Liste der Merkmale für diese objektklasse festgelegt werden müssen, um in einen Speicher geschrieben zu werden.
  • Primary Interface der Primärschnittstellen-Identifikator für Objekte dieser Objektklasse. Dieser ist der IID für die Schnittstelle, die die Klasse definiert, z.B. die "Benutzer"-Klasse, wenn durch unterstützende IOIeDsUser definiert.
  • DerivedFrom Anordnung von OleDs-Pfadketten, die die direkten Überklassen angeben, aus denen dieses Objekt abgeleitet wurde.
  • Container Merkmal, das bestimmt, dass diese Objektklasse ein Behälter ist.
  • HelpFileName Name einer Hilfedatei, die weitere iformation über Objekte dieser Objektklasse enthält.
  • HelpFileContext Context-ID in HelpFileName, wo spezifische Information über diese Objektklasse gefunden werden kann.
  • Verfahren
  • Name Beschreibung
  • Attributes gibt eine Sammlung von OleDs-objekten zurück die zusatzliche attribute dieses Merkmals beschreiben Attributobjekte sind anbieterspezifisch.
  • IOleDsProperty-Schnittstelle
  • OleDsdefiniert ein OleDs-Merkmalobjekt, das jedem Merkmal einer Objektklasse entspricht. Ein OleDs-Merkmalobjekt enhüllt eine Schnittstelle zur Rückgewinnung der Definition des Merkmals. Das Folgende ist die Definition der Schnittstelle zusammen mit einer Beschreibung der Attribute und Verfahren.
  • interface IOleDsProperty:IOleDs
    Figure 00190001
  • Attribute
  • Name Beschreibung
  • OleDsNames Anordnung von Zeichenketten, die die Namen enthalten, durch die OleDs auf dieses Merkmal zugreifen kann.
  • DsNames Anordnung von Zeichenketten, die die Namen enthalten, durch die der zugrunde liegende Namensraum auf dieses Merkmal zugreifen kann.
  • OID Der namensraumspezifische Objektidentifikator, der dieses Merkmal definiert.
  • Syntax Relativer Pfad des Schema-Syntaxobjekts, das die Syntax dieses Merkmals definiert. Relativ zu dem aktuellen Schemabehälter.
  • MaxRange Obergrenze der dem Merkmal zugewiesenen Werte.
  • MinRange Untergrenze der dem Merkmal zugewiesenen Werte.
  • Normal Wert, der bestimmt, ob dieses Merkmal normal wiederholt werden sollte.
  • MultiValued Wert, der bestimmt, ob dieses Merkmal mehrwertig ist.
  • Verfahren
  • Name Beschreibung
  • Attribute Gibt eine Sammlung von OleDs-Objekten zurück, die zusätzliche Attribute dieses Merkmals beschreiben.
  • IOleDs<Class> - Schnittstelle
  • OleDs definiert, dass jede Objektklasse eine Schnittstelle mit Namen IOieDs<class> unterstützen kann, wo <class> der Name der Objektklasse ist. Diese Schnittstelle hat ein Verfahren, wobei jeder Funktionssatz durch die Objektklasse unterstützt wird, das einen Zeiger auf ein OleDsFunctionalSet-Objekt für den Funktionssatz zurückgibt. Das Folgende ist eine Beschreibung einer Muster-Funktionssatzschnittstelle.
  • Schnittstelle IOleDsUser: IOleDs
    Figure 00200001
  • OleDs Obiektklassendefinitionen
  • OleDs definiert verschiedene Objektklassen für Behälter- und Blattobjekte. Die folgenden Objektklassen werden für Behälterobjekte durch OleDs definiert:
    • Namensräume
    • Namensraum
    • Land
    • Lokalität
    • Organisation
    • Bereich
    • Organisationseinheit
    • Computer
    • Dateiservice
  • Die folgenden Objektklassen werden von OleDs für Blattobjekte definiert:
    • Benutzer
    • Gruppe
    • Alias
    • Service
    • Druckschlange
    • Druckauftrag
    • Druckeinrichtungssitzung
    • Ressource
    • Dateisharing
  • Das Namensräumeobjekt ist ein Behälter der Namensraumobjekte. Die Implementierung des Namensräumeobjekts ist Teil von OleDs. Das Namensräumeobjekt enthüllt die IOleDs-Namensräume-Schnittstelle. Diese Schnittstelle wird unten gezeigt.
  • Schnittstelle IOleDsNamespaces: IolsDs
  • Figure 00210001
  • Das Namensraumobjekt ist ein Behälterobjekt, das die Quelle aller OleDs-Objekte für einen gegebenen Namensraum ist. Das Länderobjekt ist ein Behälterobjekt mit Merkmalen, die ein Land betreffen. Das Lokalitätsobjekt ist ein Behälterobjekt mit Merkmalen, die eine Lokalität betreffen (z.B. Staat). Das Folgende ist eine Defintion einer Schnittstelle zum Erlangen und Festlegen der Merkmale eines Lokalitätsobjekts.
  • Interface IOIeDsFSLocalityGeneralInfo: IDispatch
  • Figure 00220001
  • Verfahren
  • Name Beschreibung
  • Access Gibt einen Zeiger auf die IOIeDsAccess-Schnittstelle auf dem abhängigen Zugriffssteuerobjekt zurück, das die Zugriffssteuerung auf dieser Schnittstelle darstellt.
  • PropAccess Gibt einen Zeiger auf die IOleDsAccess-Schnittstelle auf dem abhängigen Zugriffssteuerobjekt zurück, das die Zugriffssteuerung auf ein Merkmal auf dieser Schnittstelle darstellt, wie durch PropName angegeben.
  • Attribute
  • Name Beschreibung
  • Description Text, der die Lokalität beschreibt.
  • LocalityName Lokalistätsname. Der Lokalistätsname identifiziert ein geographisches Gebiet, in dem sich der Behälter physikalisch befindet.
  • PostalAddress Haupt Postadresse der Lokalität.
  • SeeAlso Anordnung von Namen anderer Verzeichnisobjekte, die für dieses Objekt relevant sein können.
  • Jede der OleDs-definierten Objektklassen definiert Merkmale, die Objekte dieser Objektklasse betreffen. Das Bereichsobjekt entspricht einem Bereich in einem Computersystem und hat einen Funktionssatz mit Merkmalen (z.B. Passwörter), die sich auf das Bereichsobjekt beziehen. Das Organisationseinheitobjekt entspricht einer Wesenheit, z.B. eine Firma. Das Computerobjekt entspricht einem Computer in einem Bereich. Das Benutzerobjekt hat einen Geschäftsinformations-, Kontobeschränkungs-, Kontostatistik- und anderen Informationsfunktionssatz, um einen Benutzer zu beschreiben. Der Geschäftsinformations-Funktionssatz enthält Merkmale bezüglich der Beschreibung eines Geschäftes, z.B. Land, Divi sion, Abteilung, Manager oder Dienststellen. Der Kontobeschränkungs-Funktionssatz enthält Merkmale, die die allgemeinem Eigenschaften des Benutzerkontos beschreiben, z.B. Konto gesperrt, Zahl von Stunden, die dem Benutzer zum Einloggen erlaubt sind, usw. Der Kontostatistik-Funktionssatz hat Merkmale, die Statistiken des Benutzerkontos spezifizieren, z.B. wann das Passwort zum letzten Mal geändert wurde, oder wann sich der Benutzer das letzte Mal in das Konto eingeloggt hat. Der andere Informations-Funktionssatz enthält Merkmale, die verschiedenartige Benutzerinformation betreffen, z.B. E-Mail-Adresse und Heimverzeichnis.
  • Beispiel-Client von OleDs
  • 10 ist ein Flussdiagramm der Prozedur zum Anzeigen aller Namensräume. Diese Prozedur veranschaulicht, wie ein Client von OleDs die Namen aller Namensräume rückgewinnen würde. In Schritt 1001 ruft die Prozedur die Funktion CoGetClassObject durch Übergeben der Klasse für das OleDs-Namensräumeobjekt und des Schnittstellen-Identifikators für die IClassFactory-Schnittstelle auf. Die Funktion gibt einen Zeiger auf eine Klasse-Fabrik-Schnittstelle für das OleDs-Namensräumeobjekt zurück. In Schritt 1002 ruft die Prozedur das Verfahren IClassFactory::Createlnstance durch Übergeben des Schnittstellen-Identifikators für die IOleDsContainer-Schnittstelle auf. Das Verfahren erzeugt eine Instanz des OleDs-Namensräumeobjekts und gibt einen Zeiger auf die IOleDsContainer-Schnittstelle zurück. In Schritt 1003 ruft die Prozedur das Verfahren IOleDsContainer::get_NewEnum auf, um einen Aufzähler für das Namensräumeobjekt zurückzugewinnen. In Schritten 1004–1008 durchläuft die Prozedur eine Schleife, um jeden Namensraum aufzuzählen, und zeigt den Namensraum an. In Schritt 1004 ruft die Prozedur das Verfahren IEnumerator::Next auf, um einen Zeiger auf die IUnknown-Schnittstelle für ein Namensraumobjekt zurückzugewinnen. Wenn in Schritt 1005 alle Namensräume bereits aufgezählt wurden, kehrt die Prozedur zurück, andernfalls fährt die Prozedur in Schritt 1006 fort. In Schritt 1006 ruft die Prozedur das Verfahren IUnknown::Quenlnterface auf, um einen Zeiger auf die IOleDs-Schnittstelle für das Namensraumobjekt zurückzugewinnen. In Schritt 1007 ruft die Prozedur das Verfahren IOleDs:: get narre auf, um den mit dem Namensraumobjekt verbundenen Namen zurückzugewinnen. In Schritt 1008 zeigt die Prozedur den rückgewonnenen Namen an und springt dann zurück zu Schritt 1004, um das nächste Namensraumobjekt aufzuzählen.
  • Obwohl die vorliegende Erfindung in Form einer bevorzugten Ausführung beschrieben wurde, ist nicht beabsichtigt, die Erfindung auf diese Ausführung zu beschränken. Der Umfang der vorliegenden Erfindung wird in den folgenden Ansprüchen definiert.

Claims (8)

  1. Computersystem (400) zum Zugreifen auf eine Vielzahl verschiedener Verzeichnisdienste (409, 412, 415) in einer gleichmäßigen Weise, wobei jeder Verzeichnisdienst Objekte (410, 413, 416) besitzt, wobei jedes Objekt eine Objekt-Identifizierung, eine Objektklasse und einen Merkmalwert aufweist, wobei das Computersystem umfasst: für jeden der Vielzahl von Verzeichnisdiensten, eine Anwendungsprogrammierschnittstelle, wobei die Anwendungsprogrammierschnittstelle Bindefunktionen zum Binden an ein Objekt des Verzeichnisdienstes durch Empfangen einer Objekt Identifizierung und Zurückgeben eine Verweises auf das identifizierte Objekt und Schemafunktionen zum Rückgewinnen einer Definition jeder Objektklasse besitzt, und eine Implementierung einer ersten und zweiten vordefinierten Schnittstelle, durch die ein Client (406, 407) auf die Objekte des Verzeichnisdienstes in einer Weise zugreifen kann, die unabhängig von der Anwendungsprogrammierschnittstelle des Verzeichnisdienstes ist, wobei die erste Schnittstelle zum Zugreifen auf Merkmalwerte jedes Objekts ist, und die zweite Schnittstelle zum Zugreifen auf die Definition jeder Objektklasse ist; eine Namensräume-Schnittstelle zum Aufzählen jedes Verzeichnisdienstes, und einen Verzeichnisdienst-Browser zum Aufzählen der Verzeichnisdienste unter Verwendung der Namensräume-Schnittstelle und zum Verwenden der Implementierung der vordefinierten Schnittstellen für einen aufgezählten Verzeichnisdienst, um auf die Merkmalwerte von Objekten des Verzeichnisdienstes zuzugreifen, und um auf die Definitionen der Objektldassen des Verzeichnisdienstes zuzugreifen, wobei der Verzeichnisdienst-Browser unabhängig von jedem Verzeichnisdienst ist.
  2. Computersystem nach Anspruch 1, wobei die Schnittstelle zum Zugreifen auf die Definition einer Objektklasse ein Verfahren zum Hinzufügen einer Definition einer Objektklasse zu dem Verzeichnisdienst einschließt.
  3. Computersystem nach Anspruch 1 oder 2, wobei jeder Verzeichnisdienst eine Implementierung eines Vorgabe-In-Speicher-Objekts bereitstellt, um Objekte von neu hinzugefügten Objektklassen zu akkomodieren.
  4. Computersystem nach einem der Ansprüche 1 bis 3, wobei jedes Objekt eine eindeutige Identifizierung hat, und das eine Bindefunktion enthält, die, wenn ihr eine Identifizierung eines Objekts übergeben wird, feststellt, welcher Verzeichnisdienst das identifizierte Objekt enthält, und eine In-Speicher-Datenstruktur zum Speichern der Merkmalwerte dieses Objekts erzeugt.
  5. Verfahren in einem Computersystem (400) zum Zugreifen auf eine Vielzahl von Verzeichnisdiensten (409, 412, 415) in einer gleichmäßigen Weise, wobei jeder Verzeichnisdienst eine Anwendungsprogrammierschnittstelle besitzt, wobei die Anwendungsprogrammierschnitt stelle ein Verhalten zum Zugreifen auf Objekte (410, 413, 416) des Verzeichnisdienstes aufweist, wobei das Verfahren umfasst: für jeden einer Vielzahl von Verzeichnisdiensten, Installieren einer Implementierung einer vordefinierten Schnittstelle, wobei die vordefinierte Schnittstelle ein Verhaften zum Zugreifen auf Objekte des Verzeichnisdienstes definiert, wobei die Implementierung eine Abbildung aus dem Verhalten der Anwendungsprogrammierschnittstelle auf das Verhalten der vordefinierten Schnittstelle bereitstellt; Empfangen einer Identifikation eines Objekts; Bestimmen, welcher Verzeichnisdienst das identifizierte Objekt enthält, und Verwenden der installierten Implementierung der vordefinierten Schnittstelle für den bestimmten Verzeichnisdienst zum Auffinden und Binden an das identifizierte Objekt.
  6. Verfahren nach Anspruch 5, wobei jedes Objekt eine Objektklasse besitzt, und wobei die vordefinierte Schnittstelle ein Verhalten zum Hinzufügen einer Definition einer Objektklasse zu einem Verzeichnisdienst definiert.
  7. Verfahren nach Anspruch 5 oder 6, wobei jedes Objekt eine Objektklasse besitzt, und wobei die vordefinierte Schnittstelle ein Verhalten zum Rückgewinnen einer Definition einer Objektklasse eines Verzeichnisdienstes definiert.
  8. Verfahren nach einem der Ansprüche 5 bis 7, wobei die vordefinierte Schnittstelle ein Verhalten zum Übergeben von Änderungen an Objekten an den Verzeichnisdienst definiert.
DE69730657T 1996-07-01 1997-07-01 Verfahren und System für gleichmässigen Zugriff auf mehrere Verzeichnisdienste Expired - Lifetime DE69730657T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US674318 1996-07-01
US08/674,318 US5893107A (en) 1996-07-01 1996-07-01 Method and system for uniformly accessing multiple directory services

Publications (2)

Publication Number Publication Date
DE69730657D1 DE69730657D1 (de) 2004-10-21
DE69730657T2 true DE69730657T2 (de) 2005-02-10

Family

ID=24706140

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69730657T Expired - Lifetime DE69730657T2 (de) 1996-07-01 1997-07-01 Verfahren und System für gleichmässigen Zugriff auf mehrere Verzeichnisdienste

Country Status (5)

Country Link
US (2) US5893107A (de)
EP (2) EP1460565B1 (de)
JP (1) JP4197753B2 (de)
CA (1) CA2209170C (de)
DE (1) DE69730657T2 (de)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185611B1 (en) * 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US5893107A (en) * 1996-07-01 1999-04-06 Microsoft Corporation Method and system for uniformly accessing multiple directory services
US6061726A (en) * 1997-05-27 2000-05-09 Novell, Inc. Dynamic rights assignment apparatus and method using network directory services
US6209036B1 (en) * 1997-06-06 2001-03-27 International Business Machines Corporation Management of and access to information and other material via the world wide web in an LDAP environment
GB2345167B (en) * 1997-08-11 2002-08-21 Seagate Technology Object oriented data storage device
US6134706A (en) * 1997-08-14 2000-10-17 International Business Machines Corporation Software business objects in a multi-level organizational structure
JP3808608B2 (ja) * 1997-10-20 2006-08-16 富士通株式会社 蓄積交換型電子会議システムにおけるオブジェクトの移動処理装置及び方法並びに移動処理プログラムを記録したコンピュータ読取可能な記録媒体
US6044467A (en) * 1997-12-11 2000-03-28 Sun Microsystems, Inc. Secure class resolution, loading and definition
US6044379A (en) * 1997-12-18 2000-03-28 Sun Microsystems, Inc. Method and apparatus for efficiently implementing multiple storage mechanism for name services associated with a computer system
US6026408A (en) * 1998-01-28 2000-02-15 Unisys Corp. Method for synchronizing the schema of a database with its representation in an object-oriented repository
US6862736B2 (en) 1998-02-06 2005-03-01 Microsoft Corporation Object manager for common information model
US6138122A (en) * 1998-03-02 2000-10-24 Agilent Technologies Modeling of internet services
US6317748B1 (en) 1998-05-08 2001-11-13 Microsoft Corporation Management information to object mapping and correlator
US6961748B2 (en) 1998-10-27 2005-11-01 Murrell Stephen J Uniform network access
FR2785412B1 (fr) * 1998-10-30 2001-08-24 Bull Sa Creation dynamique de classes d'objets
US6477539B1 (en) * 1998-12-22 2002-11-05 Nortel Networks Limited Method and apparatus for interfacing a manager and a plant
US6609153B1 (en) 1998-12-24 2003-08-19 Redback Networks Inc. Domain isolation through virtual network machines
US6154741A (en) * 1999-01-29 2000-11-28 Feldman; Daniel J. Entitlement management and access control system
US7076476B2 (en) * 1999-03-02 2006-07-11 Microsoft Corporation Method and system for integrated service administration via a directory service
US6842903B1 (en) * 1999-05-19 2005-01-11 Sun Microsystems, Inc. System and method for providing dynamic references between services in a computer system
GB2351370A (en) * 1999-06-25 2000-12-27 Ibm Data processing with policed object union
US7058956B1 (en) * 1999-09-01 2006-06-06 Microsoft Corporation Directory services interface extensions with aggregatable software objects
US6622170B1 (en) 1999-09-10 2003-09-16 International Business Machines Corporation System and method for DEN/LDAP client database access with a backoff capability
US6604148B1 (en) * 1999-10-01 2003-08-05 International Business Machines Corporation Method, system, and program for accessing a network namespace
US7331058B1 (en) * 1999-12-16 2008-02-12 International Business Machines Corporation Distributed data structures for authorization and access control for computing resources
US6847959B1 (en) 2000-01-05 2005-01-25 Apple Computer, Inc. Universal interface for retrieval of information in a computer system
US6484177B1 (en) * 2000-01-13 2002-11-19 International Business Machines Corporation Data management interoperability methods for heterogeneous directory structures
US6578035B1 (en) 2000-01-14 2003-06-10 Novell, Inc. Method for dynamic validation of a distributed database segment which yields a suitable successor
US6665674B1 (en) 2000-02-02 2003-12-16 Nortel Networks Limited Framework for open directory operation extensibility
US6760720B1 (en) 2000-02-25 2004-07-06 Pedestrian Concepts, Inc. Search-on-the-fly/sort-on-the-fly search engine for searching databases
US20010048448A1 (en) * 2000-04-06 2001-12-06 Raiz Gregory L. Focus state themeing
US6873337B1 (en) * 2000-04-06 2005-03-29 Microsoft Corporation Application programming interface for changing the visual style
US6753885B2 (en) * 2000-04-06 2004-06-22 Microsoft Corporation System and theme file format for creating visual styles
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US6731927B1 (en) 2000-07-14 2004-05-04 Context Connect, Inc. System and method for context association
US7340048B2 (en) * 2000-07-14 2008-03-04 Context Connect Llc System and method for directory services and e-commerce across multi-provider networks
US7899173B2 (en) * 2000-07-14 2011-03-01 Context Connect, Llc Communication connectivity via context association, advertising sponsorship, and multiple contact databases
US7051114B1 (en) * 2000-11-01 2006-05-23 Cisco Technology, Inc. System and method for integrating directory servers
US7200627B2 (en) * 2001-03-21 2007-04-03 Nokia Corporation Method and apparatus for generating a directory structure
US7756835B2 (en) * 2001-03-23 2010-07-13 Bea Systems, Inc. Database and operating system independent copying/archiving of a web base application
US6721758B1 (en) 2001-03-30 2004-04-13 Novell, Inc. System and method for using schema attributes as meta-data in a directory service
US7165239B2 (en) 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7581231B2 (en) 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US7017162B2 (en) * 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US7117504B2 (en) * 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US7546602B2 (en) 2001-07-10 2009-06-09 Microsoft Corporation Application program interface for network software platform
US20030035381A1 (en) * 2001-08-16 2003-02-20 Yihsiu Chen Network-based teleconferencing capabilities utilizing data network call set-up requests
US7519575B1 (en) * 2001-08-31 2009-04-14 Novell, Inc. Method and apparatus for presenting, searching, and viewing directories
EP1298526A1 (de) * 2001-09-26 2003-04-02 Sap Ag Kommunikationsnachricht mit Typ, Objekt und Identifizierer von einem Geschäftsanwendungsprogramm zu einem Dienstprogramm
US7448045B1 (en) * 2002-04-30 2008-11-04 Extreme Networks Method and apparatus to extend a program
US6947942B1 (en) 2002-05-30 2005-09-20 Taiwan Semiconductor Manufacturing Company, Ltd. Methods of managing user and computer objects in directory service
US20040167868A1 (en) * 2003-02-20 2004-08-26 Bea Systems, Inc. System and method for a virtual content repository
US20040177339A1 (en) * 2003-03-07 2004-09-09 Microsoft Corporation Customization of fields in objects in a computing environment
US7290052B2 (en) * 2003-06-19 2007-10-30 Microsoft Corporation System and method for enforcing quotas on object creation in a replicated directory service database
US7716357B2 (en) * 2003-10-24 2010-05-11 Microsoft Corporation Service discovery and publication
US7721254B2 (en) * 2003-10-24 2010-05-18 Microsoft Corporation Programming interface for a computer platform
US7426734B2 (en) * 2003-10-24 2008-09-16 Microsoft Corporation Facilitating presentation functionality through a programming interface media namespace
US7418507B2 (en) * 2003-12-18 2008-08-26 Microsoft Corporation Virtual resource serving of consolidated server shares
US7558799B2 (en) * 2004-06-01 2009-07-07 Microsoft Corporation Method, system, and apparatus for discovering and connecting to data sources
US7840615B2 (en) * 2004-08-05 2010-11-23 Siemens Enterprise Communications, Inc. Systems and methods for interoperation of directory services
US20060101091A1 (en) * 2004-10-22 2006-05-11 International Business Machines Corporation Recovering references in an extended model
US8185555B2 (en) 2004-10-22 2012-05-22 International Business Machines Corporation Model extension framework
US20060129526A1 (en) * 2004-12-14 2006-06-15 Sitze Richard A System, apparatus and method of providing at least one of a plurality of serivce providers of a service based on a context in which the service is to be used
US7979405B2 (en) * 2005-01-14 2011-07-12 Microsoft Corporation Method for automatically associating data with a document based on a prescribed type of the document
US7653653B2 (en) * 2005-02-14 2010-01-26 Microsoft Corporation Dynamically configurable lists for including multiple content types
US7966286B2 (en) * 2005-02-14 2011-06-21 Microsoft Corporation Hierarchical management of object schema and behavior
US7330855B2 (en) * 2005-05-25 2008-02-12 Microsoft Corporation Converting data between a front end schema node and a back end schema node
FR2888019A1 (fr) * 2005-07-04 2007-01-05 France Telecom Procede de construction d'une base de donnees d'annuaire, produit programme d'ordinateur et serveur correspondants
US20070073784A1 (en) * 2005-09-26 2007-03-29 Bea Systems, Inc. System and method for type inheritance for content management
US7818344B2 (en) * 2005-09-26 2010-10-19 Bea Systems, Inc. System and method for providing nested types for content management
US7953734B2 (en) 2005-09-26 2011-05-31 Oracle International Corporation System and method for providing SPI extensions for content management system
US20070073673A1 (en) * 2005-09-26 2007-03-29 Bea Systems, Inc. System and method for content management security
US20070073674A1 (en) * 2005-09-26 2007-03-29 Bea Systems, Inc. System and method for providing federated events for content management systems
US7917537B2 (en) * 2005-09-26 2011-03-29 Oracle International Corporation System and method for providing link property types for content management
US7752205B2 (en) * 2005-09-26 2010-07-06 Bea Systems, Inc. Method and system for interacting with a virtual content repository
US7483893B2 (en) * 2005-09-26 2009-01-27 Bae Systems, Inc. System and method for lightweight loading for managing content
US7831948B2 (en) * 2006-02-02 2010-11-09 The Boeing Company Method and system for automatically generating schematics
US20070261045A1 (en) * 2006-05-05 2007-11-08 Dell Products L.P. Method and system of configuring a directory service for installing software applications
US7849069B2 (en) * 2006-06-21 2010-12-07 International Business Machines Corporation Method and system for federated resource discovery service in distributed systems
US8463852B2 (en) * 2006-10-06 2013-06-11 Oracle International Corporation Groupware portlets for integrating a portal with groupware systems
US20080133533A1 (en) * 2006-11-28 2008-06-05 Krishna Ganugapati Migrating Credentials to Unified Identity Management Systems
US7797281B1 (en) 2007-01-12 2010-09-14 Symantec Operating Corporation Granular restore of data objects from a directory service
US20090019115A1 (en) * 2007-02-01 2009-01-15 Microsoft Corporation Communications server objects for configuration information access
DE102007057248A1 (de) * 2007-11-16 2009-05-20 T-Mobile International Ag Verbindungsschicht für Datenbanken
JP5538788B2 (ja) * 2008-09-29 2014-07-02 キヤノン株式会社 画像形成装置
US20130198171A1 (en) * 2012-01-26 2013-08-01 Microsoft Corporation Method and system for managing database object information
US9477698B2 (en) * 2012-02-22 2016-10-25 Salesforce.Com, Inc. System and method for inferring reporting relationships from a contact database
US9578130B1 (en) * 2012-06-20 2017-02-21 Amazon Technologies, Inc. Asynchronous and idempotent distributed lock interfaces
US20150242531A1 (en) * 2014-02-25 2015-08-27 International Business Machines Corporation Database access control for multi-tier processing

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1252903A (en) * 1985-06-11 1989-04-18 Frank D. Bartocci Dynamic update of database directories using directed or undirected mechanisms
US5377323A (en) * 1991-09-13 1994-12-27 Sun Microsytems, Inc. Apparatus and method for a federated naming system which can resolve a composite name composed of names from any number of disparate naming systems
US5581760A (en) * 1992-07-06 1996-12-03 Microsoft Corporation Method and system for referring to and binding to objects using identifier objects
US5497463A (en) * 1992-09-25 1996-03-05 Bull Hn Information Systems Inc. Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system
US5805885A (en) * 1992-12-24 1998-09-08 Microsoft Corporation Method and system for aggregating objects
US5491817A (en) * 1993-05-25 1996-02-13 Bell Communications Research Inc. Linking system and method for accessing directory information about an object in one context when information in another context is known
US5485617A (en) * 1993-12-13 1996-01-16 Microsoft Corporation Method and system for dynamically generating object connections
US5548726A (en) * 1993-12-17 1996-08-20 Taligeni, Inc. System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node
US5689700A (en) * 1993-12-29 1997-11-18 Microsoft Corporation Unification of directory service with file system services
US5588147A (en) * 1994-01-14 1996-12-24 Microsoft Corporation Replication facility
US5911066A (en) * 1994-02-22 1999-06-08 Microsoft Corporation Data transfer utilizing a single functionally independent data transfer mechanism
US5600831A (en) * 1994-02-28 1997-02-04 Lucent Technologies Inc. Apparatus and methods for retrieving information by modifying query plan based on description of information sources
US5682532A (en) * 1994-05-02 1997-10-28 Microsoft Corporation System and method having programmable containers with functionality for managing objects
US5831606A (en) * 1994-12-13 1998-11-03 Microsoft Corporation Shell extensions for an operating system
US5682478A (en) * 1995-01-19 1997-10-28 Microsoft Corporation Method and apparatus for supporting multiple, simultaneous services over multiple, simultaneous connections between a client and network server
US5692180A (en) * 1995-01-31 1997-11-25 International Business Machines Corporation Object-oriented cell directory database for a distributed computing environment
US5893107A (en) * 1996-07-01 1999-04-06 Microsoft Corporation Method and system for uniformly accessing multiple directory services
US6016499A (en) * 1997-07-21 2000-01-18 Novell, Inc. System and method for accessing a directory services respository

Also Published As

Publication number Publication date
EP1460565A1 (de) 2004-09-22
CA2209170A1 (en) 1998-01-01
EP0817101A3 (de) 1998-07-29
EP0817101A2 (de) 1998-01-07
US6360230B1 (en) 2002-03-19
EP1460565B1 (de) 2017-08-02
DE69730657D1 (de) 2004-10-21
EP0817101B1 (de) 2004-09-15
JPH10154095A (ja) 1998-06-09
CA2209170C (en) 2006-02-07
US5893107A (en) 1999-04-06
JP4197753B2 (ja) 2008-12-17

Similar Documents

Publication Publication Date Title
DE69730657T2 (de) Verfahren und System für gleichmässigen Zugriff auf mehrere Verzeichnisdienste
DE69533530T2 (de) Verfahren und System zur dynamischen Aggregation von Objekten
DE69636887T2 (de) System und Verfahren,um verschiedenen Anbietern von Namen zu ermöglichen,sich dynamisch einer Namensföderation anzuschliessen
Wiil et al. Hyperform: using extensibility to develop dynamic, open, and distributed hypertext systems
DE60009489T2 (de) Vorrichtung und verfahren zum verwalten der verteilung von inhalten zu einem gerät
US6401101B1 (en) Method, server/computer and data structure for implementation of complex objects in an object-oriented database
DE69838756T2 (de) Die verarbeitung von eingabe/ausgabeanforderungen von mehreren treibern ermöglichen dateisystem-primitivroutine in einem mehrschicht-treiber-e/a-system
US5771384A (en) Method and system for replacement and extension of container interfaces
DE69906488T2 (de) Verfahren zur Synchronisierung eines Datenbankschemas mit seiner Darstellung in einem objekt-orientierten Repository
DE19926115B4 (de) Transaktionshandhabung in einer Konfigurationsdatenbank
US5815703A (en) Computer-based uniform data interface (UDI) method and system using an application programming interface (API)
US8117230B2 (en) Interfaces and methods for group policy management
DE60319229T2 (de) Verfahren und system zur erweiterung der api eines dateisystems
DE69829442T2 (de) System und Verfahren für transparenten, globalen Zugang zu physikalischen Geräten in einem Rechnersystem
DE60224926T2 (de) Verfahren und Rechnersystem zur Behandlung von inkrementalen Daten in Klient-Server Kommunikation.
DE19617381A1 (de) Objektumwandlungsverfahren von einem flachen Objektraum in einen Klassen - strukturierten Raum
US6976144B1 (en) Methods and apparatus for digital data processing with mutable inheritance
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE19926116A1 (de) Mehr-Teilprozeß-Protokollierung in einer Konfigurationsdatenbank
DE10162495A1 (de) Erweiterbare Datenbank
DE10119876A1 (de) Verfahren, System und Computerprorammprodukt zur Bereitstellung einer Jobüberwachung
US5974410A (en) Method and system for filtering in a uniform data interface
DE112008003861T5 (de) Systeme und Verfahren, um Software zum Herunterladen zur Verfügung zu stellen
WO2002001388A2 (en) Portal server that provides a customizable user interface for access to computer networks
DE102004022478A1 (de) Datenintegrationssystem mit programmatischen Quell- und Zielschnittstellen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition