-
GEBIET DER
ERFINDUNG
-
Diese
Erfindung bezieht sich allgemein auf Computernetzwerke, und genauer
auf eine Architektur zum Erstellen internetspezifischer Dienste.
Softwarearchitekturen des gleichen Typs können im IBM Systems Journal,
Bd. 30, Nr. 3, 1991, Seiten 259–279, "A Base For Portable
Communications Software",
S. H. Goldberg et al., und in EP-A-0631456 vom 28.12.1994 gefunden
werden.
-
HINTERGRUND
DER ERFINDUNG
-
Das
Internet ist ein System geographisch verteilter Computernetzwerke,
die durch Computer verbunden sind, die Netzwerkprotokolle ausführen, die
es Benutzern erlauben, über
die Netzwerke zu interagieren und Information gemeinsam zu nutzen.
Wegen solch weitverbreiteter gemeinsamer Nutzung von Information hat
sich das Internet allgemein in ein "offenes" System entwickelt, für welches
Entwickler Software entwerfen können,
um spezialisierte Operationen, oder Dienste, im wesentlichen ohne
Beschränkung
durchführen
zu können.
Diese Dienste sind typischerweise gemäß einer Client/Server-Architektur
implementiert, wobei die Clients, z.B. Personalcomputer oder Workstations,
für die
Interaktion mit den Benutzern verantwortlich sind, und die Server
Computer sind, die konfiguriert sind, um die Dienste, wie sie von
den Clients angewiesen werden, auszuführen.
-
Es überrascht
nicht, dass jeder der Dienste, der über das Internet verfügbar ist,
im allgemeinen durch sein eigenes Netzwerkprotokoll definiert ist.
Ein Protokoll ist ein Satz von Regeln, die das Format und die Bedeutung
von Nachrichten oder "Paketen", die über die
Netzwerke ausgetauscht werden, bestimmen. Indem man Dienste gemäß den Protokollen
implementiert, arbeiten Computer zusammen, um verschiedene Operationen,
oder ähnliche
Operationen auf verschiedene Weisen, für Benutzer durchzuführen, die
mit den Netzwerken "interagieren" möchten. Die
Dienste reichen typischerweise vom Durchstöbern oder Suchen unter Verwendung
eines bestimmten Protokolls nach Information, die ein bestimmtes
Datenformat hat, bis zum tatsächlichen
Erwerb von Information eines anderen Formats gemäß einem anderen Protokoll.
-
Zum
Beispiel erleichtert der File Transfer Protokoll (FTP) Dienst den
Transfer und die gemeinsame Nutzung von Dateien über das Internet. Der Telnet-Dienst
erlaubt es Benutzern, sich auf Computern einzuloggen, die an die
Netzwerke angeschlossen sind, während
das Netnews-Protokoll seinen Teilnehmern einen Schwarzen-Brett-Dienst
bietet. Außerdem
umfassen die verschiedenen Datenformate der Information, die über das
Internet verfügbar
ist, JPEG-Bilder, MPEG-Filme und μ-Law
Klangdateien.
-
Mit
dem Entwurf dieser Dienste ist die Entwicklung von Anwendungen einhergegangen,
um die Dienste auf der Client/Server-Architektur zu implementieren. Dementsprechend
sind Anwendungen unter Verwendung des FTP-Protokolls für Benutzer
verfügbar,
um Dateien von Computern, die mit dem Internet verbunden sind, zu
erhalten. Auf ähnliche
Weise erlauben einzelne Anwendungen Benutzern, sich auf entfernte
Computer unter Verwendung des Telnet-Protokolls einzuloggen (als
ob sie sich von Terminals, die mit diesen Computern verbunden sind,
einloggen würden),
und ferner, um JPEG-Bilder und MPEG-Filme anzusehen. Als Ergebnis existiert
eine Verbreitung von Anwendungen, die auf Benutzeraktivität auf dem
Internet gerichtet ist.
-
Ein
Problem mit dieser riesigen Sammlung anwendungsspezifischer Protokolle
ist, dass diese Anwendungen im allgemeinen unorganisiert sind und
deshalb Benutzer sich durch sie durch plagen müssen, um auf zufriedenstellende
Weise und profitabel das Internet zu nutzen. Ein derartiger Mangel
an Einheitlichkeit ist zeitraubend und verwirrend für Benutzer,
die auf bestimmte Informationsarten zugreifen wollen, aber gezwungen sind,
unbekannte Anwendungen zu verwenden. Wegen der enormen Menge verschiedener
Informationsarten, die im Internet verfügbar ist und der Mannigfaltigkeit
von Anwendungen, die man benö tigt,
um auf diese Informationsarten zuzugreifen, kann die Erfahrung,
das Internet zu verwenden, für
diese Benutzer beschwerlich sein.
-
Eine
Alternative zu dem Sortiment offener Anwendungen, für den Zugriff
auf Information im Internet, ist ein "geschlossenes" Anwendungssystem, wie z.B. Prodigy,
CompuServe oder America Online. Jedes dieser Systeme stellt eine
volle Bandbreite gut organisierter Dienste ihren Teilnehmern zur
Verfügung;
jedoch erlegen sie auch Beschränkungen
auf die Dienste auf, die Entwickler für diese Systeme anbieten können. Solche Beschränkung "neuer" Dienstentwicklung
kann eine unangemessene Alternative für viele Benutzer sein.
-
Zwei
moderne Dienste, um auf Information über das Internet zuzugreifen,
sind Gopher und das World-Wide Web ("Web").
Gopher besteht aus einer Reihe von Internetservern, die eine "listenorientierte" Schnittstelle zu
Information, die auf den Netzwerken verfügbar ist, zur Verfügung stellen;
die Information wird als Menüpunkte
auf eine hierarchische Weise dargestellt. Enthalten in der Hierarchie
von Menüs
sind Dokumente, die dargestellt oder gespeichert werden können, und
durchsuchbare Indizes, die es Benutzern erlauben, Schlüsselwörter einzutippen
und Suchen durchzuführen.
-
Einige
der Menüpunkte,
die von Gopher angezeigt werden, sind Verknüpfungen zu Information, die
auf anderen im Netzwerk befindlichen Server verfügbar ist. In diesem Fall wird
dem Benutzer eine Liste zur Verfügung
stehender Informationsdokumente gezeigt, die geöffnet werden können. Die
geöffneten
Dokumente können
zusätzliche
Listen darstellen oder sie können
unterschiedliche Datentypen, wie z.B. Bilder oder Text, umfassen;
gelegentlich können
die geöffneten
Dokumente den Benutzer zu einem anderen Computer im Internet "transportieren".
-
Der
andere populäre
Informationsdienst im Internet ist das Web. Anstatt dem Benutzer
eine hierarchische listenorientierte Informationsansicht zu bieten,
bietet das Web dem Benutzer eine "verknüpfte-Hypertext" Ansicht. Bildlich
gesprochen nimmt das Web das Internet als ein riesiges Buch von
Seiten wahr, von de nen jede Bilder, Text, Töne, Filme oder verschiedene
andere Datentypen in der Form von Dokumenten enthalten kann. Webdokumente
sind in HyperText Markup Language (HTML) geschrieben, und Webserver übertragen HTML-Dokumente
untereinander durch das Hypertext Transfer Protokoll (HTTP).
-
Der
Webdienst ist im wesentlichen ein Mittel, um Informationsquellen
auf dem Internet zu benennen. Bewaffnet mit solch einer allgemeinen
Benennungskonvention, die das ganze Netzwerksystem aufspannt, sind
Entwickler in der Lage, Informationsserver zu bauen, auf die potentiell
jeder Benutzer zugreifen kann. Dementsprechend wurden Gopher-Server,
HTTP- Server, FTP-Server und Email-Server für das Web entwickelt. Außerdem ermöglicht die
Namenskonvention Benutzern auf jedem dieser mit dem Internet verbundenen Servern
Ressourcen (wie z.B. Verzeichnisse und Dokumente) zu identifizieren
und erlaubt Zugriff auf diese Ressourcen.
-
Als
ein Beispiel "durchquert" ein Benutzer das
Web, indem er gefragten Punkten einer Seite folgt, die auf einem
graphischen Webbrowser dargestellt wird. Diese gefragten Punkte
sind Hypertextverknüpfungen, deren
Vorliegen auf der Seite durch visuelle Hinweise, z.B. unterstrichene
Wörter,
Icons oder Schaltflächen, angegeben
ist. Wenn ein Benutzer einer Verknüpfung folgt (indem er gewöhnlich auf
den Hinweis mit einer Maus klickt), zeigt der Browser das Ziel an,
worauf der Link deutet, welches in einigen Fällen ein anderes HTML-Dokument
sein kann.
-
Die
Gopher- und Webinformationsdienste stellen völlig unterschiedliche Ansätze dar,
um mit Information im Internet zu interagieren. Einer folgt einem
Listenansatz zur Information, der wie ein Telefonbuchdienst "aussieht", während der
andere analog einer kleinformatigen Zeitung einen Seitenansatz übernimmt.
Jedoch umfassen beide diese Ansätze
Anwendungen, um es Benutzern zu ermöglichen, Information, die auf
Internetservern verfügbar
ist, zu durchstöbern.
Zusätzlich
hat jede dieser Anwendungen eine einzigartige Art und Weise, die
Information auf den Servern anzuschauen und darauf zuzugreifen.
-
Netscape
Navigator® ("Netscape") ist ein Beispiel
einer monolithischen Webbrowser-Anwendung, die konfiguriert ist,
um mit vielen der vorhin beschriebenen Protokollen, einschließlich HTTP,
Gopher und FTP, zu interagieren. Wenn es angewiesen wird, eine Anwendung
aufzurufen, die eines dieser Protokolle verwendet, "übersetzt" Netscape das Protokoll in Hypertext.
Diese Übersetzung
platziert den Benutzer weiter weg vom Protokoll, das entworfen wurde,
um die Anwendung auszuführen,
und wirkt in einigen Fällen
dem Interneterlebnis des Benutzers entgegen. Zum Beispiel kann ein
Diskussionssystem, das einen interaktiven Austausch zwischen Teilnehmern
verlangt, durch Hypertextübersetzungen
ins Stocken geraten.
-
Die
Gopher- und Webdienste können
ferner zusätzliche
Anwendungen verlangen, um spezifische Funktionen, wie z.B. das Abspielen
von Tönen
oder das Ansehen von Filmen, im Hinblick auf die in den Dokumenten
enthaltenen Datentypen, durchzuführen.
Netscape verwendet z.B. Hilfsanwendungen, um Anwendungen auszuführen, die
Datenformate haben, die er nicht "versteht". Die Ausführung dieser Funktion auf einem
Computer erfordert eine Verarbeitungsunterbrechung und Kontextumschaltung
(d.h. Abspeichern des Zustandes) vor dem Aufrufen der entsprechenden
Anwendungen. Falls ein Benutzer, der innerhalb der Netscape-Anwendung arbeitet,
einen MPEG-Film öffnet,
muss diese Browsing-Anwendung deshalb gespeichert werden (z.B. auf
Diskette), bevor eine entsprechende MPEG-Anwendung geöffnet wird,
z.B. Sparkle, um das Bild zu betrachten. So eine Anordnung ist ineffizient
und eher unterbrechend in Bezug auf das Verarbeiten von Operationen
des Computers.
-
Typischerweise
umfasst ein Computer ein Betriebssystem und Anwendungssoftware,
die als Gesamtheit die Operationen des Computers steuern. Die Anwendungen
sind vorzugsweise aufgabenspezifisch und unabhängig, z.B. bereitet eine Textverarbeitungsanwendung
Text auf, eine Zeichenanwendung bereitet Zeichnungen auf, eine Datenbankanwendung
interagiert mit Information, die auf einer Datenbankspeichereinheit
gespeichert ist. Obwohl ein Benutzer Daten von einer Anwendung zur
anderen bewegen kann, wie z.B. durch Kopieren einer Zeichnung in
eine Textverarbei tungsdatei, müssen
die unabhängigen
Anwendungen aufgerufen werden, um sodann diese Daten zu manipulieren.
-
Im
allgemeinen präsentiert
das Anwendungsprogramm dem Benutzer Information durch ein Fenster einer
graphischen Benutzerschnittstelle durch das Zeichnen von Bildern,
Graphiken oder Text innerhalb des Fenstergebietes. Der Benutzer
wiederum kommuniziert mit der Anwendung, indem er auf graphische
Objekte in dem Fenster mit einem Zeiger zeigt, der durch ein handbetriebenes
Zeigegerät
gesteuert wird, wie z.B. eine Maus oder durch Drücken von Tasten einer Tastatur.
-
Die
graphischen Objekte, die typischerweise in jeder Fensterregion beinhaltet
sind, sind größenverstellbare
Boxen, Schaltflächen
und Bildlaufleisten. Diese Objekte stellen Benutzerschnittstellenelemente
dar, auf die der Benutzer mit dem Zeiger (oder dem Cursor) deuten
kann, um auszuwählen
oder zu manipulieren. Der Benutzer kann z.B. diese Elemente manipulieren,
um die Fenster auf dem Bildschirm zu bewegen, und ihre Größen und
Erscheinungen zu verändern,
um das Fenster günstig
anzuordnen. Wenn die Elemente ausgewählt oder manipuliert werden,
wird das darunter liegende Anwendungsprogramm über die Fensterumgebung informiert,
dass eine Steuerung durch den Benutzer bestimmt wurde.
-
Ein
Menübalken
ist ein weiteres Beispiel eines Benutzerschnittstellenelementes,
das eine Liste von Menüs,
die dem Benutzer zur Verfügung
stehen, bereitstellt. Jedes Menü wiederum
stellt eine Liste von Befehlsoptionen zur Verfügung, die allein dadurch ausgewählt werden,
dass man auf sie mit dem mausgesteuerten Zeiger zeigt. Das heißt, die
Befehle können
erteilt werden, indem man die Maus betätigt, um den Zeiger auf oder
neben die Befehlsauswahl zu bewegen und indem man drückt und
schnell loslässt,
d.h. "Klicken" einer Taste auf
der Maus.
-
Im
Gegensatz zu dieser typischen anwendungsbasierten Rechenumgebung
bietet eine Softwarekomponentenarchitektur eine modulare dokumentenbasierte
Rechenanordnung unter Verwendung von Werkzeugen, wie z.B. Ansichtseditoren.
Der Schlüssel
zu dokumentenbasiertem Rechnen ist das Verbunddokument, d.h. ein
Do kument, das aus vielen verschiedenen Datentypen zusammengesetzt
ist, die dieselbe Datei teilen. Die Datentypen, die in einem Verbunddokument
enthalten sind, können
von Text, Tabellen und Graphiken bis hin zu Video und Ton reichen.
Mehrere Editoren, jeder dafür
entworfen, mit einem speziellen Datentyp oder -format umzugehen,
können
auf dem Inhalt des Dokuments gleichzeitig arbeiten, anders als die
anwendungsbasierte Rechenumgebung.
-
Da
viele Editoren auf demselben Dokument zusammenarbeiten können, ist
das Verbunddokument in einzelne Inhaltsmodule zur Manipulation durch
die Editoren unterteilt. Die zusammengesetzte Natur des Dokuments
wird realisiert, indem man diese Module untereinander einbindet,
um ein Dokument zu schaffen, das eine Mischung von Datentypen aufweist.
Die Softwarekomponentenarchitektur bietet die Grundlage zum Zusammenbauen
von Dokumenten unterschiedlicher Inhalte, und die vorliegende Erfindung
ist auf ein System gerichtet, um diese Fähigkeit auf netzwerkorientierte
Dienste zu erweitern.
-
Deshalb
ist es unter den Zielen der vorliegenden Erfindung eine Erfahrung
des Benutzers auf Computernetzwerken zu vereinfachen, ohne die Flexibilität zu opfern,
die von dem Benutzer geleistet wird, indem er existierende Protokolle
und auf diesen Netzwerken verfügbare
Datentypen verwendet.
-
Ein
anderes Ziel der Erfindung ist es, ein System für Benutzer zur Verfügung zu
stellen, um Information auf dem Internet zu suchen und auf sie zuzugreifen,
ohne ausgedehntes Verständnis
oder Wissen über
die darunterliegenden Protokolle und Datenformate, die benötigt werden,
um auf diese Information zuzugreifen.
-
Noch
ein weiteres Ziel der Erfindung ist es, ein dokumentenbasiertes
Rechensystem zur Verfügung
zu stellen, das es Benutzern ermöglicht,
Module für
Dienste zu entwickeln, die auf Information gerichtet ist, die auf
Computernetzwerken verfügbar
ist.
-
Und
noch ein weiteres Ziel der Erfindung ist es, eine Plattform bereitzustellen,
die es Drittentwicklern erlaubt, ein geschichtetes Netzwerkkomponentensystem
zu erweitern, indem sie neue Komponenten bauen, die nahtlos mit
den Systemkomponenten interagieren.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Kurz
gesagt umfasst die Erfindung ein erweiterbares und austauschbares
netzwerkorientiertes Komponentensystem, das eine Plattform bereitstellt,
um Netzwerknavigationskomponenten zu entwickeln, die auf einer Mannigfaltigkeit
von Hardware- und Softwarecomputersystemen operieren. Diese Navigationskomponenten
umfassen schlüsselintegrierende
Komponenten zusammen mit Komponenten, wie z.B. Gopher-spezifische
und Web-spezifische Komponenten, die konfiguriert sind, um konventionelle
Dienste, die auf Computernetzwerke gerichtet sind, zu liefern. Kommunikation
unter diesen Komponenten wird durch neue Anwendungsprogrammierschnittstellen
(APIs) erreicht, um Integration mit einer darunterliegenden Softwarekomponentenarchitektur
zu erleichtern. Solch eine hochmodular operierende geschichtete
Anordnung zwischen dem Netzwerkkomponentensystem und der Komponentenarchitektur
erlaubt es, dass jede existierende Komponente ersetzt wird, und
erlaubt, dass neue Komponenten hinzugefügt werden, ohne den Betrieb
des neuen Netzwerkkomponentensystems zu beeinflussen.
-
Entsprechend
einem Aspekt der vorliegenden Erfindung stellt das neue System einen
Netzwerknavigationsdienst zur Verfügung, um Information, die auf
den Computernetzwerken zur Verfügung
steht, aufzustöbern
und darauf zuzugreifen. Die Information kann unterschiedliche Datentypen
umfassen, die aus einer Mannigfaltigkeit von Quellen verfügbar sind,
die an die Computernetzwerke angeschlossen sind. Nach Zugriff auf die
gewünschte
Information stehen Komponentenansichtseditoren zur Verfügung, um
Inhalte der Datentypen zu modifizieren oder anzuzeigen, entweder
visuell oder akustisch, ungeachtet der Quelle der darunterliegenden
Daten. Zusätzliche
Komponenten und Komponentenansichtseditoren können in Zusammenhang mit der darunterlie genden
Softwarekomponentenarchitektur erzeugt werden, um Integration verschiedener
Datentypen und Protokolle zu erlauben, um mit Information im Internet
zu interagieren.
-
Gemäß einem
anderen Aspekt der Erfindung ist das Komponentensystem vorzugsweise
als ein kundenspezifisches Rahmenwerk verkörpert, das eine Menge von untereinander
verbundenen abstrakten Klassen aufweist, um netzwerkorientierte
Objekte zu definieren. Diese abstrakten Klassen umfassen CyberItem, CyberStream
und CyberExtension, und die Objekte, die sie definieren, werden
verwendet, um die neuen Navigationskomponenten zu bauen. Interaktionen
unter diesen letzteren Komponenten und existierenden Komponenten
der darunterliegenden Softwarearchitektur stellen die Basis für die Erweiterbarkeits-
und Ersetzbarkeitsmerkmale des Netzwerkkomponentensystems dar.
-
Insbesondere
CyberItem ist eine Objektabstraktion, die eine "Ressource auf einem Computernetzwerk" repräsentiert,
die weiter erweitert werden kann, um Ressourcen, die an einem beliebig
zugänglichen
Ort verfügbar
sind, zu umfassen. CyberStream ist eine Objektabstraktion, die eine
Methode zum Herunterladen von Information von einem entfernten Ort
in dem Computernetzwerk darstellt, während CyberExtension zusätzliche
Verhaltensweisen repräsentiert,
die für
die existierenden Komponenten zur Integration mit dem Netzwerkkomponentensystem
bereitgestellt werden.
-
Das
neue Netzwerksystem bringt das Wesentliche eines "komponentenbasierten" Ansatzes zum Durchstöbern und
Wiederfinden netzwerkorientierter Information ein, im Gegensatz
zu dem monolithischen anwendungsorientierten Ansatz früherer Browsersysteme.
Solch ein komponentenbasiertes System hat eine Anzahl von Vorteilen.
Erstens, falls ein Benutzer es nicht mag, wie eine spezielle Komponente
operiert, kann diese Komponente durch eine andere Komponente, die
von einem anderen Entwickler zur Verfügung gestellt wird, ersetzt
werden. Demgegenüber,
falls es ein Benutzer nicht mag, wie eine monolithische Anwendung
mit bestimmten Protokollen umgeht, besteht die einzige Zuflucht
darin, einen anderen Dienst zu benutzen, weil der Benutzer die An wendung
nicht modifizieren kann, um die Protokollfunktionen auf eine andere
Weise auszuführen.
Klarerweise bietet die Ersetzbarkeitseigenschaft des neuen Netzwerkkomponentensystems
dem Benutzer eine flexible Alternative.
-
Zweitens
ist die Verwendung von Komponenten im wesentlichen weniger unterbrechend
als das Verwenden von Hilfsanwendungen in Situationen, wo eine monolithische
Anwendung unterschiedliche Datentypen und -formate gegenüberstellt.
Anstatt zwischen Anwendungsschichten zu "wechseln", ruft das neue Netzwerksystem lediglich
die geeignete Komponente und den Komponentenansichteditor auf, der
konfiguriert ist, um mit dem Datentyp und -format zu operieren.
Solch "Nahtlos"-Integration unter
Komponenten ist ein bedeutendes Merkmal der hierin beschriebenen
modularen kooperierenden Architektur.
-
Ein
dritter Vorteil des neuen Netzwerksystems ist auf die kooperierende
Beziehung zwischen dem System und der darunterliegenden Softwarekomponentenarchitektur
gerichtet. Insbesondere die neuen Netzwerkkomponenten sind auf der
Komponentenarchitekturtechnologie basiert, um deshalb die Zusammenarbeit zwischen
allen Komponenten in einer integrierten Weise zu gewährleisten.
Die Softwarekomponentenarchitektur ist konfiguriert, um auf einer
Vielzahl von Computern zu operieren und ist vorzugsweise als eine
an das Betriebssystem angrenzende Softwareschicht implementiert.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
obigen und weiteren Vorteile der Erfindung können besser verstanden werden,
indem man sich auf die folgende Beschreibung in Verbindung mit den
begleitenden Zeichnungen bezieht, in denen:
-
1 ein
Blockdiagramm eines Netzwerksystems einschließlich einer Sammlung von Computernetzwerken,
die durch Client- und
Servercomputer miteinander verbunden sind, ist;
-
2 ein
Blockdiagramm eines Clientcomputers, wie z.B. eines Personalcomputers
ist, auf dem die Erfindung vorteilhaft arbeiten kann;
-
3 ein
Blockdiagramm eines Servercomputers von 1 ist;
-
4 ein
hochschematisiertes Blockdiagramm einer geschichteten Komponentenberechnungsanordnung
gemäß der Erfindung
ist;
-
5 eine
schematische Veranschaulichung der Interaktion einer Komponente,
einer Softwarekomponentenschicht und eines Betriebssystems des Computers
der 2 ist;
-
6 eine
schematische Veranschaulichung der Interaktion zwischen einer Komponente,
einer Komponentenschicht und einem Fenstermanager gemäß der Erfindung
ist;
-
7 ein
vereinfachtes Klassenhierarchiediagramm ist, das eine Basisklasse
CyberItem veranschaulicht und seine assoziierten Unterklassen, die
verwendet werden, um Netzwerkkomponentenobjekte gemäß der Erfindung
zu konstruieren;
-
8 ein
vereinfachtes Klassenhierarchiediagramm ist, das eine Basisklasse
CyberStream veranschaulicht und seine zugeordneten Unterklassen
gemäß der Erfindung;
und
-
9 ein
vereinfachtes Klassenhierarchiediagramm ist, das eine Basisklasse
CyberExtension veranschaulicht und seine assoziierten Unterklassen
gemäß der vorliegenden
Erfindung.
-
DETAILLIERTE
BESCHREIBUNG EINER VERANSCHAULICHENDEN AUSFÜHRUNGSFORM
-
1 ist
ein Blockdiagramm eines Netzwerksystems 100, welches eine
Sammlung von Computernetzwerken 110 umfasst, die durch
Clientcomputer ("Clients") 200, z.B.
Workstations oder Personalcomputer, und Servercomputer ("Servers") 300 untereinander
verbunden sind. Die Server sind typischerweise Computer, die Hardware-
und Softwareelemente aufweisen, die Ressourcen oder Dienste zur
Verwendung durch die Clients 200 bereitstellen, um die
Effizienz ihrer Operationen zu vergrößern. Es wird von Fachleuten
verstanden, dass in einer alternativen Ausführungsform der Client und Server
auf demselben Computer existie ren kann; jedoch sind für das veranschaulichende
Ausführungsbeispiel,
das hierin beschrieben ist, der Client und der Server getrennte
Computer.
-
Mehrere
Typen von Computernetzwerken 110, einschließlich lokaler
Netzwerke (Local Area Networks, LANs) und landesweiter Netze (Wide
Area Networks, WANs) können
in dem System 100 angewendet werden. Ein LAN ist ein begrenztes
Flächennetzwerk,
das typischerweise ein Übertragungsmedium,
wie z.B. Koaxialkabel oder verdrilltes Leitungspaar, umfasst, während ein
WAN eine öffentliche
oder private Telekommunikationseinrichtung sein kann, die weit verstreute
Computer untereinander verbindet. In der veranschaulichenden Ausführungsform
ist das Netzwerksystem 100 das Internetsystem geographisch
verteilter Computernetzwerke.
-
Computer,
die an das Internet angeschlossen sind, kommunizieren typischerweise,
indem sie diskrete Informationspakete entsprechend vordefinierter
Netzwerkprotokolle austauschen. Ausführung dieser Netzwerkprotokolle
erlaubt es den Benutzer zu interagieren und Information über die
Netzwerke hinweg gemeinsam zu nutzen. Als eine Veranschaulichung
sendet der Client 200 in Reaktion auf eine Anfrage eines
Benutzers nach einem speziellen Dienst ein geeignetes Informationspaket
an den Server 300, der den Dienst ausführt und ein Ergebnis zurück an den
Client 200 schickt.
-
2 veranschaulicht
eine typische Hardwarekonfiguration eines Clients 200,
die eine Zentraleinheit (CPU) 210 umfasst, die zwischen
einem Speicher 214 und Eingabe/Ausgabe (E/A)-Schaltungen 218 durch
bidirektionale Busse 212 und 216 angeschlossen
ist. Der Speicher 214 umfasst typischerweise einen Direktzugriffsspeicher
(RAM) für
temporäres
Speichern von Information und einen Festspeicher (ROM) für permanentes
Speichern der Computerkonfiguration und grundlegender Bedienkommandos,
wie z.B. Teile eines Betriebssystems (nicht gezeigt). Wie hierin
weiter beschrieben wird, steuert das Betriebssystem die Operationen der
CPU 210 und des Clientcomputers 200.
-
Die
E/A-Schaltungen 218 wiederum verbinden den Computer mit
Computernetzwerken, wie z.B. den Internetcomputernetzwerken 250, über einen
bidirektionalen Bus 222 und mit Cursor/Zeigersteuergeräten, wie z.B.
eine Tastatur 224 (über
Kabel 226) und eine Maus 230 (über Kabel 228). Die
Maus 230 umfasst typischerweise zumindest eine Taste 234,
die von einem Benutzer des Computers betätigt wird. Ein herkömmlicher
Anzeigemonitor 232, der einen Bildschirm 235 aufweist,
ist ebenfalls mit den E/A-Schaltungen 218 über Kabel 238 verbunden.
Ein Zeiger (Cursor) 240 wird auf Fenstern 244 des
Bildschirms 235 angezeigt, und seine Position ist über die
Maus 230 oder die Tastatur 224 steuerbar, wie
gut bekannt ist. Typischerweise empfangen die E/A-Schaltungen 218 Information,
wie z.B. Steuer- und Datensignale von der Maus 230 und
Tastatur 224 und stellen diese Information der CPU 210 zur
Anzeige auf dem Bildschirm 235 zur Verfügung, oder wie hierin weiter
beschrieben wird, zum Transfer über
das Internet 250.
-
3 veranschaulicht
eine typische Hardwarekonfiguration eines Servers 300 des
Netzwerksystems 100. Der Server 300 hat viele
der gleichen Einheiten, wie sie im Client 200 eingesetzt
werden, einschließlich einer
CPU 310, eines Speichers 314 und E/A-Schaltungen 318,
von denen alle durch bidirektionale Busse 312 und 316 untereinander
verbunden sind. Die E/A-Schaltungen verbinden den Computer mit Computernetzwerken 350 über einen
bidirektionalen Bus 322. Diese Einheiten sind konfiguriert,
um Funktionen ähnlich
derer, die von den entsprechenden Einheiten in dem Computer 200 zur
Verfügung
gestellt werden, auszuführen.
Zusätzlich
umfasst der Server typischerweise eine Massenspeichereinheit 320,
wie z.B. ein Diskettenlaufwerk, die mit den E/A-Schaltungen 318 über bidirektionalen
Bus 324 verbunden ist.
-
Es
versteht sich, dass die E/A-Schaltungen innerhalb der Computer 200 und 300 die
nötige
Hardware umfassen, z.B. Zwischenspeicher und Adapter, die benötigt werden,
um sich an die Steuergeräte,
den Anzeigemonitor, die Massenspeichereinheit und die Netzwerke
anschließen
zu lassen. Außerdem
umfasst das Betriebssystem die notwendigen Softwaretreiber, um z.B.
Netzwerkadapter innerhalb der E/A-Schaltungen zu steuern, wenn man
E/A- Operationen,
wie z.B. den Transfer von Datenpaketen zwischen dem Client 200 und Server 300,
durchführt.
-
Die
Computer sind vorzugsweise Personalcomputer der Macintosh® Computerserie,
die von Apple Computer Inc. verkauft werden, obgleich die Erfindung
auch im Kontext anderer Computertypen einschließlich der IBM® Computerserie,
die von International Business Machines Corp. verkauft werden, ausgeführt werden kann.
Diese Computer haben und werden gesteuert und koordiniert durch
Betriebssystemsoftware, wie z.B. das Apple® System7®,
IBM OS2® oder
die Microsoft® Windows® Betriebssysteme.
-
Wie
erwähnt,
ist die vorliegende Erfindung auf einer modularen Dokumentenberechnungsanordnung basiert,
wie sie von einer darunterliegenden Softwarekomponentenarchitektur
bereitgestellt wird, anstelle der typischen anwendungsbasierten
Umgebung früherer
Rechensysteme. 4 ist ein hochschematisiertes
Diagramm der Hardware- und Softwareelemente einer geschichteten
Komponentenberechnungsanordnung 400, die das neue netzwerkorientierte
Komponentensystem der Erfindung umfasst. Auf der untersten Stufe
ist die Computerhardware, die als Schicht 410 gezeigt ist.
Angeschlossen an die Hardware ist eine gewöhnliche Betriebssystemschicht 420,
die einen Fenstermanager, ein graphisches System, ein Dateisystem
und netzwerkspezifische Schnittstellen, wie z.B. einen TCP/IP-Protokollstapel
und einen Apple-Talk-Protokollstapel, umfasst.
-
Die
Softwarekomponentenarchitektur ist vorzugsweise als eine Komponentenarchitekturschicht 430 implementiert.
Obwohl sie als das Betriebssystem 420 überlagernd gezeigt ist, ist
die Komponentenarchitekturschicht 430 eigentlich unabhängig von
dem Betriebssystem und befindet sich genauer gesagt Seite an Seite mit
dem Betriebssystem. Diese Beziehung erlaubt der Komponentenarchitektur
auf mehreren Plattformen zu existieren, die unterschiedliche Betriebssysteme
einsetzen.
-
Entsprechend
der vorliegenden Erfindung umfasst eine neue netzwerkorientierte
Komponentenschicht 450 die darunterliegende Technologie,
um das erweiterbare und austauschbare Netzwerkkomponentensystem
zu implementieren, das Dienste liefert und Ent wicklung von Navigationskomponenten,
die auf Computernetzwerke, wie das Internet, gerichtet sind, erleichtert.
Wie hierin ferner beschrieben wird, umfasst diese Technologie neue
Anwendungsprogrammierschnittstellen (APIs), die Kommunikation unter
Komponenten erleichtert, um Integration mit der darunterliegenden
Komponentenarchitekturschicht 430 zu gewährleisten.
Diese neuen APIs werden vorzugsweise in der Form von Objekten in
einer Klassenhierarchie geliefert.
-
Es
sollte erwähnt
werden, dass die Netzwerkkomponentenschicht 450 mit einer
beliebigen existierenden systemweiten Komponentenarchitektur, wie
z.B. die Object Linking and Embedding (OLE)-Architektur, die von
der Microsoft Corporation entwickelt wurde, operieren kann; jedoch
ist in dem erläuternden
Ausführungsbeispiel
die Komponentenarchitektur vorzugsweise OpenDoc, der anbieterneutrale
offene Standard für
Verbunddokumente, der u.a. von Apple Computer, Inc. entwickelt wurde.
-
Unter
Verwendung von Werkzeugen, wie z.B. Ansichtseditoren, erzeugt die
Komponentenarchitekturschicht 430 ein Verbunddokument,
das aus Daten zusammengesetzt ist, die unterschiedliche Typen und
Formate aufweisen. Jeder/s unterschiedliche Datentyp und -format
ist in einer Fundamentaleinheit enthalten, die Berechnungsteil,
oder allgemeiner, "Berechnungskomponente" 460 genannt
wird, die einen Ansichtseditor zusammen mit dem Dateninhalt umfasst.
Ein Beispiel der Berechnungskomponente 460 kann eine MacDraw-Komponente
umfassen. Der Editor ist auf der anderen Seite analog zu einem Anwendungsprogramm
in einem herkömmlichen
Computer. Das bedeutet, der Editor ist eine Softwarekomponente,
die die notwendige Funktionalität
bereitstellt, um Inhalt einer Komponente darzustellen und, wo angemessen,
um eine Benutzerschnittstelle zu präsentieren, um diese Inhalte
zu modifizieren. Zusätzlich
kann der Editor Menüs, Steuerelemente
und andere Benutzerschnittstellenelemente enthalten.
-
Entsprechend
der Erfindung erweitert die Netzwerkkomponentenschicht 450 die
Funktionalität
der darunterliegenden Komponentenarchitekturschicht 430,
indem sie netzwerkorientierte Komponenten 480 definiert.
Eingeschlossen unter diesen Kompo nenten sind schlüsselintegrierende
Komponenten (wie z.B. Notizbuch, Protokoll und Verbindungsdialogkomponenten)
zusammen mit Komponenten, die konfiguriert sind, um gewöhnliche
Dienste zu liefern, die auf Computernetzwerke gerichtet sind, wie
z.B. Gopher-spezifische und Web-spezifische Komponenten. Außerdem können die
Komponenten FTP-spezifische Komponenten zum Transferieren von Dateien über die
Netzwerke, Telnet-spezifische Komponenten, um sich entfernt auf
anderen Computern einzuloggen, und JPEG-spezifische und MPEG-spezifische
Komponenten enthalten, um Bild- und Filmdatentypen und -formate
anzusehen.
-
Ein
Merkmal der Erfindung ist die Fähigkeit,
beliebige der Komponenten der geschichteten Berechnungsanordnung 400 mit
einer anderen Komponente einfach zu erweitern oder zu ersetzen,
um einem Benutzer kundenspezifische netzwerkbezogene Dienste zu
bieten. Wie hierin beschrieben wird, wird dieses Merkmal durch die
kooperierende Beziehung zwischen der Netzwerkkomponentenschicht 450 und
ihrer darunterliegenden Komponentenarchitekturschicht 430 möglich gemacht.
Die integrierenden Komponenten kommunizieren und interagieren mit
diesen verschiedenen Komponenten des Systems in einer "nahtlos integrierten" Weise, um grundlegende
Werkzeuge zum Navigieren auf Internetcomputernetzwerken zur Verfügung zu
stellen.
-
4 veranschaulicht
auch die Beziehung der Anwendungen 490 zu den Elementen
der geschichteten Berechnungsanordnung 400. Obwohl sie
sich in demselben "Benutzerraum" wie die Komponenten 460 und
die Netzwerkkomponenten 480 befinden, interagieren die
Anwendungen 490 mit diesen Elementen nicht und sind deshalb
direkt an die Betriebssystemschicht 420 angeschlossen.
Weil sie als monolithische, autonome Module entworfen sind, interagieren
Anwendungen (wie z.B. bisherige Internetbrowser) oft nicht einmal
untereinander. Demgegenüber
sind die Komponenten der Anordnung 400 entworfen, um über die
gemeinsame Komponentenarchitekturschicht 430 oder, in dem
Fall der Netzwerkkomponenten, über
die neue Netzwerkkomponentenschicht 450 zusammenzuarbeiten.
-
Insbesondere
weist die Erfindung die Bereitstellung des erweiterbaren und austauschbaren
netzwerkorientierten Komponentensystems auf, das bei Antwort Handlungen
stattfinden läßt, die
die Fähigkeit
eines Benutzers zur Interaktion mit dem Computer verbessern, um
Information zu suchen und zu erhalten, die über Computernetzwerke, wie
z.B. das Internet, verfügbar
ist. Die Information wird einem Benutzer über eine Fensterumgebung dargeboten,
wie z.B. die graphische Benutzerschnittstelle, die von System 7 oder
Windows bereitgestellt wird, die vorzugsweise auf dem Bildschirm 235 (2)
als eine graphische Anzeige angezeigt wird, um Interaktionen zwischen
dem Benutzer und dem Computer, wie z.B. dem Client 200,
zu erleichtern. Dieses Systemverhalten wird durch die Interaktion
der Netzwerkkomponenten mit einer Reihe von Systemsoftwareroutinen,
die mit dem Betriebssystem 420 assoziiert sind, zuwege
gebracht. Diese Systemroutinen wiederum interagieren mit der Komponentenarchitekturschicht 430,
um die Fenster und graphischen Benutzerschnittstellenelemente zu
erzeugen, wie sie hierin weiter beschrieben werden.
-
Die
Fensterumgebung ist im allgemeinen Teil der Betriebssystemsoftware 420,
die eine Sammlung von Dienstprogrammen zur Steuerung des Betriebs
des Computers 200 umfasst. Das Betriebssystem wiederum
interagiert mit den Komponenten, um höhere Levelfunktionalität einschließlich einer
direkten Schnittstelle mit dem Benutzer zu bieten. Eine Komponente
macht Gebrauch von Betriebssystemfunktionen, indem sie eine Reihe
von Aufgabenbefehlen an das Betriebssystem über die Netzwerkkomponentenschicht 450 oder,
wie es häufig
typischerweise der Fall ist, durch die Komponentenarchitekturschicht 430 ausgibt.
Das Betriebssystem 420 führt dann die angefragte Aufgabe
aus. Zum Beispiel kann die Komponente verlangen, dass ein Softwaretreiber
des Betriebssystems den Transfer eines Datenpakets über die
Netzwerke 250 initiiert oder, dass das Betriebssystem bestimmte
Information auf einem Fenster zur Präsentation dem Benutzer anzeigt.
-
5 ist
eine schematische Veranschaulichung der Interaktion einer Komponente 502,
einer Softwarekomponentenschicht 506 und eines Betriebssystems 510 eines
Computers 500, der ähnlich
dem Clientcomputer 200 aus 2 ist und äquivalente
Elemente von diesem hat. Wie erwähnt,
ist die Netzwerkkomponentenschicht 450 (4)
mit der Komponentenarchitekturschicht 430 integriert, um
eine kooperierende Architektur zu bieten, die einer beliebigen Komponente
erlaubt, ersetzt oder erweitert zu werden, und neuen Komponenten
gestattet, hinzugefügt
zu werden, ohne den Betrieb des Netzwerkkomponentensystems zu beeinflussen;
entsprechend können
die Schichten 430 und 450 zu Zwecken der vorliegenden
Diskussion als eine einfache Softwarekomponentenschicht 506 behandelt
werden.
-
Die
Komponente 502, die Komponentenschicht 506 und
das Betriebssystem 510 interagieren, um die Operationen
des Computers 500 zu steuern und zu koordinieren, und ihre
Interaktion ist schematisch durch Pfeile 504 und 508 veranschaulicht.
Um Information auf einem Bildschirm 535 anzuzeigen, kooperieren
die Komponente 502 und die Komponentenschicht 506,
um Anzeigebefehle an einen Fenstermanager 514 und das Betriebssystem 510 zu
generieren und zu schicken. Der Fenstermanager 514 speichert
Information direkt (über
Pfeil 516) in einen Bildschirmzwischenspeicher 520.
-
Der
Fenstermanager 514 ist eine Systemsoftwareroutine, die
im allgemeinen verantwortlich für
das Verwalten von Fenstern 544 ist, die der Benutzer während des
Betriebs des Netzwerkkomponentensystems sieht. Das heißt, es ist
allgemein die Aufgabe des Fenstermanagers, den Ort und die Größe des Fensters
und Fensterflächen
zu verfolgen, die in Verbindung mit dem Netzwerkkomponentensystem
der vorliegenden Erfindung gezeichnet und wiedergezeichnet werden
müssen.
-
Unter
Steuerung vielfältiger
Hard- und Software in dem System werden die Inhalte des Bildschirmzwischenspeichers 520 aus
dem Zwischenspeicher ausgelesen und einem Anzeigenadapter 526 bereitgestellt, wie
schematisch durch Pfeil 522 angezeigt wird. Der Anzeigenadapter
umfasst Hard- und Software (manchmal in der Form von Firmware),
die die Information in den Bildschirmzwischenspeicher 520 in
eine Form konvertiert, die ver wendet werden kann, um einen Bildschirm 535 eines
Monitors anzusteuern. Der Monitor 532 ist über Kabel 528 mit
dem Anzeigenadapter 526 verbunden.
-
Um
Information als ein Paket über
die Computernetzwerke zu transferieren, kooperieren die Komponente 502 und
Komponentenschicht 506 auf ähnliche Weise, um Netzwerkbefehle
zu erzeugen und zu schicken, wie z.B. entfernte Prozeduraufrufe
zu einer netzwerkspezifischen Schnittstelle 540 des Betriebssystems 510.
Die Netzwerkschnittstelle umfasst Systemsoftwareroutinen, wie z.B. "Gerüst"-Prozedursoftware
und Protokollstapel, die im allgemeinen für das Formatieren der Information
in ein vorbestimmtes Paketformat entsprechend des verwendeten spezifischen
Netzwerkprotokolls, z.B. TCP/IP oder Apple-Talk Protokoll, verantwortlich
sind.
-
Insbesondere
speichert die Netzwerkschnittstelle 540 das Paket direkt
(über Pfeil 556)
in einen Netzwerkzwischenspeicher 560. Unter Steuerung
der Hardware und Software in dem System wird der Inhalt dem Netzwerkzwischenspeicher 560,
wie schematisch durch Pfeil 562 angegeben ist, einem Netzwerkadapter 566 zur
Verfügung
gestellt. Der Netzwerkadapter vereinigt die Software und Hardware,
d.h. elektrische und mechanische Austausschaltkreise und Charakteristika,
die benötigt
werden, um an die speziellen Computernetzwerke 550 angeschlossen
zu werden. Der Adapter 566 ist mit den Computernetzwerken 550 durch
Kabel 568 verbunden.
-
In
einer bevorzugten Ausführungsform
ist die hierin beschriebene Erfindung in einer objektorientierten Programmiersprache
(OOP) implementiert, wie z.B. C++, unter Verwendung von System Objekt
Modell (SOM)-Technologie und OOP-Techniken. Die C++ und SOM-Sprachen
sind gut bekannt und viele Artikel und Texte sind verfügbar, die
die Sprachen im Detail beschreiben. Zusätzlich sind C++ und SOM Compiler
kommerziell von mehreren Anbietern erhältlich. Dementsprechend werden
aus Klarheitsgründen
die Details der C++ und SOM-Sprachen und Operationen ihrer Compiler
hierin nicht weiter im Detail diskutiert.
-
Wie
von Fachleuten verstanden wird, beziehen OOP-Techniken die Definition,
Erschaffung, Verwendung und Löschung
von Objekten mit ein. Diese Objekte sind Softwareentitäten, die
Datenelemente und Routinen umfassen oder Funktionen, die die Datenelemente
manipulieren. Die Daten und dazugehörige Funktionen werden von
der Software als eine Entität
behandelt, die erzeugt, verwendet und gelöscht werden kann, als wäre sie ein
einzelner Gegenstand. Zusammen ermöglichen die Daten und Funktionen
Objekte, um praktisch jede beliebige Reale-Welt-Entität in Bezug
auf ihre Charakteristika, die durch die Datenelemente repräsentiert
werden können,
und ihr Verhalten, das durch ihre Manipulationsfunktionen repräsentiert
werden kann, zu modellieren. Auf diese Weise können Objekte konkrete Dinge,
wie z.B. Computer, modellieren, während sie auch abstrakte Konzepte,
wie z.B. Zahlen oder geometrische Entwürfe, modellieren.
-
Objekte
werden definiert durch die Erschaffung von "Klassen", die selbst keine Objekte sind, die
aber wie Vorlagen agieren, die dem Computer Anweisungen geben, wie
er ein tatsächliches
Objekt konstruieren kann. Eine Klasse kann z.B. die Anzahl und Typen
von Datenvariablen spezifizieren und die Schritte, die in den Funktionen
involviert sind, die die Daten manipulieren. Ein Objekt wird in
dem Programm mittels einer speziellen Funktion geschaffen, die "Konstruktor" genannt wird, die
die entsprechende Klassendefinition und zusätzliche Information verwendet,
wie z.B. Argumente, die während
der Objekterzeugung zur Verfügung
gestellt werden, um das Objekt zu konstruieren. Gleichermaßen werden
Objekte durch eine spezielle Funktion gelöscht, welche "Destruktor" genannt wird. Objekte
können
verwendet werden, indem man ihre Daten manipuliert und ihre Funktionen
aufruft.
-
Die
grundsätzlichen
Vorteile von OOP-Techniken entstehen aus drei grundlegenden Prinzipien
heraus. Kapselung, Polymorphismus und Vererbung. Insbesondere können Objekte
entworfen werden, um ihre gesamte oder einen Teil ihrer internen
Datenstruktur und internen Funktionen zu verstecken oder zu kapseln. Genauer
gesagt, kann während
eines Programmentwurfs ein Programmentwickler Objekte definieren,
in denen alle oder einige der Datenvariablen und alle oder einige
der darauf bezogenen Funktionen als "privat" oder als zur Verwendung nur durch das
Objekt selbst betrachtet werden. Andere Daten oder Funktionen können als "öffentlich" oder als zur Verwendung durch andere
Programmen verfügbar
deklariert werden. Zugang zu den privaten Variablen durch andere
Programme kann gesteuert werden, indem man öffentliche Funktionen für ein Objekt
definiert, die auf die privaten Daten des Objekts zugreifen. Die öffentlichen
Funktionen bilden eine kontrollierte und konsistente Schnittstelle
zwischen den privaten Daten und der "Außenwelt". Jeder Versuch,
Programmcode zu schreiben, der direkt auf die privaten Variablen
zugreift, bewirkt, dass der Compiler einen Fehler während der
Programmkompilierung erzeugt, welcher den Kompilierungsprozess stoppt
und das Programm davon abhält,
ausgeführt
zu werden.
-
Polymorphismus
ist ein Konzept, das Objekten und Funktionen erlaubt, die das gleiche
Gesamtformat haben, aber die mit unterschiedlichen Daten arbeiten,
unterschiedlich zu funktionieren, um konsistente Ergebnisse zu produzieren.
Vererbung, auf der anderen Seite, erlaubt Programmentwicklern, vorher
existierende Programme einfach wiederzuverwenden und zu vermeiden,
Software ganz von vorne zu erschaffen. Das Prinzip der Vererbung
erlaubt einem Softwareentwickler, Klassen als verwandt zu deklarieren
(und die Objekte, die später
aus ihnen erzeugt werden). Insbesondere können Klassen als Unterklassen
von anderen Basisklassen gekennzeichnet werden. Eine Unterklasse "erbt" und hat Zugriff
auf alle der öffentlichen
Funktionen ihrer Basisklasse, genauso als ob diese Funktionen in
der Unterklasse auftreten würden.
Alternativ kann eine Unterklasse einige oder alle ihre geerbten
Funktionen überschreiben
oder kann einige oder alle ihre geerbten Funktionen modifizieren
nur durch Definieren einer neuen Funktion mit derselben Form (Überschreiben
oder Modifizierung verändert
nicht die Funktion in der Basisklasse, sondern modifiziert nur die
Verwendung der Funktion in der Unterklasse). Die Erzeugung einer
neuen Unterklasse, die einiges der Funktionalität (mit selektiver Modifi kation)
einer anderen Klasse hat, erlaubt Softwareentwicklern, bestehenden
Code einfach an Kunden individuell anzupassen, um ihre spezifischen
Bedürfnisse
zu befriedigen.
-
Gemäß der vorliegenden
Erfindung sind die Komponente 502 und Fenster 544 "Objekte", die von der Komponentenschicht 506 bzw.
dem Fenstermanager 514 erzeugt werden, von denen der letztere
ein objektorientiertes Programm sein kann. Interaktion zwischen
einer Komponente, Komponentenschicht und einem Fenstermanager ist
in größerem Detail
in 6 veranschaulicht.
-
Im
allgemeinen ist die Komponentenschicht 606 an den Fenstermanager 614 durch
Erzeugen und Manipulieren von Objekten angeschlossen. Der Fenstermanager
selbst kann ein Objekt sein, das erzeugt wird, wenn das Betriebssystem
gestartet wird. Insbesondere erzeugt die Komponentenschicht Fensterobjekte 630, die
den Fenstermanager veranlassen, assoziierte Fenster auf dem Bildschirm
zu erschaffen. Dies wird schematisch durch einen Pfeil 608 gezeigt.
Zusätzlich
erzeugt die Komponentenschicht 606 einzelne graphische Schnittstellenobjekte 650,
die in jedem Fensterobjekt 630 gespeichert sind, wie schematisch
durch Pfeile 612 und 652 gezeigt wird. Da viele
graphische Schnittstellenobjekte erzeugt werden können, um
viele Schnittstellenelemente auf dem Bildschirm anzuzeigen, kommuniziert
das Fensterobjekt 630 mit dem Fenstermanager mittels einer
Sequenz von Zeichenbefehlen, die vom Fensterobjekt an den Fenstermanager 614 ausgegeben werden,
wie durch Pfeil 632 veranschaulicht wird.
-
Wie
erwähnt,
funktioniert die Komponentenschicht 606, um Komponenten
ineinander einzubetten, um ein Verbunddokument zu bilden, das gemischte
Datentypen und -formate aufweist. Viele verschiedene Ansichtseditoren
können
zusammenarbeiten, um den Dateninhalt des Dokuments anzuzeigen oder
zu modifizieren. Um Tastenanschläge
und Mausereignisse, die vom Benutzer initiiert worden sind, den
echten Komponenten und Editoren zuzuordnen, umfasst die Komponentenschicht 606 einen
Arbitrator 616 und einen Dispatcher bzw. Abfertiger 626.
-
Der
Dispatcher ist ein Objekt, der mit dem Betriebssystem 610 kommuniziert,
um den richtigen Ansichtseditor 660 zu identifizieren,
während
der Schiedsrichter ein Objekt ist, das den Dispatcher informiert,
welcher Editor den Strom von Tastenanschlägen oder Mausereignissen "besitzt". Insbesondere erhält der Dispatcher 626 diese "Mensch-Schnittstelle"-Ereignisse von dem
Betriebssystem 610 (wie schematisch durch Pfeil 628 gezeigt
wird) und liefert sie zu dem richtigen Ansichtseditor 660 über Pfeil 662.
Der Ansichtseditor 660 modifiziert dann oder zeigt den
Inhalt der Datentypen entweder visuell oder akustisch an.
-
Obwohl
OOP bedeutende Verbesserungen über
andere Programmierkonzepte bietet, erfordert die Softwareentwicklung
immer noch erhebliche Zeitaufwendungen und Anstrengungen, besonders,
falls keine vorher existierende Software zur Modifikation zur Verfügung steht.
Infolgedessen war es ein Ansatz aus dem Stand der Technik, dem Entwickler
eine Menge vordefinierter, untereinander verbundener Klassen zur
Verfügung
zu stellen, die eine Menge von Objekten und zusätzliche verschiedenartige Routinen
erzeugen, die alle darauf gerichtet sind, häufig angetroffene Aufgaben
in einer speziellen Umgebung durchzuführen. Solche vordefinierten
Klassen und Bibliotheken werden typischerweise "Rahmenwerke" genannt und bieten im wesentlichen
eine vorgefertigte Struktur für
ein Arbeitsdokument. Zum Beispiel könnte ein Rahmenwerk für eine Benutzerschnittstelle
eine Menge von vordefinierten graphischen Schnittstellenobjekten
bereitstellen, die Fenster, Bildlaufleisten, Menüs etc. erzeugen und die Unterstützung und
das "Standard"-Verhalten für diese
Schnittstellenobjekte bereitstellen. Da Rahmenwerke auf objektorientierten
Techniken basieren, können
die vordefinierten Klassen als Basisklassen verwendet werden, und
die eingebauten Normalverhalten können durch entwicklerdefinierte
Unterklassen vererbt und entweder modifiziert oder überschrieben
werden, um Entwicklern zu erlauben, das Rahmenwerk zu erweitern
und kundenspezifische Lösungen
in einem speziellen Fachgebiet zu schaffen. Dieser objektorientierte
Ansatz bietet einen größeren Vorteil
gegenüber
traditioneller Programmierung, da der Programmierer nicht das Originalprogramm
verändert,
sondern stattdessen die Fähigkeiten dieses
Originalprogramms erweitert. Zusätzlich
arbeiten sich Entwickler nicht blind durch Schichten von Code, weil
das Rahmenwerk eine architektonische Führung und Modellierung bietet
und gleichzeitig die Entwickler von spezifischen Handlungen befreit,
die nur zu der Problemdomäne
passen.
-
Viele
Arten von Rahmenwerken sind verfügbar,
abhängig
von dem Level des Systems, das involviert ist und der Art des Problems,
das gelöst
werden soll. Die Rahmenwerksarten reichen von Rahmenwerken einer
hohen Ebene, die Unterstützung
hinten beim Entwickeln einer Benutzerschnittstelle, zu Rahmenwerken einer
niedrigen Ebene, die grundlegende Systemsoftwaredienste, wie z.B.
Kommunikation, Drucken, Dateisystemunterstützung, Graphik etc. zur Verfügung stellen.
Kommerzielle Beispiele von anwendungsartigen Rahmenwerken umfassen
MacApp (Apple), Bedrock (Symantec), OWL (Borland), NeXT Step App
Kit (NeXT) und Smalltalk-80
MVC (ParcPlace).
-
Während der
Rahmenwerksansatz alle Prinzipien von Kapselung, Polymorphismus
und Vererbung in der Objektschicht verwendet und eine beträchtliche
Verbesserung gegenüber
anderen Programmiertechniken ist, gibt es Schwierigkeiten, die auftreten.
Diese Schwierigkeiten werden durch die Tatsache verursacht, dass es
für Entwickler
einfach ist, ihre eigenen Objekte wieder zu verwenden, aber es schwierig
für die
Entwickler ist, Objekte zu verwenden, die von anderen Programmen
erzeugt wurden. Ferner bestehen Rahmenwerke im allgemeinen aus einer
oder mehreren "Objektschichten" an der Spitze eines
monolithischen Betriebsystems und selbst mit der Flexibilität der Objektschicht
ist es immer noch oft notwendig, mit den darunterliegenden Systemen
mittels umständlicher
Prozeduraufrufe direkt zu interagieren.
-
Auf
gleiche Weise wie ein Rahmenwerk dem Entwickler eine vorgefertigte
Funktionalität
für ein
Dokument zur Verfügung
stellt, kann ein Systemrahmenwerk, wie das, das in der bevorzugten
Ausführungsform
umfasst ist, eine vorgefertigte Funktionalität für Systemleveldienste bieten,
die Entwickler modifizieren oder überschreiben können, um
kundenspezifische Lösungen
zu erzeugen und dabei die umständlichen
Prozeduraufrufe zu ver meiden, die bei Rahmenwerken aus dem Stand
der Technik notwendig sind. Man betrachte z.B. ein kundenanpassbares
Netzwerkschnittstellenrahmenwerk, das die Grundlage für das Aufstöbern und
den Zugriff auf Information über
ein Computernetzwerk bieten kann. Ein Softwareentwickler, der diese
Fähigkeiten
benötigte,
müsste
gewöhnlich
spezifische Routinen schreiben, um sie bereitzustellen. Um dies
mit einem Rahmenwerk zu machen, braucht der Entwickler nur die Besonderheit
und das Verhalten der fertigen Ausgabe zur Verfügung zu stellen, während das
Rahmenwerk die eigentlichen Routinen, die die Aufgaben durchführen, bereitstellt.
-
Eine
bevorzugte Ausführungsform übernimmt
das Konzept von Rahmenwerken und wendet es über das gesamte System hinweg
einschließlich
des Dokuments, der Komponente, Komponentenschicht und des Betriebssystems
an. Für
den gewerblichen oder unternehmerischen Entwickler, Systemintegrator
oder OEM bedeutet dies, dass die gesamten Vorteile, die für ein Rahmenwerk
veranschaulicht wurden, wie z.B. MacApp nicht nur auf der Anwendungsstufe
für Dinge,
wie Text und graphische Benutzerschnittstellen, wirksam eingesetzt
werden können,
sondern auch auf der Systemstufe für solche Dienste, wie Drucken,
Graphik, Multimedia, Dateisysteme und, wie hierin beschrieben, netzwerkspezifische
Operationen.
-
Wieder
unter Bezugnahme auf 6 sind das Fensterobjekt 630 und
das graphische Schnittstellenobjekt 650 Elemente einer
graphischen Schnittstelle eines Netzwerkkomponentensystems, das
ein kundenanpassbares Rahmenwerk, zum erheblichen Verbessern der
Möglichkeit
eines Benutzers, durch Information zu navigieren oder zu browsen,
die auf an das Netzwerk angeschlossenen Servern gespeichert ist.
Außerdem bietet
das neue Netzwerksystem eine Plattform zum Entwickeln von Netzwerknavigationskomponenten
für den Betrieb
auf zahlreichen Hardware- und Softwarecomputersystemen.
-
Wie
erwähnt,
sind die Netzwerkkomponenten vorzugsweise als Objekte implementiert,
und eine Kommunikation unter den Netzwerkkomponentenobjekten wird
durch neue Anwendungsprogrammier schnittstellen (APIs) durchgeführt. Diese
APIs werden vorzugsweise in der Form von Objekten in einer Klassenhierarchie geliefert,
die erweiterbar ist, so dass Entwickler neue Komponenten und Editoren
erzeugen können.
Aus einer Implementierungssichtweise können die Objekte in Unterklassen
eingeteilt werden und können
aus Basisklassen erben, um kundenangepasste Komponenten zu bauen,
die es Kunden erlauben, unterschiedliche Arten von Daten unter Verwendung
unterschiedlicher Arten von Protokollen zu sehen, oder um Komponenten
zu erzeugen, die anders als existierende Komponenten funktionieren.
-
Gemäß der Erfindung
hat das kundenangepasste Netzwerk eine Menge untereinander verbundener abstrakter
Klassen, um netzwerkorientierte Objekte zu definieren, die verwendet
werden, um diese kundenangepassten Netzwerkkomponenten zu bauen.
Diese abstrakten Klassen umfassen CyberItem, CyberStream und CyberExtension
und die Objekte, die sie definieren, werden verwendet, um die neuen
Netzwerkkomponenten zu bauen. Interaktionen unter diesen letzteren
Komponenten und existierenden Komponenten der darunterliegenden
Softwarearchitektur bieten die Basis für die Erweiterbarkeits- und
Ersetzbarkeitsmerkmale des Netzwerkkomponentensystems. Um weiter
diese Operationen dieser Netzwerkkomponentenobjekte zu verstehen,
kann es hilfreich sein, ihre Konstruktion zusammen mit den Hauptfunktionsroutinen
zu untersuchen, die das Verhalten der Objekte umfassen. Wenn man
diese Objekte untersucht, ist es auch hilfreich, die Klassen zu
untersuchen, die verwendet werden, um die Objekte zu konstruieren
(wie vorher erwähnt,
dienen die Klassen als Vorlagen für die Konstruktion von Objekten).
Deshalb kann die Beziehung der Klassen und Funktionen, die den Klassen
innewohnen, verwendet werden, um das Verhalten eines Objekts vorherzusagen,
wenn es erst konstruiert ist.
-
7 veranschaulicht
ein vereinfachtes Klassenhierarchiediagramm 700 der Basisklasse
CyberItem 702, das verwendet wird, um das Netzwerkkomponentenobjekt 602 zu
konstruieren. Im allgemeinen ist CyberItem eine Abstraktion, die
Ressourcen darstellen kann, die an einem beliebigen Ort, der von
dem Client 200 aus zugänglich
ist, vorhanden sind. Jedoch ist gemäß dem veranschaulichenden Ausführungsbeispiel
ein CyberItem vorzugsweise ein kleines in sich geschlossenes Objekt,
das eine Ressource, wie z.B. einen Dienst, der auf dem Internet
verfügbar
ist, repräsentiert,
und Unterklassen der CyberItem-Basisklasse werden verwendet, um
verschiedenartige Netzwerkkomponentenobjekte zu konstruieren, die
konfiguriert sind, um solche Dienste für das neue netzwerkorientierte
Komponentensystem zur Verfügung
zu stellen.
-
Zum
Beispiel kann die Klasse GopherItem 704 verwendet werden,
um ein Netzwerkkomponentenobjekt zu konstruieren, das ein "Ding im Gopherraum" repräsentiert,
wie z.B. ein Gopherverzeichnis, während die Unterklasse WebItem 706 von
CyberItem abgeleitet ist und ein Netzwerkkomponentenobjekt kapselt,
das ein "Ding im
Webspace", z.B.
eine Webseite repräsentiert.
Auf ähnliche
Weise kann die Unterklasse NewsGroupItem 708 verwendet
werden, um ein Netzwerkobjekt zu konstruieren, das eine Newsgroup
repräsentiert
und die Klasse Article 710 ist konstruiert, um ein Netzwerkkomponentenobjekt
zu kapseln, das eine Artikelressource auf einem Internetserver repräsentiert.
-
Da
alle Klassen, die verwendet werden, um diese Netzwerkkomponentenobjekte
zu konstruieren, Unterklassen der CyberItem-Basisklasse sind, erbt jede Klasse die
funktionalen Operatoren und Methoden, die von dieser Basisklasse
verfügbar
sind. Zum Beispiel werden Methoden, die mit der CyberItem-Basisklasse
assoziiert sind, um eine Iconfamilie und einen Namen zurückzugeben,
von den Unterklassen übernommen,
um den Netzwerkkomponenten zu erlauben, CyberItemobjekte auf eine
konsistente Art und Weise anzuzeigen. Die Methoden, die mit der
CyberItem-Basisklasse
assoziiert sind, umfassen (die Argumente wurden aus Gründen der
Einfachheit weggelassen):
-
In
einigen Beispielen kann es für
ein CyberItemobjekt erforderlich sein, ein CyberStreamobjekt hervorzubringen,
um die eigentlichen Daten für
das Objekt, das es repräsentiert,
zu erhalten. 8 veranschaulicht ein vereinfachtes
Klassenhierarchiediagramm 800 der Basisklasse CyberStream 802.
Wie erwähnt,
ist CyberStream eine Abstraktion, die als eine API dient, zwischen
einer Komponente, die konfiguriert ist, um ein spezielles Datenformat
anzuzeigen und der Methode zum Erhalt der tatsächlichen Daten. Dies erlaubt
Entwicklern Ansichtseditoren zu entwerfen, die den Inhalt der Daten
anzeigen können,
ungeachtet des Protokolls, das benötigt wird, um die Daten zu
erhalten.
-
Zum
Beispiel kann ein Entwickler einen Bildansichtseditor entwerfen,
der die CyberStream-API verwendet, um Datenbytes zu erhalten, die
ein Bild beschreiben. Die eigentlichen Datenbytes werden von einer Unterklasse
von CyberStream erhalten, die konfiguriert ist, um ein Komponentenobjekt
zu konstruieren, das ein spezielles Protokoll implementiert, wie
z.B. Gopher und HTTP. Das heißt,
das CyberStreamobjekt umfasst die Softwarebefehle, die nötig sind,
um einen "Datenstrom" zum Transferieren
von Information von einem Objekt zu einem anderen zu schaffen. Entsprechend
der Erfindung ist eine GopherStream-Unterklasse 804 von der
CyberStream-Basisklasse abgeleitet und kapselt ein Netzwerkobjekt,
das das Gopherprotokoll implementiert, während die Klasse WebStream 806 verwendet
werden kann, um eine Netzwerkkomponente zu konstruieren, die konfiguriert
ist, um gemäß dem HTTP-Protokoll
zu operieren.
-
Die
Methoden, die mit der CyberStreamklasse assoziiert sind, und die
in den Objekten enthalten sind, die aus den Unterklassen konstruiert
wurden, umfassen (die Argumente wurden aus Gründen der Einfachheit weggelassen):
-
9 ist
ein vereinfachtes Klassenhierarchiediagramm der Basisklasse CyberExtension 902,
die zusätzliche
Verhaltensweisen repräsentiert,
die Komponenten der darunterliegenden Softwarekomponentenarchitektur
zur Verfügung
gestellt werden. Insbesondere sind CyberExtensions die Mechanismen
zum Hinzufügen
von Funktionalität
zu bestehenden Netzwerkkomponenten und zum Erweitern der APIs bestehender
Netzwerkkomponenten, so dass sie mit den neuen Netzwerkkomponenten
kommunizieren können.
Als Ergebnis operiert die CyberExtension-Basisklasse 902 in
Verbindung mit einer Komponentenbasisklasse 906 durch ihre entsprechenden
Unterklassen BaseExtension 904 und BaseComponent 908.
-
Die
CyberExtension-Basisklasse bietet eine API für den Zugriff auf andere netzwerkspezifische
Komponenten, wie z.B. Notebooks und Protokolle, und für die Unterstützung der
Elemente von graphischen Benutzerschnittstellen, wie z.B. Menüs. CyberExtensionsobjekte
werden von Komponenten verwendet, die die Inhalte von CyberItemobjekten
anzeigen. Dies umfasst browser ähnliche
Komponenten, wie z.B. einen Gopherbrowser oder Webbrowser, sowie
JPEG-spezifische Komponenten, die spezielle Datentypen, wie z.B.
Bilder, anzeigen. Die CyberExtensionsobjekte beobachten auch die
CyberItemobjekte, für
deren Anzeige diese Komponenten verantwortlich sind.
-
Gemäß der Erfindung
kann die Klasse GopherBrowser
910 verwendet werden, um
eine gopherähnliche
Netzwerkbrowsingkomponente zu konstruieren, und die Klasse Webbrowser
912 kann
verwendet werden, um eine webähnliche
Netzwerkbrowsingkomponente zu konstruieren. Gleichermaßen kann
eine Textviewer-Unterklasse
918 eine Netzwerkkomponente
kapseln, die konfiguriert ist, um Text anzuzeigen, und eine PictureViewer-Unterklasse
920 kann
eine Komponente konstruieren, um Bilder anzuzeigen. Die Methoden,
die mit der CyberExtensionklasse assoziiert sind, umfassen (die
Argumente wurden aus Gründen
der Einfachheit weggelassen):
-
Zusammenfassend
umfasst das neue hierin beschriebene Netzwerksystem das wesentliche
eines "komponentenbasierten" Ansatzes zum Durchstöbern und
Wiederauffinden von netzwerkorientierter Information im Gegensatz
zum monolithischen anwendungsorientierten Ansatz früherer Browsersysteme.
Die Vorteile eines solchen komponentenbasierten Systems umfassen
die Fähigkeit,
Komponenten wegen der kooperierenden Beziehung zwischen dem neuen
netzwerkorientierten Komponentensystem und der darunterliegenden Komponentenarchitektur
leicht zu ersetzen und zu erweitern. Diese Beziehung erleichtert
auch die "nahtlose" Integration und
Kooperation zwischen Komponenten und Komponentenansichtseditoren,
wenn sie mit sich unterscheidenden Datentypen und -formaten konfrontiert
sind.
-
Während ein
veranschaulichendes Ausführungsbeispiel
zum Implementieren eines erweiterbaren und austauschbaren Netzwerkkomponentensystems
gezeigt und beschrieben wurde, versteht sich, dass verschiedene
andere Anpassungen und Veränderungen
im Rahmen der Erfindung gemacht werden können. Zum Beispiel können zusätzliche
Systemsoftwareroutinen verwendet werden, wenn man die Erfindung
in verschiedenen Anwendungen implementiert. Diese zusätzlichen
Systemroutinen umfassen Dynamic Link Libraries (DLL) , was Programmdateien
sind, die Sammlungen von Fensterumgebung und Netzwerkfunktionen
enthalten, die entworfen wurden, um spezifische Klassen von Operationen
durchzuführen.
Diese Funktionen werden bei Bedarf von der Softwarekomponentenschicht
aufgerufen, um die gewünschten
Operationen durchzuführen.
Insbesondere können
DLLs, die im allgemeinen gut bekannt sind, verwendet werden, um
mit der Komponentenschicht und dem Fens termanager zu interagieren,
um netzwerkspezifische Komponenten und Funktionen bereitzustellen.
-
Die
vorangehende Beschreibung war auf spezifische Ausführungsformen
dieser Erfindung gerichtet. Es ist jedoch offensichtlich, dass andere
Variationen und Modifikationen bzgl. der beschriebenen Ausführungsformen
mit der Erreichung einiger oder aller ihrer Vorteile gemacht werden
können.
Deshalb ist es das Ziel der angefügten Ansprüche, alle solche Variationen
und Modifikationen abzudecken, wie sie in den Schutzbereich der
Erfindung fallen.