-
Gebiet der Erfindung
-
Die
Erfindung betrifft allgemein Computernetzwerke und insbesondere
Verfahren zum Kommunizieren zwischen Client- und Serveranwendungen,
so beispielsweise E-Mail-Anwendungen.
-
Hintergrund der Erfindung
-
E-Mails
sind zu einem wichtigen Verfahren der Kommunikation geworden. E-Mail-Systeme enthalten üblicherweise
eine Server-Komponente (beispielsweise Exchange Server von Microsoft)
und eine Client-Komponente (beispielsweise Gutlook oder Outlook
Express von Microsoft). Diese Komponenten sind üblicherweise Softwareanwendungen,
die derart konfiguriert sind, dass sie auf Computervorrichtungen
(beispielsweise Servern, PCs, Laptops und PDAs) laufen.
-
Um
Kommunikationsvorgänge
zu vereinfachen, verwenden ein Client und ein Server, so beispielsweise
eine Client-Komponente und eine Server-Komponente eines E-Mail-Systems, oftmals
ein gemeinsames Kommunikationsprotokoll. Das Protokoll legt Regeln
fest, die das erwartete Verhalten jeder Seite während der Kommunikation, so
beispielsweise die erwartete Abfolge von Anforderungen und Antworten,
definieren. Hochentwickelte Protokolle verfügen über Regeln für den Umgang
mit unerwartetem Verhalten.
-
Werden
Client- und Server-Komponenten verbessert, so werden die verbesserten
Versionen an Endanwender verteilt. Wenn neue Komponentenmerkmale
und Netzwerkmerkmale vorteilhaft eingesetzt werden sollen, tritt
oftmals der Fall auf, dass ein neues Kommunikationsprotokoll entwickelt
wird. Ist die installierte Basis von Server-Komponenten von Bedeutung,
so kann eine Client-Komponente die Fähigkeit aufweisen, über eine
Gruppe von Protokollen mit Server-Komponenten ausgewählter älterer Versionen
zu kommunizieren.
-
Bisweilen
tritt der Fall auf, dass neuere Protokolle auf früheren Protokollen
aufbauen, anstatt dass sie diese in Gänze ersetzen. In einem derartigen
Fall kann ein neueres Protokoll aus Protokollelementen aufgebaut
werden, die aktiviert oder deaktiviert werden können, um die früheren Protokolle
zu simulieren. Ist die installierte Basis von Client-Komponenten von Bedeutung,
so kann eine Server-Komponente die Fähigkeit aufweisen, über ein
Protokoll mit Client-Komponenten ausgewählter älterer Versionen zu kommunizieren.
-
Der
Beitrag „Internet
Message Access Protocol – Version
4rev1" von M. Crispin,
veröffentlicht
bei Internet Engineering Task Force, Request for Comments 2060,
Dezember 1996, offenbart ein Internetnachrichtenzugriffsprotokoll,
das einen Client in die Lage versetzt, auf elektronische E-Mail-Nachrichten
auf einem Server zuzugreifen und diese zu verändern. IMAP4rev1 ermöglicht eine
Veränderung
von entfernt befindlichen Nachrichtenordern, die „Mailboxen" genannt werden,
auf eine Weise, die zu den lokalen Mailboxen funktionell gleichwertig
ist. IMAP4rev1 verfügt
darüber
hinaus über
die Fähigkeit,
dass sich ein offline befindlicher Client mit dem Server resynchronisiert.
-
IMAP4rev1
verfügt über Operationen
zum Erstellen, Löschen
und Umbenennen von Mailboxen; zum Suchen nach neuen Nachrichten;
zum endgültigen
Entfernen von Nachrichten; zum Setzen und Löschen von Flags; sowie zum
Parsen, Suchen und selektiven Abrufen von Nachrichteneigenschaften,
Texten und Teilen hiervon. Auf Nachrichten wird mit IMAP4rev1 unter
Verwendung von Nummern zugegriffen. Diese Nummern sind entweder
Nachrichtensequenznummern oder eindeutige Kennungen.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, eine Rückmeldung
an den E-Mail-Client
hinsichtlich des Fortschrittes bei der Übertragung von E-Mail-Datenobjekten
von dem E-Mail-Server an den E-Mail-Client zu geben.
-
Die
Aufgabe wird durch den Gegenstand der unabhängigen Ansprüche gelöst. Bevorzugte
Ausführungsbeispiele
sind Gegenstand der abhängigen
Ansprüche.
-
Die
vorliegende Erfindung stellt ein System und ein Verfahren für eine verbesserte
Client-Server-Kommunikation bereit. Insbesondere betrifft die vorliegende
Erfindung ein verbessertes Protokoll, das für die Kommunikation zwischen
einem Client und einem Server eingesetzt werden kann. Die Erfindung
ist in einer E-Mail-Server-Umgebung von besonderer Bedeutung, wobei
die hier beschriebenen Merkmale jedoch auch in anderen Client-Server-Netzwerken
zum Einsatz kommen können.
-
Entsprechend
einem Aspekt der vorliegenden Erfindung kann eine E-Mail-Server-Komponente
Fehlerinformationen für
ein Datenobjekt mit einem Fehler vorlegen, anstatt dass eine ganze
Gruppe von Antworten aufgrund eines Fehlers in einem Datenobjekt
ausgesondert wird. Die E-Mail-Server-Komponente kann von einer E-Mail-Client-Komponente
eine Anforderung einer Vielzahl von E-Mail-Datenobjekten und eine
Anzeige darüber
erhalten, dass die E-Mail-Client-Komponente in der Lage ist, die
E-Mail-Datenobjekte mit einem Fehler zu verarbeiten. Als Antwort
auf die Anforderung und den Hinweis kann die E-Mail-Server-Komponente
die Vielzahl von E-Mail-Datenobjekten abrufen und für jedes
der E-Mail-Datenobjekte für
den Fall, dass kein Fehler beim Öffnen
des E-Mail-Datenobjektes
auftritt, das E-Mail-Datenobjekt an die E-Mail-Client-Komponente senden.
Tritt jedoch ein Fehler beim Öffnen
des E-Mail-Datenobjektes auf, so sendet die E-Mail-Server-Komponente
eine Fehlernachricht an die E-Mail-Client Komponente.
-
Entsprechend
einem weiteren Aspekt der vorliegenden Erfindung kann eine E-Mail-Server-Komponente
Fortschrittsdaten für
eine E-Mail-Client-Komponente derart bereitstellen, dass die E-Mail-Client-Komponente
den Fortschritt beim Herunterladen (Downloaden) von der E-Mail-Server-Komponente
mitverfolgen kann. Die E-Mail-Client-Komponente sendet eine Anforderung
einer Vielzahl von E-Mail-Datenobjekten und einen Hinweis darüber, dass
die E-Mail-Client-Komponente in der Lage ist, Fortschrittsmodusdaten
zu verarbeiten. Als Antwort auf die Anforderung und den Hinweis
ruft die E-Mail-Server-Komponente
die Vielzahl von E-Mail-Datenobjekten ab und stellt Fortschrittsmodusdaten
für die
E-Mail-Client-Komponente zusammen mit der Vielzahl von Datenobjekten
bereit. Enthalten können
die Fortschrittsmodusdaten die Größe der Vielzahl von E-Mail-Datenobjekten,
die Größe jedes
der Objekte, die Anzahl der Objekte sowie Informationen darüber, ob
die Objekte Ordnerverknüpfungsinformationen,
zusätzliche
Informationen oder eine beliebige Kombination hieraus sind.
-
Entsprechend
einem weiteren Aspekt der vorliegenden Erfindung kann eine von einer
E-Mail-Client-Komponente
gesendete Anforderung keine Beschränkung hinsichtlich der Größe einer
Antwort auf die Anforderung anzeigen, was die E-Mail-Server-Komponente
in die Lage versetzt, gegebenenfalls einen Puffer zu füllen. Die
E-Mail-Client-Komponente sendet eine Vielzahl von Unteranforderungen
innerhalb einer Anforderung, wobei jede Unteranforderung eine Operation
in der E-Mail-Server-Komponente anfordert und Größeninformationen beinhaltet.
Als Antwort auf jede Unteranforderung beschränkt, wenn die Größeninformationen eine
Größenbeschränkung innerhalb
eines von der E-Mail-Server-Komponente
erwarteten Bereiches beinhaltet, die E-Mail-Server-Komponente eine
Antwort auf die Größenbeschränkung. Beinhalten
die Größeninformationen
eine Größenbeschränkung außerhalb
eines von der E-Mail-Server-Komponente erwarteten Bereiches, so
sucht die E-Mail-Server-Komponente nach einer neuen Größenbeschränkung in
den Größeninformationen. Die
neue Größenbeschränkung kann
willkürlich
sein, so beispielsweise „den
verfügbaren
Puffer füllen".
-
Kurzbeschreibung der Zeichnung
-
1 ist
ein schematisches Diagramm von Computern, die über ein Netzwerk verbunden
sind.
-
2 ist
ein schematisches Diagramm, das ein als Beispiel angegebenes Computersystem
darstellt, das zur Implementierung eines Ausführungsbeispieles der Erfindung
verwendet werden kann.
-
3 ist
ein schematisches Diagramm, das eine Umgebung mit mehreren Versionen
sowohl von E-Mail-Client-Komponenten wie auch von E-Mail-Server-Komponenten
darstellt.
-
4 ist
ein Protokolldiagramm, das ein Beispiel für eine Protokollverhandlungsprozedur
zwischen einer E-Mail-Client-Komponente und einer E-Mail-Server-Komponente
darstellt.
-
5 ist
ein schematisches Diagramm, das ein Beispiel für ein E-Mail-Netzwerk darstellt,
in dem E-Mail-Client-Komponenten und E-Mail-Server-Komponenten Kommunikationspuffer
mit fester Größe aufweisen.
-
6A ist
ein Protokolldiagramm, das ein als Beispiel angegebenes Protokoll
zeigt, das zwei Anforderungs-Antwort-Zyklen zur Fertigstellung einer
Schnellübertragungsoperation
benötigt.
-
6B ist
ein Protokolldiagramm, das ein als Beispiel angegebenes Protokoll
zeigt, das einen einzigen Anforderungs-Antwort-Zyklus zur Fertigstellung
einer Schnellübertragungsoperation
benötigt.
-
7A ist
ein Flussdiagramm, das eine als Beispiel angegebene Prozedur zum
Senden eines E-Mail-Nachrichten-Körperbereiches an eine E-Mail-Client-Komponente
zeigt.
-
7B ist
ein Flussdiagramm, das eine Prozedur zum Senden eines E-Mail-Nachrichten-Körperbereiches
an eine E-Mail-Client-Komponente entsprechend einem Aspekt der vorliegenden
Erfindung zeigt.
-
8A ist
ein Sequenzdiagramm, das einen Vollelementübertragungsmodus zeigt.
-
8B ist
ein Sequenzdiagramm, das einen ersten Kopfbereichsübertragungsmodus
zeigt.
-
8C ist
ein Sequenzdiagramm, das einen Kopfbereichsnurübertragungsmodus zeigt.
-
8D ist
ein Sequenzdiagramm, das eine Ausnahme bei einem ersten Kopfbereichsübertragungsmodus
und einem Kopfbereichsnurübertragungsmodus
zeigt.
-
9 ist
ein schematisches Diagramm, das die mit der Zeit erfolgende Änderung
einer Heim-E-Mail-Server-Komponente einer E-Mail-Client-Komponente
zeigt.
-
10 ist
ein Protokolldiagramm, das ein als Beispiel angegebenes Protokoll
zur Synchronisierung von E-Mail-Ordnern zwischen einer E-Mail-Client-Komponente
und einer E-Mail-Server-Komponente zeigt.
-
11A ist ein Flussdiagramm, das eine als Beispiel
angegebene Prozedur zum Optimieren eines Teils eines Stateblob zeigt.
-
11B ist ein Flussdiagramm, das eine Prozedur zum
Optimieren eines Teils eines Stateblob entsprechend der vorliegenden
Erfindung zeigt.
-
12 ist
ein schematisches Diagramm, das eine E-Mail-Ordner-Hierarchie darstellt.
-
13 ist
ein Protokolldiagramm, das ein als Beispiel angegebenes Protokoll
zum Synchronisieren und Aufrechterhalten einer Synchronisierung
eines E-Mail-Nachrichten-Speichers
entsprechend einem Aspekt der vorliegenden Erfindung zeigt.
-
14A ist ein Protokolldiagramm, das ein als Beispiel
angegebenes Protokoll zum Kommunizieren von Fehlerinformationen
auf Fernoperationsniveau zeigt.
-
14B ist ein Protokolldiagramm, das ein als Beispiel
angegebenes Protokoll zum Kommunizieren von Fehlerinformationen
auf einer Pro-Nachricht-Grundlage entsprechend einem Aspekt der
vorliegenden Erfindung zeigt.
-
15A ist ein Flussdiagramm, das eine Prozedur zum
Erzeugen von Fehlerinformationen auf Fernoperationsniveau zeigt.
-
15B ist ein Flussdiagramm, das eine Prozedur zum
Erzeugen von Fehlerinformationen auf einer Pro-Nachricht-Grundlage
entsprechend einem Aspekt der vorliegenden Erfindung zeigt.
-
16A ist ein Protokolldiagramm, das ein als Beispiel
angegebenes Protokoll zum Ausführen
einer Schnellübertragungsoperation
zeigt.
-
16B ist ein Protokolldiagramm, das ein als Beispiel
angegebenes Protokoll zum Bereitstellen von Fortschrittsinformationen
bei gleichzeitiger Ausführung
einer Schnellübertragungsoperation
entsprechend einem Aspekt der vorliegenden Erfindung zeigt.
-
17A ist ein Flussdiagramm, das eine Prozedur zum
Aussenden einer Gruppe von Nachrichten zeigt.
-
17B ist ein Flussdiagramm, das eine Prozedur zum
Aussenden einer Gruppe von Nachrichten zusammen mit Fortschrittsinformationen
entsprechend einem Aspekt der vorliegenden Erfindung zeigt.
-
18 ist
ein schematisches Diagramm von mehreren E-Mail-Client-Komponenten,
die als Ergebnis einer Änderung
an demselben Datenobjekt in einer E-Mail-Server-Komponente benachrichtigt
werden.
-
19A ist ein Flussdiagramm, das eine Prozedur zum
Benachrichtigen mehrerer Teilnehmer darstellt.
-
19B ist ein Flussdiagramm, das eine Prozedur zum
Benachrichtigen mehrerer Teilnehmer entsprechend einem Aspekt der
vorliegenden Erfindung zeigt.
-
20 ist
ein Flussdiagramm, das eine Prozedur zum Bereitstellen einer E-Mail-Nachricht,
die sich einer gewünschten
Codeseite bedient, entsprechend einem Aspekt der vorliegenden Erfindung
zeigt.
-
Detailbeschreibung der Erfindung
-
Vor
einer Beschreibung der verschiedenen Ausführungsbeispiele der Erfindung
erfolgt zunächst
eine Beschreibung der Computer- und Netzwerkumgebung, in der die
verschiedenen Ausführungsbeispiele
der Erfindung in die Praxis umgesetzt werden können. Obwohl nicht erforderlich,
kann die vorliegende Erfindung durch Programme implementiert werden,
die von einem Computer ausgeführt
werden. Im Allgemeinen enthalten Programme Routinen, Objekte, Komponenten,
Datenstrukturen und dergleichen, die bestimmte Aufgaben ausführen oder
bestimmte abstrakte Datentypen implementieren. Der Begriff „Programm" bezeichnet im Sinne der
vorliegenden Beschreibung ein einzelnes Programmmodul oder mehrere
Programmmodule, die zusammenarbeiten. Der Begriff „Computer" beinhaltet im Sinne
der vorliegenden Beschreibung eine beliebige Vorrichtung, die ein
oder mehrere Programme elektronisch ausführt, so beispielsweise Personalcomputer
(PCs), handbasierte Vorrichtungen, Multiprozessorsysteme, mikroprozessorbasierte
programmierbare Geräte
der Unterhaltungselektronik, Netzwerk-PCs, Minicomputer, Flach-PCs,
Mainframecomputer, Geräte
der Unterhaltungselektronik mit einem Mikroprozessor oder Mikrokontroller,
Router, Gateways, Knotenpunkte und dergleichen mehr. Die Erfindung
kann auch in verteilten Computerumgebungen eingesetzt werden, wo
Aufgaben von entfernt befindlichen Verarbeitungsvorrichtungen ausgeführt werden,
die über
ein Kommunikationsnetzwerk verbunden sind. In einer verteilten Computerumgebung
können
sich Programme sowohl in lokalen wie auch in entfernt befindlichen
Speicherablagevorrichtungen befinden.
-
Ein
Beispiel für
eine Netzwerkumgebung, in der die Erfindung verwendet werden kann,
wird nachstehend unter Bezugnahme auf 1 beschrieben.
Das als Beispiel angegebene Netzwerk beinhaltet mehrere Computer 10,
die miteinander über
ein Netzwerk 11, das durch eine Wolke dargestellt ist,
kommunizieren. Das Netzwerk 11 kann viele bekannte Komponenten
beinhalten, so beispielsweise Router, Gateways, Knotenpunkte und
dergleichen mehr, und versetzt die Computer 10 in die Lage, über drahtgebundene
und/oder drahtlose Medien miteinander zu kommunizieren. Bei einem
wechselseitigen Austausch über
das Netzwerk 11 kann ein oder können mehrere der Computer als
Clients, Server oder Peers für
die anderen Computer dienen. Entsprechend können die verschiedenen Ausführungsbeispiele
der Erfindung auf Clients, Servern, Peers oder Kombinationen hieraus
ausgeführt
werden, obwohl spezifische hier dargestellte Beispiele nicht alle
der genannten Arten von Computern betreffen.
-
In 2 ist
ein Beispiel für
eine grundlegende Konfiguration eines Computers gezeigt, in der
die gesamte Erfindung oder Teile derselben gemäß vorliegender Beschreibung
implementiert werden können.
In der grundlegendsten Konfiguration beinhaltet der Computer 10 üblicherweise
wenigstens eine Verarbeitungseinheit 14 und einen Speicher 16.
Die Verarbeitungseinheit 14 führt entsprechend verschiedenen
Ausführungsbeispielen
der Erfindung Befehle aus, damit Aufgaben ausgeführt werden können. Beim
Ausführen
derartiger Aufgaben kann die Verarbeitungseinheit 14 elektronische
Signale an andere Teile des Computers 10 und an Vorrichtungen
außerhalb
des Computers 10 senden, um ein bestimmtes Ergebnis hervorzurufen.
In Abhängigkeit
von der genauen Konfiguration und der Art des Computers 10 kann
der Speicher 16 flüchtig
(so beispielsweise bei einem RAM), nichtflüchtig (so beispielsweise bei
einem ROM oder Flash-Speicher) oder eine Kombination aus beidem
sein. Diese grundlegendste Konfiguration ist in 2 mit
der gestrichelten Linie 18 bezeichnet. Darüber hinaus
kann der Computer auch zusätzliche
Merkmale beziehungsweise eine zusätzliche Funktionalität aufweisen.
So kann der Computer 10 beispielsweise einen zusätzlichen
Speicher (entfernbar 201 und/oder nichtentfernbar 202)
umfassen, darunter, jedoch nicht hierauf beschränkt, magnetische oder optische
Platten oder Bänder.
Zu den Computerspeichermedien zählen
flüchtige
und nichtflüchtige,
entfernbare und nichtentfernbare Medien, die durch ein beliebiges
Verfahren oder eine beliebige Technologie zum Speichern von Informationen
implementiert sind, darunter durch Computer ausführbare Befehle, Datenstrukturen, Programmmodule
oder andere Daten. Zu den Computerspeichermedien zählen unter
anderem RAM, ROM, EEPROM, Flash-Speicher, CD-ROM, DVD (Digitale
Versstile Disc DVD, vielseitig einsetzbare Platte) oder andere optische
Speicher, magnetische Kassetten, magnetische Bänder, magnetische Plattenspeicher
oder andere magnetische Speichervorrichtungen oder ein beliebiges
anderes Medium, das zur Speicherung der gewünschten Informationen verwendet
werden kann und auf das von dem Computer 10 zugegriffen
werden kann. Ein beliebiges derartiges Computerspeichermedium kann
Teil des Computers 10 sein.
-
Der
Computer 10 enthält
zudem vorzugsweise Kommunikationsverbindungen 205, die
die Vorrichtung in die Lage versetzen, mit anderen Vorrichtungen
zu kommunizieren. Eine Kommunikationsverbindung ist ein Beispiel
für ein
Kommunikationsmedium. Die Kommunikationsmedien verkörpern üblicherweise
von Computern lesbare Befehle, Datenstrukturen, Programmmodule und
andere Daten in einem modulierten Datensignal, so beispielsweise
einer Trägerwelle
oder einem anderen Transportmechanismus, und beinhalten beliebige
Informationsverteilungsmedien. Als Beispiel hierfür, jedoch
nicht im Sinne einer Beschränkung,
beinhaltet der Begriff „Kommunikationsmedien" drahtgebundene Medien,
so beispielsweise ein drahtgebundenes Netzwerk oder eine direkt
drahtgebundene Verbindung, und drahtlose Medien, so beispielsweise
akustische, funkfrequenzbasierte, infrarotbasierte und andere drahtlose
Medien. Der Begriff „computerlesbares
Medium" beinhaltet
im Sinne der vorliegenden Beschreibung sowohl Computerspeichermedien
wie auch Kommunikationsmedien.
-
Der
Computer 10 kann zudem über
Eingabevorrichtungen 204 verfügen, so beispielsweise über eine Tastatur,
eine Maus, einen Stift, eine Spracheingabevorrichtung, eine berührungsempfindliche
Eingabevorrichtung und dergleichen mehr. Ausgabevorrichtungen 203,
so beispielsweise eine Anzeige 20, Lautsprecher, ein Drucker
und dergleichen, können
ebenfalls beinhaltet sein. All diese Vorrichtungen sind aus dem
Stand der Technik bekannt und werden daher nicht ausführlich erläutert.
-
Die
vorliegende Erfindung betrifft ein System und ein Verfahren für verbesserte
Kommunikation zwischen Clients und Servern und insbesondere ein
verbessertes Protokoll, das für
die Kommunikation zwischen einem Client und einem Server eingesetzt
werden kann. Die Erfindung ist für
eine E-Mail-Server-Umgebung besonders relevant, wobei jedoch Merkmale
aus der vorliegenden Beschreibung auch in anderen Client- und Server-Netzwerken verwendet
werden können.
Um die Beschreibung zu vereinfachen, wird die Erfindung gleichwohl
anhand einer Client-Server-Umgebung beschrieben.
-
Die
vorliegende Erfindung kann in einer Client-Server-Umgebung mit zwei
oder mehr Versionen von Client-Anwendungen oder -komponenten und/oder
zwei oder mehr Versionen von Server-Anwendungen oder -komponenten
implementiert werden. Hierzu zeigt 3 ein Blockdiagramm,
das mehrere Versionen sowohl von Client- wie auch von Server-Komponenten
in einer Netzwerk-E-Mail-Umgebung zeigt. Im Allgemeinen sind die
Client- und Server-Komponenten derart konfiguriert, dass sie rückwärtskompatibel
sind. Dies bedeutet, dass eine Client-Komponente in der Lage ist,
mit aktuellen und älteren
Versionen von Server-Komponenten zu kommunizieren, und umgekehrt.
Eine Gruppe von Protokollen wird für die Kommunikation zwischen
den verschiedenen Versionen eingerichtet. Die Gruppe von Protokollen
kann mehrere verschiedene Protokolle bilden, von denen jedes für sich allein
steht. Alternativ kann eine Gruppe von Protokollkomponenten verfügbar sein, wobei
bestimmte Komponenten zur Konfiguration bestimmter Protokolle innerhalb
der Protokollgruppe verwendet werden.
-
In
jedem Fall kommuniziert in der in 3 gezeigten
Netzwerk-E-Mail-Umgebung eine E-Mail-Client-Komponente 303 einer
aktuellen Version am besten mit einer E-Mail-Server-Komponente 306 einer
aktuellen Version über
ein Protokoll 307. Die aktuelle E-Mail-Server-Komponente 306 ist
jedoch auch in der Lage, mit ausgewählten E-Mail-Client-Komponenten
einer älteren
Version, so beispielsweise die E-Mail-Client-Komponente 302 und die E-Mail-Server-Komponente 301, über andere
Protokolle (beispielsweise die Protokolle 308 und 309 in 3)
in einer Protokollgruppe zu kommunizieren. Die E-Mail-Client-Komponente 303 ist
zudem in der Lage, mit ausgewählten
E-Mail-Server-Komponenten
einer älteren
Version, beispielsweise die E-Mail-Server-Komponente 305 und die E-Mail-Server-Komponente 304,
unter Verwendung von Protokollen, so beispielsweise der Protokolle 310 und 311,
zu kommunizieren.
-
Zum
Zwecke der Beschreibung des Protokolls der vorliegenden Erfindung
ist eine „aktuelle" E-Mail-Server-Komponente
oder E-Mail-Client-Komponente oder eine aktuelle Version einer E-Mail-Server-Komponente
oder einer E-Mail-Client-Komponente eine Serveroder Client-Komponente,
die Kenntnis von dem neuen Merkmal oder den neuen Merkmalen der
Beschreibung besitzt und diese Merkmale verwenden, implementieren
und/oder darauf einwirken kann. Obwohl die Begriffe in der vorliegenden
Druckschrift zur Beschreibung von Client- und Server-Komponenten
verwendet werden, die Kenntnis von verschiedenen Aspekten des Protokolls
der vorliegenden Erfindung besitzen, beinhalten die Begriffe ebenfalls
Komponenten, die Kenntnis lediglich von einem bestimmten beschriebenen
Aspekt oder von mehr als einem beschriebenen Aspekt besitzen. Auf
gleiche Weise ist eine „ältere" E-Mail-Komponente
oder eine ältere
Version einer E-Mail-Komponente
eine Komponente, die keine Kenntnis von den Aspekten des Protokolls
der vorliegenden Erfindung besitzt und hierauf nicht einwirken kann.
-
Eine
Protokollverhandlungsprozedur wird oftmals zum Erstellen eines Protokolls
zwischen einem Client und einem Server verwendet (beispielsweise
die E-Mail-Server-Komponente 306 der
aktuellen Version und die E-Mail-Client-Komponente 303 der
aktuellen Version). Obwohl derartige Protokollverhandlungen bekannt sind,
erfolgt zur Unterstützung
des Lesers eine kurze Beschreibung einer Protokollverhandlungsprozedur
zwischen einer E-Mail-Client-Komponente 401 (4)
und einer E-Mail-Server-Komponente 402 (ebenfalls 4).
Gleich zu Beginn einer Kommunikationssitzung zwischen der E-Mail-Client-Komponente 401 und
der E-Mail-Senner-Komponente 402 sendet die E-Mail-Client-Komponente 401 an
die E-Mail-Server-Komponente 402 eine Nachricht 403,
die Informationen über
die Client-Version, beispielsweise in Form eines Versionsstempels
der Client-Komponente, beinhaltet. Die E-Mail-Server-Komponente 402 antwortet
auf die Nachricht 403 mit einer Nachricht 404,
die Server-Versionsinformationen beispielsweise in Form eines Versionsstempels
der Server-Komponente beinhaltet.
-
Die
Client- und Server-Versionsinformationen können auf vielerlei Arten bei
dem Versuch verwendet werden, eine Kommunikation zwischen der E-Mail-Client-Komponente 401 und
der E-Mail-Server-Komponente 402 aufzubauen. Die Versionsinformationen
können
beispielsweise zur Auswahl eines geeigneten Protokolls für eine fortwährende Kommunikation
oder für
eine Bestimmung dahingehend verwendet werden, ob sogar weitere Kommunikationsvorgänge möglich sind.
Beim Erstellen eines Protokolls können Versionsinformationen
verwendet werden, um beispielsweise nur bestimmte verfügbare Protokollaspekte
oder -komponenten zu aktivieren und/oder zu deaktivieren.
-
Eine
E-Mail-Server-Komponente kann Anforderungen von mehreren E-Mail-Client-Komponenten
parallel empfangen und verarbeiten. Ist nur ein einzelner Client
gezeigt, so dient dies, außer
es ist explizit anders dargestellt, nur dem Zweck, die Figuren und
die zugehörige
Erklärung
zu vereinfachen.
-
Das
E-Mail-Netzwerk der vorliegenden Erfindung verwendet Anforderungs-
und Antwort-Austauschvorgänge, um
Anfragen und Daten zwischen Client- und Server-Komponenten in dem
Netzwerk weiterzuleiten. In der Praxis beruht das Leistungsvermögen eines
Protokolls auf dem darunterliegenden Kommunikationsnetzwerktransportmechanismus,
der zur Implementierung von Kommunikationsvorgängen zwischen Clients und Servern
in einem E-Mail-Netzwerk implementiert ist. In einem E-Mail-Netzwerk,
bei dem Fernprozedurabrufe (remote procedure calls RPCs) als zugrundeliegender
Kommunikationsnetzwerktransportmechanismus zum Einsatz kommen, kann
es beispielsweise sehr viel effi zienter sein, einen einzelnen Fernprozedurabruf
höherer
Größe (beispielsweise
32 KB) als mehrere Fernprozedurabrufe geringerer Größe (beispielsweise
2 KB) zu tätigen.
Eine zur Verbesserung des Leistungsvermögens in einem derartigen E-Mail-Netzwerk
bekannte Vorgehensweise besteht in der Pufferung mehrerer Anforderungen
und/oder Antworten zur Sendung in einem einzelnen Fernprozeduranruf.
-
5 zeigt
als ein Beispiel einen Anforderungs- und Antwort-Austauschvorgang
zwischen einer E-Mail-Client-Komponente 501 und einer E-Mail-Server-Komponente 502.
Die E-Mail-Client-Komponente 501 und die E-Mail-Server-Komponente 502 weisen
jeweils Kommunikationspuffer 503, 504, 505 und 506 fester Größe auf.
Die Puffer 503, 504, 505 und 506 sind
reservierte Speicherbereiche zum vorübergehenden Vorhalten von Daten.
Die E-Mail-Client-Komponente 501 beginnt mit einem Anforderungs-Antwort-Zyklus durch Füllen des
Puffers 503 mit einer oder mehreren Unteranforderungen
oder Fernoperationen (remote operations ROPs) vor dem Senden der
Inhalte des Puffers 503 an den Puffer 504.
-
Nach
dem Empfang in dem Puffer 504 wird jede Fernoperation von
der E-Mail-Server-Komponente 502 verarbeitet
und das entsprechende Ergebnis in den Puffer 505 geschrieben.
Jede Fernoperation ROP erzeugt das gleiche Ergebnis. Das Ergebnis
kann Daten aus der Anforderung durch die E-Mail-Client-Komponente 501 beinhalten,
so beispielsweise eine bestimmte Gruppe von E-Mail-Nachrichten.
Die E-Mail-Server-Komponente 502 überwacht den Puffer 505,
wobei die E-Mail-Server-Komponente 502, wenn der Puffer 505 beinahe
voll ist (wenn beispielsweise weniger als 8 KB verbleiben) alle
unverarbeiteten Fernoperationen ROP an das Ende des Puffers 505 schreibt
und den Puffer 505 an den Puffer 506 sendet. Die
E-Mail-Client-Komponente 501 beginnt dann mit einem neuen
Anforderungs-Antwort-Zyklus durch Schreiben der unverarbeiteten
Fernoperationen ROPs in den Puffer 503 zur Wiedervorlage
bei der E-Mail-Server Komponente 502, wenn der Puffer 503 wieder
voll ist.
-
Die
Größe einer
Antwort ist im Durchschnitt üblicherweise
größer als
die Größe einer
Anforderung. Aus diesem Grunde ist die Größe der Antwortpuffer 506, 505 üblicherweise
derart konfiguriert, dass sie größer als
die Größe der Anforderungspuffer 503 und 504 ist.
Bei einem Ausführungsbeispiel
der Erfindung wurde bestimmt, dass die optimale Größe der Antwortpuffer 505 und 506 gleich
96 KB für
ein Größe der Anforderungspuffer 503 und 504 von
32 KB ist, was einem Verhältnis
von 3:1 entspricht. Bei einem Ausfüh rungsbeispiel ist die E-Mail-Client-Komponente
in der Lage, die Größe eines
beliebigen der Puffer 503, 504, 505 und 506 zu konfigurieren.
-
Einige
E-Mail-Netzwerke, bei denen Puffer zum Einsatz kommen, so beispielsweise
das in 5 gezeigte E-Mail-Netzwerk, können sich eines Schnellübertragungsmodus
zwischen einer E-Mail-Client-Komponente und einer E-Mail-Server-Komponente
bedienen. Der Schnellübertragungsmodus
beinhaltet Anforderungen, so beispielsweise Fernoperationen ROPs,
von einem Client, die in wenigstens zwei Arten unterteilt werden,
nämlich
Anforderungen, die zu einer Initialisierung einer Schnellübertragungsdatenquelle
an dem Server führen,
und Anforderungen, die zu einer effizienteren Datenübertragung
von der Schnellübertragungsdatenquelle
an den Client führen.
Die Schnellübertragungsdatenquelle
kann beispielsweise eine Datenbanktabelle sein. Die Schnellübertragungsdatenquelle
dient als bereitstehender vorübergehender
Datenspeicher, durch den ermöglicht
wird, dass die Bearbeitung von späteren Datenanforderungen mit
einer geringeren Verzögerung
erfolgt, als dies anderweitig der Fall wäre. Bisweilen erreicht die
zweite Art von Schnellübertragungsmodusanforderung
tendenziell eine effiziente Datenübertragung durch explizites
Spezifizieren der Größe der Antwort.
So kann die Größe der Antwort
beispielsweise auf die Größe des gesamten
Client-Empfangspuffers eingestellt werden.
-
6A zeigt
eine Schnellübertragungsoperation
mit wenigstens zwei Anforderungs-Antwort-Zyklen. In
einer ersten Anforderung 601 initialisiert eine Fernoperation
ROP (beispielsweise FXPrepare) eine Schnellübertragungsdatenquelle an einem
Server 502. An dem Server wird nur FXPrepare verarbeitet
(das heißt,
die Schnellübertragungsdatenquelle
wird initialisiert), und das Ergebnis wird in einer ersten Antwort 602 ausgegeben.
In einer zweiten Anforderung 603 fordert eine Fernoperation
ROP (beispielsweise FXGetBuffer) den Server auf, den Puffer 505 aus
der Schnelldatenquelle zu füllen.
Der Server leert die Schnelldatenquelle in den Puffer und gibt das
Ergebnis in einer zweiten Antwort 604 aus. Füllt sich
der Ausgabepuffer 505 der E-Mail-Server-Komponente, bevor
die Schnelldatenquelle geleert ist, so können zusätzliche Fernoperationen FXGetBuffer
erforderlich sein.
-
6B zeigt
eine Schnellübertragungsoperation
mit nur einem einzigen Anforderungs-Antwort-Zyklus. In einer ersten Anforderung 605 werden
sowohl FXPrepare wie auch FXGetBuffer von der E-Mail-Server-Komponente 502 verarbeitet,
woraufhin die Ergebnisse der beiden Operationen in einer ersten
Antwort 606 ausgegeben werden. Das Ergebnis von FXPrepare
ist für
FXGetBuffer in der E-Mail-Server-Komponente 502 verfüg bar, da
ein Teil jedes Puffers 503, 504, 505 und 506 explizit
in einer gemeinsam genutzten Datentabelle definiert ist. Es ist
wünschenswert,
die Anzahl der Anforderungs-Antwort-Zyklen
zu verringern, da dies zu einer effizienteren Übertragung der Daten führt. Eine
Schnellübertragungsoperation
mit mehr als nur einem einzigen Anforderungs-Antwort-Zyklus kann auftreten, wenn
der Puffer 505 zu voll ist, als dass er das Ergebnis der
Fernoperation FXGetBuffer noch vorhalten könnte.
-
Es
ist einsichtig, dass die Fernoperationen gemäß 6A und 6B sowie
entsprechender Figuren in der vorliegenden Beschreibung dahingehend
schematisch sind, dass sie in der Praxis auch durch eine Reihe von
Fernoperationen implementiert werden können, es sei denn, dies ist
explizit anders angegeben.
-
Üblicherweise
unterscheidet sich die Größe eines
Fernoperationsergebnisses von der Größe einer Fernoperationsanforderung.
Es ist nicht immer möglich,
die Größe eines
Fernoperationsergebnisses vorauszusagen. Werden Datenkompressionstechniken
zur Verringerung der Größe eines
Fernoperationsergebnisses eingesetzt, wird es sogar noch schwieriger,
die Größe eines
Fernoperationsergebnisses vorherzusagen. Der Umstand, dass man nicht
in der Lage ist, die Größe eines
Fernoperationsergebnisses vorauszusagen, kann ein manuelles Nachbearbeiten
eines Protokolls zum Zwecke der Minimierung der Anzahl der Anforderungs-Antwort-Zyklen
verhindern, die zur Vervollständigung
bestimmter Client-Operationen notwendig sind, so beispielsweise
zur Sicherstellung, dass alle neuen Nachrichten bei einem Client
in einem einzigen Anforderungs-Antwort-Zyklus heruntergeladen werden.
Ein manuelles Nachbearbeiten eines Protokolls beinhaltet das manuelle
Konfigurieren der Abfolge und/oder Größe der Protokollanforderungen,
-antworten und/oder der Fernoperationen.
-
Entsprechend
einem Aspekt der vorliegenden Erfindung wird die Anzahl der Anforderungs-Antwort-Zyklen
automatisch durch eine Spezifizierung dahingehend minimiert, dass
Schlüsselfernoperationen (beispielsweise
FXGetBuffer) nicht der Bedingung unterliegen, dass die Größe ihres
Ergebnisses vorhergesagt werden muss. Anstelle dessen werden derartige
Fernoperationen von der E-Mail-Server-Komponente 502 verarbeitet,
bis die Beschränkung
des Puffers 505 (die dieselbe wie diejenige des Puffers 506 ist)
erreicht wird.
-
Als
ein Beispiel sei angeführt,
dass in einer Umgebung, die mehrere Versionen von E-Mail-Server-Komponenten
beinhaltet, gesonderte Fernoperationen für Server-Kompo nenten einer älteren Version
und Server-Komponenten einer aktuellen Version definiert sein können. Die älteren Versionen
unterliegen nicht der Bedingung, dass die Größe ihres Ergebnisses vorhergesagt
werden muss. Die Eigenschaften dieser Fernoperationen sind in der
nachfolgenden Tabelle dargestellt.
| Fernoperation,
die von einem Protokoll zur Kommunikation mit Servern einer älteren Version
verwendet werden kann | Fernoperation,
die von einem Protokoll zur Kommunikation mit Servern einer aktuellen
Version verwendet werden kann |
Kennung
(ID) der Fernoperation (ROP) | FXGetBuffer | FXGetBuffer |
Parameter,
die in mehreren Modi verwendet werden | Erforderliche
Größe: Größe, die der
Server in seinem Ausgabepuffer reservieren muss | Erforderliche
Größe: wird
auf eine Größe jenseits
des von der älteren
Version erwarteten Maximums eingestellt, so beispielsweise auf einen
Wert von mehr als 32 KB. Hierdurch wird dem Server signalisiert,
nach dem neuen Größenbeschränkungsparameter
zu suchen. |
Neue
Parameter | n/a | Größenbeschränkung: informiert den
Server über
die Schranke, bis zu der der Server seinen Ausgabepuffer füllen kann |
-
Die
Fernoperationen für
Server-Komponenten einer älteren
Version sind dem Aufbau nach zu den bestehenden aus dem Stand der
Technik bekannten Fernoperationen ähnlich. Dies bedeutet, dass
die Fernoperationen die Größe in dem
Ausgabepuffer (beispielsweise dem Sendepuffer 505), der
zum Vorhalten einer Antwort reserviert bleiben muss, vorhersagen
und vorgeben. Demgegenüber
wird die vorgegebene Größe für den Ausgabepuffer
bei einer aktuellen Version einer Server-Komponente nicht vorhergesagt,
sondern es wird anstelle dessen ein Wert jenseits des von den Server-Komponenten
einer älteren
Version erwarteten Maximums eingestellt, so beispielsweise ein Wert,
der größer als
32 KB ist. Der Umstand, dass die Größe des Ausgabepuffers jenseits
eines von der Server-Komponente erwarteten Wertes liegt, signalisiert
der Server-Komponente, nach einem neuen Größenbeschränkungsparameter zu suchen,
der beispielsweise eine Füllung
des Ausgabepuffers für
die Server-Komponente sein kann. Diese Eigenschaften minimieren
automatisch die Anzahl der Anforderungs-Antwort-Zyklen, wobei nur
eine kleine Zunahme der Komplexität der E-Mail-Server-Komponente,
die die Fernoperationen verarbeitet, auftritt.
-
Man
beachte, dass die Reihenfolge der in der vorstehenden Tabelle und
in den entsprechenden Tabellen der vorliegenden Beschreibung gezeigten
Parameter nicht zwangsläufig
mit der Reihenfolge korreliert, mit der beispielsweise die Parameter über das
Netzwerk gesendet und oder entweder von einer E-Mail-Client-Komponente
oder einer E-Mail-Server-Komponente
gespeichert werden, es sei denn, es wird explizit anders gesagt.
Darüber
hinaus können
unveränderte
Parameter zum Zwecke einer einfacheren Darstellung weggelassen werden.
-
In
einem E-Mail-Netzwerk besteht eine der typischen Aufgaben eines
Protokolls darin, die Übertragung
von Datenobjekten, so beispielsweise von E-Mail-Nachrichten, zwischen
E-Mail-Client-Komponenten und E-Mail-Server-Komponenten zu bewerkstelligen.
Weitere Beispiele für
derartige Datenobjekte sind unter anderem E-Mail-Ordner, die E-Mail-Nachrichten
und andere Datenobjekte enthalten können, und FAI-Datenobjekte
(folder associated information FAI, Ordnerverknüpfungsinformation), die beispielsweise
Regeln zur Verarbeitung von E-Mail-Nachrichten dahingehend enthalten
oder definieren können,
wie in einem Ordner enthaltene Datenobjekte angezeigt werden. Datenobjekte
können
für eine
E-Mail-Client-Komponente blind sein, was bedeutet, dass eine E-Mail-Client-Komponente
gegebenenfalls nicht über
Mittel zur Deutung der Inhalte des Datenobjektes verfügt. Alternativ
können
Datenobjekte aus benannten Eigenschaften zusammengesetzt sein. So
kann eine E-Mail-Nachricht beispielsweise Eigenschaften mit den
Namen „to", „from", „subject", „importance", „body 1", „body 2", „body 3", „attachment
1", „attachment
2" und dergleichen
mehr enthalten.
-
Ein
Vorteil von E-Mail-Netzwerken, in denen Datenobjekte aus benannten
Eigenschaften über E-Mail-Netzwerke
zusammengesetzt sind, in denen Datenobjekte blind sind, ist die
Möglichkeit,
das Leistungsvermögen
eines Protokolls aufgrund der Fähigkeit
des Protokolls, nur einen Teil eines Datenobjektes zu übertragen,
zu verbessern. Der Umstand, dass benannte Eigenschaften vorhanden
sind, ermöglicht,
dass bestimmte Eigenschaften des Datenobjektes ohne Senden des gesamten
Datenobjektes gesendet werden.
-
So
kann eine E-Mail-Nachricht beispielsweise aus einer Gruppe von Kopfbereichseigenschaften
(header properties) und einer Gruppe von Körperbereichseigenschaften (body
properties) zusammengesetzt sein. Für eine E-Mail-Client-Komponente
kann es hierbei notwendig sein, dass ein Protokoll zuerst die Kopfbereichseigenschaften
und anschließend
oder überhaupt
nicht die Körperbereichseigenschaften überträgt. Dieses Merkmal
versetzt einen Anwender in die Lage, die Kopfbereichsinformationen
von mehreren Nachrichten durchzusehen, bevor die Nachrichten allesamt
heruntergeladen werden. Unter Verwendung dieses Merkmals ist eine
genauere Einflussnahme auf die Bandbreitennutzung durch die Client-Komponente
erreichbar, was positive Auswirkungen auf das Leistungsvermögens des
Protokolls haben kann. Darüber
hinaus kann sich eine Client-Komponente
dieses Merkmals bedienen, um eine Nutzung einer niedrigeren Bandbreite
herbeizuführen (So
können
beispielsweise Körperbereiche
nur für
ausgewählte
Kopfbereiche heruntergeladen werden), was insbesondere bei Umgebungen
mit niedriger Bandbreite wünschenswert
ist.
-
Das
Leistungsvermögen
des Protokolls nimmt nicht notwendigerweise zu, wenn die Server-Komponente
derart konfiguriert ist, dass Kopfbereichs- und Körperbereichseigenschaften
in zwei gesonderten Anforderungs-Antwort-Zyklen (das heißt jeweils
einem für
den Kopfbereich und einem für
den Körperbereich)
gesendet werden. Ist es beispielsweise für die E-Mail-Client-Komponente
notwendig, dass diese sowohl Kopfbereichs- wie auch Körperbereichseigenschaften
gleichzeitig benötigt,
so kann das Leistungsvermögen
des Protokolls im Gegensatz zu einer Situation abnehmen, in der
ein einzelner Anforderungs-Antwort-Zyklus sowohl den Kopfbereich
wie auch den Körperbereich
abruft. Der einfache Umstand, dass Datenobjekte aus benannten Eigenschaften
zusammengesetzt sein können,
ist damit per se nicht ausreichend, um automatisch zu einem verbesserten
Leistungsvermögen
des Protokolls zu kommen. Ein verbessertes Leistungsvermögen des
Protokolls zu erreichen hängt
nicht von der Wahl der Eigenschaften ab, die ein Datenobjekt darstellen,
sowie davon, wie sie von einem Protokoll verwendet werden. Die Wahl
kann von einer Anzahl von Faktoren abhängen, darunter einem Faktor
dahingehend, was für
die E-Mail-Client-Komponenten der aktuellen und der älteren Versionen
von Nöten
ist, sowie davon, was für
die E-Mail-Server-Komponenten der aktuellen und der älteren Versionen
von Nöten
ist. Beispiele für
das, was für
eine E-Mail-Client-Komponente von Nöten ist, sind das Eingehen
auf verschiedene Dringlichkeitsniveaus für die Anzeige von verschiedenen
Informationen und das Eingehen auf Präferenzen, die von einem Anwender
der E-Mail-Client-Komponente eingestellt worden sind. Zu den Beispielen
für das,
was für
eine E-Mail-Server-Komponente notwendig ist, zählen effizientes Speichern
und Abrufen von Daten und effizientes Verarbeiten von Protokollanforderungen.
-
Gängige E-Mail-Umgebungen
aus dem Stand der Technik verwenden Datenobjekte, die aus benannten
Eigenschaften zusammengesetzt sein können, so beispielsweise eine
E-Mail-Nachricht,
die eine Kopfbereichsgruppe und eine Körperbereichsgruppe aus benannten
Eigenschaften beinhalten kann, sodass die beiden Gruppen getrennt
angefordert und/oder verarbeitet werden können. Ein weiteres Beispiel
aus dem Stand der Technik ist eine E-Mail-Nachricht, bei der die
Körperbereichsgruppe
aus benannten Eigenschaften mehrere Versionen des E-Mail-Nachrichten-Körperbereiches
beinhaltet, so beispielsweise bei mehreren Formaten für E-Mail-Nachrichten
wie Volltext (plain text), HTML (hypertext mark-up language HTML,
Hypertextmarkiersprache), RTF (rich text formst RTF, Format mit
angereichertem Text) und dergleichen mehr. In dieser Situation können die
E-Mail-Server-Komponenten aus dem Stand der Technik auf eine Protokollanforderung
des Körperbereiches
der E-Mail-Nachricht auf mehrere Weisen antworten. Die Antwort mit
der niedrigsten Komplexität kann
darin bestehen, dass alle Versionen des Körperbereiches der E-Mail-Nachricht
gesendet werden, wobei diese Antwort jedoch zur Nutzung einer erhöhten Bandbreite
führen
kann.
-
7A zeigt
einen Teil einer Prozedur, bei der sich eine E-Mail-Server-Komponente
einer älteren
Version (Stand der Technik) in dieser Situation einer Antwort bedient.
In Schritt 701 untersucht die E-Mail-Server-Komponente
das Format jedes Körperbereiches
der E-Mail-Nachricht. Ist eines der Formate ein vorbestimmtes Standardformat
(so beispielsweise RTF), so bewegt sich die Prozedur zu Schritt 703,
und der Kopfbereich der E-Mail-Nachricht im Standardformat wird
an die anfordernde E-Mail-Client-Komponente gesendet. Ist keines
der Formate ein vorbestimmtes Standardformat, so geht Schritt 701 zu
Schritt 702 über,
wo eine der Versionen des Kopfbereiches der E-Mail-Nachricht in
das Standardformat umgewandelt wird. Die in 7A dargestellte
Unterprozedur kann auch dann verwendet werden, wenn nur eine einzige
Version des Kopfbereiches einer E-Mail-Nachricht vorhanden ist, der Kopfbereich
der E-Mail-Nachricht jedoch gegebenenfalls nicht in demjenigen Standardformat
vorliegt, das von einem Protokoll benötigt wird.
-
7B zeigt
einen Teil einer Prozedur, die von einer E-Mail-Server-Komponente
einer aktuellen Version entsprechend der vorliegenden Erfindung
verwendet wird. In Schritt 704 wird eine Protokollanforderung, die
zu dieser von einer E-Mail-Server-Komponente verwendeten Unterprozedur
führt,
nach einem BEST_BODY-Flag durchsucht. Das Flag in diesem Beispiel
genauso wie die anderen hier verwendeten Flags für die E-Mail-Server-Komponente
werden dahingehend verwendet, dass die E-Mail-Client-Komponente
eine aktuelle Version ist und die Implementierung der mit dem Flag
verknüpften Funktion
wünscht.
Andere Hinweise können
verwendet werden. So kann die Funktion beispielsweise durch Standardvorgabe
(default) implementiert werden, wenn eine aktuelle E-Mail-Client-Komponente
erfasst wird.
-
Wird
das BEST_BODY-Flag nicht gefunden, so geht Schritt 704 in
jedem Fall zu Schritt 701 über, und es wird fortgefahren,
wie anhand von 7A beschrieben worden ist.
-
Wird
das Flag gefunden, so geht die Prozedur zu Schritt 705 über, wo
der beste E-Mail-Nachrichten-Körperbereich
zum Senden an die anfordernde E-Mail-Client-Komponente ausgewählt wird.
Ist nur ein einziger Kopfbereich der E-Mail-Nachricht vorhanden,
der mit der angeforderten E-Mail-Nachricht verknüpft ist, so ist dieser der
beste. Sind mehrere Kopfbereiche von E-Mail-Nachrichten vorhanden,
so beispielsweise in verschiedenen Formaten, so wählt die
E-Mail-Server-Komponente die beste unter ihnen beispielsweise entsprechend
einer vorbestimmtem Rangordnung der Formate des Kopfbereiches der
E-Mail-Nachricht aus (beispielsweise RTF, HTML, Volltext). Der Prozess
geht sodann zu Schritt 703 über, wo der ausgewählte Körperbereich
der E-Mail-Nachricht an die E-Mail-Client-Komponente gesendet wird.
Bei diesem Ausführungsbeispiel
kann die E-Mail-Client-Komponente
in der Lage sein, mehrere Formate von Körperbereichen von E-Mail-Nachrichten
anzuzeigen, sodass die E-Mail-Server-Komponente nicht der Bedingung
unterworfen ist, die Körperbereiche
von E-Mail-Nachrichten in ein Standardformat umzuwandeln. Darüber hinaus
kann die E-Mail-Client-Komponente den besten Körperbereich der E-Mail-Nachricht
gegebenenfalls in ein anderes Format umwandeln.
-
Da
die E-Mail-Server-Komponente von der Aufgabe befreit ist, die Körperbereiche
der E-Mail-Nachrichten
umzuwandeln, weist die vorliegende Erfindung ein verbessertes Leistungsvermögen auf.
Darüber
hinaus kann eine E-Mail-Server-Komponente einer aktuellen Version
auf Protokollanforderungen von einer E-Mail-Client-Komponente einer älteren Version
bei lediglich einer mäßigen Zunahme
der Komplexität
antworten.
-
Fernoperationen
(ROPs) können
verwendet werden, um die Replikation eines E-Mail-Ordners zwischen
einer E-Mail-Server-Komponente und einer E-Mail-Client-Komponente
zu bewerkstelligen. Eine Anforderung zur Synchronisierung eines
Ordners kann beispielsweise von der Fernabfrage SynchFolder getätigt werden.
Ist eine E-Mail-Client-Komponente
in der Lage, Körperbereiche
von E-Mail-Nachrichten in Nichtstandardformaten anzuzeigen, so kann
sie das BEST_BODY-Flag in der Fernoperation SynchFolder setzen,
um darauf hinzuweisen, dass die E-Mail-Server-Komponente das beste
Format unter den verfügbaren
Kopfbereichen von E-Mail-Nachrichten auswählen kann, anstatt dass der
Server veranlasst würde,
den Kopfbereich einer E-Mail-Nachricht in einem Standardformat auszugeben.
Eine E-Mail-Server-Komponente kann die Fernabfragen sowohl mit als
auch ohne das BEST_BODY-Flag bei lediglich einer mäßigen Zunahme
der Komplexität
geeignet verarbeiten. Fernabfragen zur Kommunikation zwischen Servern
einer älteren
Version und einer aktuellen Version können beispielsweise die in
der nachfolgenden Tabelle zusammengefassten Eigenschaften enthalten.
| Fernoperation,
die von einem Protokoll zur Kommunikation mit Servern einer älteren Version
verwendet werden kann | Fernoperation,
die von einem Protokoll zur Kommunikation mit Servern einer aktuellen
Version verwendet werden kann |
Kennung
(ID) der Fernoperation | SynchFolder | SynchFolder |
Neue
Parameter | n/a | BEST_BODY-Flag:
Ist es gesetzt, so wählt
die E-Mail-Server-Komponente den besten E-Mail-Nachrichten-Körperbereich
zum Senden an die E-Mail-Client-Komponente.
Die Umwandlung des E-Mail-Nachrichten-Körperbereiches
in ein vorbestimmtes Standardformat ist nicht notwendig. |
-
8A bis 8C zeigen
verschiedene bestehende Modi der Übertragung einer Gruppe von E-Mail-Nachrichten
zwischen einer E-Mail-Server-Komponente und einer E-Mail-Client-Komponente.
Für jeden
Modus weist jede E-Mail-Nachricht benannte Eigenschaften auf, die
eine Kopfbereichsgruppe und eine Körperbereichsgruppe beinhalten,
wobei mehrere E-Mail-Nachrichten in einem Ordner enthalten sind. 8A zeigt
einen Vollelementübertragungsmodus.
Die Darstellung zeigt einen ersten übertragenen E-Mail-Nachrichten-Kopfbereich 801 und
sodann einen ersten E-Mail-Nachrichten-Körperbereich 802 vor
einem zweiten E-Mail-Nachrichten-Kopfbereich 803 und sodann
einen zweiten E-Mail-Nachrichten-Körperbereich 804 und
so weiter, bis die Gruppe von E-Mail-Nachrichten übertragen ist. 8B zeigt
den den Kopfbereichen zu eigenen ersten Übertragungsmodus. In diesem
Modus werden ein erster E-Mail-Nachrichten-Kopfbereich 805 und
anschließend
ein zweiter E-Mail-Nachrichten-Kopfbereich 806 und so weiter übertragen,
bis alle E-Mail-Nachrichten-Kopfbereiche übertragen sind. Erst dann werden
ein erster E-Mail-Nachrichten-Körperbereich 807 und anschließend ein
zweiter E-Mail-Nachrichten-Körperbereich 808 und
so weiter übertragen,
bis die Gruppe von E- Mail-Nachrichten übertragen
ist. 8C zeigt den den Kopfbereichen zu eigenen Nurübertragungsmodus. Wie
der Name nahelegt, werden nur die E-Mail-Nachrichten-Kopfbereiche 809 als
Antwort auf eine Anforderung zur Übertragung einer Gruppe von
E-Mail-Nachrichten übertragen.
E-Mail-Nachrichten-Körperbereiche 810 werden
nur als Antwort auf eine zusätzliche
explizite Anforderung übertragen.
In einem beliebigen dieser Modi kann die Übertragungssequenz vorübergehend
durch eine E-Mail-Client-Komponenten-Anforderung mit höherer Priorität beispielsweise
eines bestimmten E-Mail-Nachrichten-Körperbereiches
unterbrochen werden.
-
Ein
E-Mail-Ordner ist ein Beispiel für
ein Ziel einer Anforderung zur Übertragung
einer Gruppe von E-Mail-Nachrichten. Ein E-Mail-Ordner kann Datenobjekte
enthalten, die nicht E-Mail-Nachrichten sind. Wie vorstehend erläutert worden
ist, sind Übertragungsmodi
oftmals in Bezug auf die E-Mail-Nachrichten-Kopfbereiche und E-Mail-Nachrichten-Körperbereiche definiert, so
beispielsweise als den Kopfbereichen zu eigene erste und den Kopfbereichen
zu eigene Nurübertragungsmodi.
In derartigen Übertragungsmodi
kann ein Versuch der Übertragung
von Datenobjekten, für
die eine Kopfbereichsgruppe aus benannten Eigenschaften und/oder
eine Körperbereichsgruppe
aus benannten Eigenschaften nicht wohldefiniert sein können, zu
einem Protokollfehler führen.
Ein Aspekt der Erfindung vermeidet diese Situation, indem ermöglicht wird,
dass Datenobjekte, für
die eine Kopfbereichs- und/oder Körperbereichsgruppe aus benannten
Eigenschaften nicht wohldefiniert ist, immer als Ganzes und nicht
in Teilen übertragen
werden können.
Dieses Ausführungsbeispiel kann
anhand des Beispieles von 8D erläutert werden.
Bei diesem Beispiel kann die Übertragung
zwischen einer E-Mail-Server-Komponente und einer E-Mail-Client-Komponente
in dem dem Kopfbereich zu eigenen Nurmodus erfolgen. Entsprechend
wird ein erster E-Mail-Nachrichten-Kopfbereich 811 übertragen,
woraufhin ein Datenobjekt 812 zum nächsten Kandidaten für die Übertragung
wird. Die Kopfbereichsgruppe der benannten Eigenschaften ist für das Datenobjekt 812,
so beispielsweise FAI, nicht wohldefiniert, sodass das gesamte Datenobjekt übertragen
wird. Ein weiterer Kandidat für
die Übertragung
weist eine wohldefinierte Kopfbereichsgruppe aus benannten Eigenschaften
auf (das heißt,
das Kandidatendatenobjekt besitzt sämtliche benannten Eigenschaften,
die von der E-Mail-Client-Komponente als zur Kopfbereichsgruppe
aus benannten Eigenschaften gehörig
definiert sind), weshalb nur ein E-Mail-Nachrichten-Kopfbereich 813 übertragen
wird.
-
Ein
Beispiel zur Implementierung dieses Aspekts der vorliegenden Erfindung
besteht darin, dass ein Flag, so beispielsweise IGNORE_MODE_ON_FAI,
das in einer Fernope ration zur Synchronisierung, so beispielsweise
SynchFolder, siehe vorstehende Beschreibung, enthalten ist, verwendet
wird. Eine E-Mail-Server-Komponente kann Fernoperationen sowohl
mit als auch ohne das IGNORE_MODE_ON_FAI-Flag mit lediglich einer
mäßigen Zunahme
der Komplexität
geeignet verarbeiten. Fernoperationen können die Eigenschaften enthalten,
die in der nachstehenden Tabelle dargestellt sind, um die Replikation
eines E-Mail-Ordners zwischen einer E-Mail-Server-Komponente und
einer E-Mail-Client-Komponente zu erreichen.
| Fernoperation,
die von einem Protokoll zur Kommunikation mit Servern einer älteren Version
verwendet werden kann | Fernoperation,
die von einem Protokoll zur Kommunikation mit Servern einer aktuellen
Version verwendet werden kann |
Kennung
(ID) der Fernoperation | SynchFolder | SynchFolder |
Neue
Parameter | n/a | IGNORE_MODE_ON_FAI-Flag: Ist es gesetzt,
so kann für
Datenobjekte wie FAI, die keine wohldefinierte Gruppe von Kopfbereichs- und/oder
Körperbereichseigenschaften
aufweisen, die E-Mail-Server-Komponente
auf eine Übertragungsanforderung mit
dem gesamten Datenobjekt unabhängig
vom vorherrschenden Übertragungsmodus
antworten. |
-
E-Mail-Nachrichten
sind üblicherweise
an einen oder mehrere E-Mail-Netzwerk-Anwender adressiert. Eine
E-Mail-Nachricht kann als zugestellt angesehen werden, wenn sie
von einer E-Mail-Server-Komponente zur Speicherung angenommen ist.
Ein E-Mail-Netzwerk
kann mehrere E-Mail-Server-Komponenten aufweisen. Üblicherweise
verfügt
ein E-Mail-Netzwerk-Protokoll über
eine bestimmte Strategie zum Beschränken der Anzahl von E-Mail-Server-Komponenten,
die ein E-Mail-Netzwerk nach neuen Nachrichten durchsuchen muss.
Ein gängiges
Beispiel hierfür
ist die Heim-Server-Strategie (home server strategy), durch die
ermöglicht wird,
dass E-Mail-Nachrichten, die an einen bestimmten E-Mail-Netzwerk-Anwender
adressiert sind, nur von einer bestimmten Heim-Server des Anwenders genannten E-Mail-Server-Komponente
angenommen werden. In einem derartigen Fall kann eine E-Mail-Client-Komponente
derart konfiguriert sein, dass nur der Heim-Server berücksichtigt
wird, wenn beispielsweise periodisch eine Prüfung hinsichtlich neuer E-Mail-Nachrichten oder
eine Registrierung zur Benachrichtigung hinsichtlich neuer E-Mail-Nachrichten
vorgenommen wird.
-
9 zeigt
den Fall, dass auch das Beispiel einer einfachen Heim-Server-Strategie
mit Komplikationen verbunden ist. Bei dem in 9 dargestellten
Beispiel wird eine bestimmte E-Mail-Server-Komponente 901 zunächst als
Heim-Server für
einen bestimmten E-Mail-Netzwerk-Anwender bezeichnet. Mit der Zeit wechselt
der bezeichnete Heim-Server für
den Anwender zu anderen E-Mail-Server-Komponenten 903 und 905,
was üblicherweise
aus administrativen bzw. verwaltungstechnischen Gründen erfolgt.
Die E-Mail-Server-Komponenten 901, 903 und 905 können beispielsweise
physisch oder logisch verschieden sein oder verschiedenen Versionen
angehören.
Die E-Mail-Server-Komponente 902 kann nur mit der E-Mail-Server-Komponente 901 von
dem Zeitpunkt T0 bis zu dem Zeitpunkt T1 kommunizieren, woraufhin die E-Mail-Client-Komponente 904 nur
mit der E-Mail-Server-Komponente 903 bis zu dem Zeitpunkt
T2 kommunizieren kann, woraufhin wiederum
die E-Mail-Client-Komponente 906 nur mit der E-Mail-Server-Komponente 905 kommunizieren
kann. Die E-Mail-Client-Komponenten 902, 904 und 906 können gleich
oder verschieden sein. Die E-Mail-Server-Komponenten 901 und 903 können nach
dem Zeitpunkt T2 existieren oder auch nicht.
Diese Komplikationen können
bei einer E-Mail-Nachrichten-Speicherreplikation, die nachstehend
erläutert
wird, wichtig werden.
-
E-Mail-Nachrichten
können
von einer E-Mail-Server-Komponente in einem expliziten E-Mail-Nachrichten-Speicher
abgelegt werden, der beispielsweise unter Verwendung bekannter Datenbanktechnologien
implementiert sein kann. Eine E-Mail-Server-Komponente kann einen
oder mehrere derartige Nachrichten-Speicher aufweisen. Ein E-Mail-Netzwerk-Anwender
kann über
einen Heim-Nachrichten-Speicher (home message store) verfügen. Eine Änderung
der Heim-Nachrichten-Speicher kann dieselben Wirkungen mit sich
bringen, die für
eine Änderung
der Heim-Server beschrieben worden sind.
-
Einige
E-Mail-Netzwerk-Protokolle verfügen über die
Fähigkeit,
Teile eines E-Mail-Nachrichten-Speichers in eine Speichereinrichtung
zu replizieren, die lokal bei einer E-Mail-Client-Komponente angesiedelt ist. Die
Replikation von Teilen eines entfernt befindlichen E-Mail-Nachrichten-Speichers
in eine lokale E-Mail-Speichereinrichtung kann das Leistungsvermögen des
Protokolls und/oder das wahrgenommene Leistungsvermögen des
Protokolls verbessern, und zwar beispielsweise durch Replizieren
sämtlicher
neuer E-Mail-Nachrichten in die lokale E-Mail-Speichereinrichtung
vor einer expliziten E-Mail- Netzwerk-Anwender-Anforderung
zum Zwecke des Durchsehens. Eine derartige Replikation kann darüber hinaus
eine zusätzliche
Funktionalität
für die
E-Mail-Client-Komponente bereitstellen, indem beispielsweise ein
E-Mail-Netzwerk-Anwender in die Lage versetzt wird, eine E-Mail-Nachricht
während
Unterbrechungen der Netzwerkkonnektivität anzusehen.
-
In
einer E-Mail-Netzwerkumgebung kann eine einfache Replikation schnell
ineffizient werden. Verfügt eine
E-Mail-Server-Komponente beispielsweise über eine E-Mail-Nachricht,
die mit einem bestimmten E-Mail-Netzwerk-Anwender verknüpft ist,
ist diese Nachricht bereits in der Client-Komponente für den Netzwerk-Anwender
repliziert worden und trifft eine neue E-Mail-Nachricht für jenen
E-Mail-Netzwerk-Anwender ein, so ist erforderlich, dass zwei neue
E-Mail-Nachrichten als Antwort auf eine einfache Replikationsanforderung
gesendet werden. Trifft eine weitere neue E-Mail-Nachricht nach
der Replikation der beiden E-Mail-Nachrichten ein, so ist erforderlich,
dass nunmehr drei E-Mail-Nachrichten als Antwort auf eine einfache
Replikationsanforderung gesendet werden, und so weiter. Einige E-Mail-Netzwerk-Protokolle
bewerkstelligen eine inkrementelle Replikation von E-Mail-Nachrichten-Speichern,
um dieses Problem zu beheben. Bei einer inkrementellen Replikation
müssen
nur Änderungen
an einem E-Mail-Nachrichten-Speicher, die nach einer älteren erfolgreichen
inkrementellen Replikation vorgenommen worden sind, als Antwort
auf eine Replikationsanforderung gesendet werden. Ist beispielsweise
die einzige Änderung
seit der letzten erfolgreichen inkrementellen Replikation das Eintreffen
einer neuen E-Mail-Nachricht, so muss nur die neue E-Mail-Nachricht
als Antwort auf eine inkrementelle Replikationsanforderung gesendet
werden.
-
10 zeigt
ein detaillierteres Beispiel für
ein Protokoll, das eine inkrementelle Replikation ermöglicht. Ein
E-Mail-Nachrichten-Speicher kann in E-Mail-Ordner unterteilt werden.
Jeder E-Mail-Ordner kann unabhängig
von den anderen repliziert werden, was eine genauere Einflussnahme
auf den Replikationsprozess ermöglicht.
Bei diesem Beispiel wird der inkrementelle Replikationsprozess Synchronisation
genannt, da die Verbreitung von Änderungen
von der E-Mail-Client-Komponente 501 zu der E-Mail-Server-Komponente 502 wie
auch von der E-Mail-Server-Komponente 502 zu der E-Mail-Client-Komponente 501 enthalten
ist. Im Gefolge einer Synchronisationsanforderung 1001 wird
die Fernoperation SynchFolder von der E-Mail-Server-Komponente 502 verarbeitet.
Die Fernoperation enthält
einen (nicht gezeigten) Ordnerkennungsparameter (folderID paramater)
und einen stateblob0-Parameter. Der Ordnerkennungsparameter
identifiziert einen E-Mail-Ordner, der das Ziel der Synchronisationsanforderung 1001 darstellt.
Der stateblob0-Parameter enthält Informationen,
die eine E-Mail-Server-Komponente 502 in die Lage versetzen
zu bestimmen, welche Änderungen überhaupt
an dem E-Mail-Ordner aufgetreten sind, seit dieser letztmalig synchronisiert
worden ist. Stellt die Anforderung 1001 die erste überhaupt
getätigte
Synchronisationsanforderung für
den Zielordner durch die E-Mail-Client-Komponente 501 dar,
so bestimmt die E-Mail-Server-Komponente 502, ob der Ziel-E-Mail-Ordner
in dem E-Mail-Nachrichten-Speicher im Vergleich zu einem leeren
Ordner geändert
worden ist. Als Antwort 1002 auf die Anforderung 1001 sendet
die E-Mail-Server-Komponente 502 beliebige Änderungen
an der E-Mail-Client-Komponente 501,
enthaltend beliebige E-Mail-Nachrichten und/oder andere Datenobjekte,
die dem Zielordner hinzugefügt
worden sind, sowie eine Liste von beliebigen E-Mail-Nachrichten und/oder anderen Datenobjekten,
die aus dem Zielordner gelöscht
worden sind. Die E-Mail-Server-Komponente 502 erstellt
zudem einen neuen stateblob1, der den Zustand
des Zielordners anzeigt, wie dieser sich in der E-Mail-Client-Komponente 501 unmittelbar
im Gefolge der Synchronisation darstellt, und sendet diesen stateblob1 zusätzlich
in der Antwort 1002. Sendet die E-Mail-Client-Komponente 501 die
nächste
Synchronisationsanforderung 1003 für denselben Ordner wie in der
Anforderung 1001, so enthält die Anforderung 1003 als
Parameter denselben stateblob1, der mit
der Antwort 1002 ausgegeben worden ist. Wie vorher bedient
sich die E-Mail-Server-Komponente 502 der in dem stateblob1 enthaltenen Informationen, um festzustellen,
welche Änderungen,
wenn überhaupt,
in dem Zielordner aufgetreten sind, und sendet diese Änderungen
zusammen mit einem neuerstellten stateblob2 in
der Antwort 1004 zurück
an die E-Mail-Client-Komponente 501.
-
Weist
ein stateblob-Datenobjekt eine große Größe auf, so kann dies nachteilige
Auswirkungen auf das Leistungsvermögen des Protokolls haben, da
eine Sendung an eine E-Mail-Server-Komponente
beziehungsweise von einer E-Mail-Server-Komponente beispielsweise
für jede
E-Mail-Ordner-Synchronisationsanforderung erfolgt. In einigen E-Mail-Netzwerk-Protokollen,
die eine E-Mail-Ordner-Synchronisation ermöglichen, kann der stateblob
weitgehend aus einer Gruppe von Nachrichtenänderungskennungsdatenobjekten
(message changeID data objects) zusammengesetzt sein, die Änderungen
an den E-Mail-Nachrichten identifizieren, die von einer E-Mail-Client-Komponente
gesehen worden sind. Eine E-Mail-Nachrichten-Änderung kann als von einer
E-Mail-Client-Komponente und/oder einer E-Mail-Server-Komponente
gesehen betrachtet werden, wenn die geänderte E-Mail-Nachricht an
jene Komponente übertragen
worden ist.
-
Ein
Ziel eines Nachrichtenänderungskennungsdatenobjektes
kann darin bestehen, eine Änderung
an einer E-Mail-Nachricht im Kontext eines gesamten E-Mail-Netzwerkes
eindeutig zu identifizieren. In einem E-Mail-Netzwerk, das sich
einer Heim-Server-Strategie bedient, kann ein Heim-Server eines
Anwenders dafür verantwortlich
sein, ein Nachrichtenänderungskennungsdatenobjekt
mit einer vorher nicht gesehenen E-Mail-Nachrichten-Änderung
zu verknüpfen.
So kann ein Heim-Server beispielsweise Nachrichtenänderungskennungsdatenobjekte
einsetzen, die ein Server-Kennungsdatenobjekt und eine Seriennummer
umfassen. Ein Server-Kennungsdatenobjekt kann auf eindeutige Weise
eine E-Mail-Server-Komponente im Kontext eines gesamten E-Mail-Netzwerkes
unter Verwendung wohlbekannter Techniken, so beispielsweise global
eindeutiger Kennungen, identifizieren. Wo immer solche Kennungen
selbst eine große
Größe aufweisen,
kann das Server-Kennungsdatenobjekt anstelle dessen ein Index in
eine Kennungsnachschlagetabelle sein, die in der E-Mail-Server-Komponente
vorgehalten wird. Die Seriennummer kann von einem Zähler beispielsweise mit
einer Breite von 6 Byte bereitgestellt werden, wobei der Zähler lokal
bei einer E-Mail-Server-Komponente angesiedelt ist und immer dann
inkrementiert wird, wenn die E-Mail-Server-Komponente eine vorher
nicht gesehene E-Mail-Nachricht zur Speicherung annimmt.
-
Für die vorliegende
Beschreibung wird ein Nachrichtenänderungskennungsdatenobjekt
beispielsweise durch „S1:1" dargestellt,
wobei „S1" das
Server-Kennungsdatenobjekt für
eine erste E-Mail-Server-Komponente und „1" eine Seriennummer bezeichnen. Eine
Gruppe von Nachrichtenänderungskennungsdatenobjekten
kann beispielsweise durch „S1:1, S1:2, S1:3" bezeichnet
werden, wobei „S1:1", „S1:2" und „S1:3" aufeinanderfolgende
Nachrichtenänderungskennungsdatenobjekte
bezeichnen, die von einer E-Mail-Server-Komponente
mit der Server-Kennung S1 eingesetzt werden.
-
Für den Fall,
dass ein stateblob weitgehend aus einer Gruppe von Nachrichtenänderungskennungsdatenobjekten
besteht, die E-Mail-Nachrichten-Änderungen
darstellen, die von einer E-Mail-Client-Komponente gesehen werden
(eine Gruppe „Nachrichtenänderungen
gesehen"), sind
Techniken entwickelt worden, um die Gruppe zu kodieren, wodurch
sich ihre Größe verringert.
So kann beispielsweise die Gruppe „S1:1,
S1:2, S1:3, S1:4" als „S1:1–4" kodiert werden.
Darüber
hinaus kann eine E-Mail-Server-Komponente
sicherstellen, dass die verwendeten Seriennummern stets zunehmen.
In diesem Fall kann eine unzusammenhängende Gruppe „Nachrichtenänderungen
gesehen", so beispielsweise „S1:1, S1:3, S1:5, S1:7", als „S1:1–7" kodiert werden,
das heißt
als Bereich, der die minimalen und maximalen Seriennummern enthält, wobei
dies nicht mit einem Verlust an Funktionalität einhergeht.
-
In
dem in
9 dargestellten Szenario kann die Gruppe „Nachrichtenänderungen
gesehen" Nachrichtenänderungskennungsdatenobjekte
beinhalten, die von E-Mail-Server-Komponenten (beispielsweise S
1 und S
2) erstellt
sind, die nicht der aktuelle Heim-Server (beispielsweise S
3) sind. Ein Nachrichtenänderungskennungsdatenobjekt,
das von dem aktuellen Heim-Server erstellt wird, kann als heimische
bzw. native Nachrichtenänderungskennung
bezeichnet werden, während
ein Nachrichtenänderungskennungsdatenobjekt,
das von anderen E-Mail-Server-Komponenten erstellt worden ist, als
fremde Nachrichtenänderungskennung
bezeichnet werden kann. E-Mail-Netzwerk-Protokolle für die Kommunikation
mit E-Mail-Server-Komponenten einer älteren Version haben bislang
nicht die Optimierung von unzusammenhängenden fremden Nachrichtenänderungskennungssequenzen
als Bereich ermöglicht,
der die minimalen und maximalen Seriennummern auf einer Pro-E-Mail-Server-Komponenten-Grundlage
enthält.
Die nachfolgende Tabelle zeigt den Nutzen, den eine derartige Optimierung
bei einem Ausführungsbeispiel
der vorliegenden Erfindung mit sich bringt.
| Optimierung,
die von einem Server einer älteren
Version (aktueller Heim-Server
S3) verwendet wird | Optimierung,
die von einem Server einer aktuellen Versinn (aktueller Heim-Server
S3) verwendet wird |
Gruppe „Nachrichtenänderungen gesehen" vor der Optimierung | S1:1, S1:3, S1:5, S1:7
S2:1, S2:3, S2:5, S2:7
S3:1, S3:3, S3:5, S3:7 |
Gruppe „Nachrichtenänderungen gesehen" nach der Optimierung | S1:1, S1:3, S1:5, S1:7
S2:1, S2:3, S2:5, S2:7
S3:1–7 | S1:1–7
S2:1–7
S3:1–7 |
-
Ein
Ausführungsbeispiel
der vorliegenden Erfindung greift auf Fernoperationen zurück, die
die in der nachstehenden Tabelle aufgeführten Eigenschaften aufweisen,
um die Synchronisation eines E-Mail-Ordners zwischen einer E-Mail-Server-Komponente
und einer E-Mail-Client-Komponente zu erreichen. Eine E-Mail-Server-Komponente
kann die verbesserte stateblob-Kodiertechnik bei einem lediglich
mäßigen Anstieg der
Komplexität
implementieren.
| Fernoperationsergebnis,
das von einem Protokoll zur Kommunikation mit Servern einer älteren Version
verwendet werden kann | Fernoperationsergebnis,
das von einem Protokoll zur Kommunikation mit Servern einer aktuellen Version
verwendet werden kann |
Kennung
(ID) der Fernoperation | SynchFolder | SynchFolder |
Ungeänderte Parameter,
die in einem neuen Modus verwendet werden | stateblob:
Optimierung, nicht enthaltend unzusammenhängende Gruppen von fremden
Nachrichtenänderungskennungsdatenobjekten | stateblob:
verbesserte Optimierung, enthaltend unzusammenhängende Gruppen von fremden Nachrichtenänderungskennungsdatenobjekten |
-
11A und 11B zeigen
den Unterschied zwischen einer Unterprozedur, die von einem Server einer älteren Version
beziehungsweise einem Server einer aktuellen Version verwendet werden
können,
um auf die Fernoperation SynchFolder zu antworten. 11A zeigt Schritte 1101, 1102 und 1103.
In Schritt 1101 wird eine anfängliche Gruppe „Nachrichtenänderungen
gesehen" erstellt.
In Schritt 1102 werden die Elemente der Gruppe „Nachrichtenänderungen
gesehen", die native
Nachrichtenänderungskennungsdatenobjekte
darstellen, optimiert. In Schritt 1103 wird die optimierte
Gruppe „Nachrichtenänderungen
gesehen" zu einem stateblob-Datenobjekt
hinzugefügt,
das mit einer Antwort an die E-Mail-Client-Komponente gesendet werden kann,
die diese Synchronisation angefordert hat. 11B beinhaltet
einen zusätzlichen
Schritt 1104, der Elemente der Gruppe „Nachrichtenänderungen
gesehen" beinhaltet,
die fremde Nachrichtenänderungskennungsdatenobjekte
sind, die ebenfalls vor der Gruppe „Nachrichtenänderungen
gesehen" – nunmehr
mit einer verbesserten Optimierung – optimiert werden, und zwar
unter Hinzufügung
eines stateblob-Datenobjektes in Schritt 1103.
-
Während das
Unterteilen eines E-Mail-Nachrichten-Speichers in E-Mail-Ordner
eine genauere Einflussnahme auf den Synchronisationsprozess ermöglicht,
bringt es nicht automatisch eine Verbesserung des Leistungsvermögens des
Protokolls mit sich; es kann vielmehr auch zu einer Verschlechterung
des Leistungsvermögens
des Protokolls kommen. Einige Protokolle erfordern beispielsweise,
dass jeder Nachrichtenspeicherordner gesondert synchronisiert wird.
Jede Synchronisationsoperation weist üblicherweise einen bestimmten
Overhead auf, der signifikant sein kann. Synchronisationsoperationen,
die stateblob-Datenobjekte verwenden, sind Beispiele für Operationen,
die einen signifikanten Overhead aufweisen. Für den Fall der Synchronisierung
eines gesamten Nachrichtenspeichers können Protokolle, bei denen
erforderlich ist, dass jeder Nachrich tenspeicherordner gesondert
synchronisiert wird, einen Nachteil im Vergleich zu Protokollen
darstellen, bei denen weniger Synchronisationsoperationen erforderlich
sind.
-
Das
Synchronisieren eines gesamten Nachrichtenspeichers und das Aufrechterhalten
der Synchronisierung sind ein wünschenswertes
Ziel für
eine E-Mail-Client-Komponente. Herkömmliche E-Mail-Client-Komponenten
aus dem Stand der Technik suchen dieses Ziel auch dann zu erreichen,
wenn dies einen nachteiligen Einfluss auf das Leistungsvermögen des
Protokolls hat. Ein Aspekt der vorliegenden Erfindung besteht darin, dass
man in die Lage versetzt wird, den nachteiligen Einfluss auf das
Protokoll zu minimieren, während
dieses Ziel dennoch erreicht wird, und zwar unter Verwendung einer
Tiefhierarchietabelle. Herkömmliche
aus dem Stand der Technik bekannte E-Mail-Server-Komponenten sind
nicht in der Lage, eine Tiefhierarchietabelle bereitzustellen.
-
Werden
E-Mail-Nachrichten-Speicher in E-Mail-Ordner unterteilt, so können die
E-Mail-Ordner in
Hierarchien organisiert werden. 12 zeigt
ein Beispiel für
eine E-Mail-Ordner-Hierarchie. In 12 ist
der Ordner 1204 ein Unterordner des Ordners 1203.
Der Ordner 1203 ist wiederum ein Unterordner des Ordners 1202. Der
Ordner 1201 ist der Ausgangsordner. Der Ausgangsordner
ist kein Unterordner irgendeines anderen Ordners. Alle anderen Ordner
sind Elemente der von dem Ordner 1201 ausgehenden Ordnerhierarchie. Üblicherweise
verfügt
nicht jeder Ordner einer Ordnerhierarchie über einen direkten Verweis
auf jeden anderen Ordner. Ein Ordner kann nur einen direkten Verweis
auf seine Unterordner enthalten. Ein Ordner kann auch einen direkten
Verweis auf beliebige Ordner enthalten, von denen er Unterordner
ist. Es kann auch der Fall auftreten, dass der einzige Ordner, für den jeder
Ordner einen direkten Verweis enthält, der Ausgangsordner der
Hierarchie ist.
-
Eine
Tiefhierarchietabelle kann Informationen über jeden Ordner in einer Ordnerhierarchie
enthalten. Jeder Ordner kann eine Reihe in der Tiefhierarchietabelle
innehaben. Die Informationen in der Tiefhierarchietabelle sind derart,
dass sie zu einer Bestimmung dahingehend verwendet werden können, ob
die Inhalte eines E-Mail-Ordners während einer bestimmten Zeitspanne
geändert
worden sind. Die Bestimmung einer Änderung an einem E-Mail-Ordner
während
einer bestimmten Zeitspanne kann unter Verwendung eines einfachen
Vergleiches einer Kopie einer Ordnerreihe auf Grundlage einer Aufnahme
zu Beginn der Zeitspanne mit einer Kopie jener Ordnerreihe auf Grundlage
einer Aufnahme am Ende der Zeitspanne implementiert werden. Bei
einem Ausführungsbeispiel
beinhaltet jede Reihe der Tiefhierarchietabelle die nachfolgenden
Attribute.
Name
des Attributes | Typ
des Attributes | Anmerkungen |
Ordnerkennung
(ID) | FID | Der
Typ FID umfasst eine globale eindeutige Kennung (GUID) und eine
6 Byte umfassende Seriennummer. Dieser Wert kann verwendet werden,
um einen E-Mail-Ordner im Kontext eines E-Mail-Netzwerkes eindeutig zu identifizieren. |
PR_LOCAL_COMMIT_TIME_MAX | Zeitstempel | Dieser
Zeitstempel wird immer dann aktualisiert, wenn die Inhalte des Ordners
geändert
werden. |
PR_DELETED_COUNT_TOTAL | QWORD | Dieser
Wert ist ein Zähler
für die Gesamtzahl
von Elementen, die jemals aus einem Ordner gelöscht worden sind. |
-
Die
Attribute einer E-Mail-Ordner-Reihe in einer Tiefhierarchietabelle
können
aktualisiert werden, wann immer eine Änderung an den Inhalten eines
Ordners vorgenommen wird. Für
eine effiziente Implementierung einer Aktualisierung einer Tiefhierarchietabelle
hat man im Zusammenhang mit der vorliegenden Erfindung herausgefunden,
dass das Bereitstellen eines schnellen und direkten Verweises auf
die Tiefhierarchietabelle hilfreich ist. Man hat grundsätzlich herausgefunden,
dass eine kleine und vorhersagbare Anzahl von Indirektionsniveaus
vorhanden sein sollte, wenn ein Zugriff auf die Tiefhierarchietabelle
versucht wird. Das Positionieren einer Tiefhierarchietabelle auf
einem beliebigen Niveau einer Ordnertabelle erzeugt beispielsweise keine
vorhersagbare Anzahl von Indirektionsniveaus. Bei einem Ausführungsbeispiel
der vorliegenden Erfindung kann aus diesem Grunde eine Tiefhierarchietabelle
mit dem Ausgangsordner einer einem E-Mail-Netzwerk-Anwender zu eigenen E-Mail-Nachrichten-Speicher-Hierarchie
verknüpft
werden.
-
Kommunikationsvorgänge zwischen
einer E-Mail-Client-Komponente und einer E-Mail-Server-Komponente können in Kommunikationssitzungen
unterteilt werden. Es kann ein Verlust der E-Mail-Nachrichten-Speichersynchronisation
zwischen Sitzungen auftreten, so beispielsweise während einer
Unterbrechung der Netzwerkkonnektivität. Um die E-Mail-Nachrichten-Speichersynchronisation
zu Beginn einer Kommunikationssitzung wiederherzustellen, bedienen
sich einige Protokolle für
die Kommunikation mit E-Mail-Server-Komponenten einer älteren Version
der Fernoperation SynchFolder für
jeden Ordner in der Ordnerhierarchie. Üblicherweise haben sich die
Inhalte einiger der Ordner zwischen zwei Sitzungen nicht geändert. Die
Fernoperation SynchFolder mit einem nichtgeänderten Ordner als Ziel führt zu einer „Nullsynchronisation" (null synch). Obwohl
eine „Nullsynchronisation" nicht dazu führt, dass
irgendwelche Ordneränderungen
an eine E-Mail-Client-Komponente übertragen
werden, weist sie immer noch einen damit verknüpften Overhead auf, so beispielsweise
ein stateblob-Datenobjekt, das signifikant sein kann.
-
13 zeigt
ein Ausführungsbeispiel
der Erfindung, bei dem Ergebnisse einer „Nullsynchronisation" durch Verwenden
einer Tiefhierarchietabelle vermieden werden. In einer ersten Anforderung 1301 sendet
eine E-Mail-Client-Komponente 501 eine Fernoperation (beispielsweise
GetHierarchyTable), die eine Tiefhierarchietabelle anfordert, an
eine E-Mail-Senner-Komponente 502. In einer ersten Antwort 1302 wird
eine Kopie der Tiefhierarchietabelle für die E-Mail-Client-Komponente 501 bereitgestellt. Üblicherweise
verfügt
eine E-Mail-Client-Komponente 501 über eine ältere Kopie der Tiefhierarchietabelle.
Die E-Mail-Client-Komponente 501 kann schnell bestimmen,
welche Ordner in dem einem Anwender zu eigenen E-Mail-Nachrichten-Speicher auf
der E-Mail-Server-Komponente 502 geändert worden
sind, und zwar unter Verwendung eines reihenweise erfolgenden Vergleiches
der beiden Kopien. Anschließend
werden Fernoperationen (beispielsweise SynchFolder) eingesetzt,
um nur diejenigen Ordner, die eine Änderung erfahren haben, zu
synchronisieren. Anforderungen 1303 und Antworten 1304 können gegebenenfalls
wiederholt werden, um die geänderten
Ordner zu synchronisieren. Im Gefolge einer erfolgreichen Synchronisierung
kann die der E-Mail-Client-Komponente zu eigene Kopie der Tiefhierarchietabelle
derart aktualisiert werden, dass sie mit der letzten Kopie übereinstimmt, die
in der Antwort 1302 gesendet worden ist. Vertilgt die E-Mail-Client-Komponente 501 nicht über eine ältere Kopie
der Tiefhierarchietabelle, so können
sämtliche
Ordner, die über
eine Reihe in der neuesten Kopie verfügen, synchronisiert werden.
-
Sobald
eine Synchronisation des dem Anwender zu eigenen E-Mail-Nachrichten-Speichers
erfolgt ist, kann eine Synchronisation durch periodisches Wiederholen
des Anfangs von Sitzungsschritten, siehe vorstehende Beschreibung,
(periodisches Abfragen bzw. Pollen der E-Mail-Server-Komponente)
aufrechterhalten werden. Dieses Schema weist jedoch Nachteile auf.
Die Abfragezeitspanne kann beispielsweise viel kürzer als die Zeitspanne zwischen Änderungen
an einem dem Anwender zu eigenen E-Mail-Nachrichten-Speicher sein. In
diesem Fall geben vergleichsweise viele der Tiefhierarchie tabellenvergleiche
an, dass keine Ordner geändert
worden sind. Derartige Vergleiche sind allerdings überflüssiger Aufwand,
weshalb ein Protokoll, das darauf verzichten kann, effizienter ist.
-
Einige
E-Mail-Netzwerke beinhalten eine Einrichtung, mit der sich eine
E-Mail-Client-Komponente
dafür anmelden
kann, dass sie von einer E-Mail-Server-Komponente benachrichtigt
wird, wenn sich beispielsweise die Inhalte eines bestimmten E-Mail-Ordners ändern. Einige
E-Mail-Client-Komponenten einer älteren
Version bedienen sich einer derartigen Einrichtung, um eine Synchronisation
mit dem dem Anwender zu eigenen E-Mail-Nachrichten-Speicher durch Erstellen
einer gesonderten Subskription für
die Änderungsbenachrichtigungen
in Verknüpfung
mit jedem Ordner in der Ordnerhierarchie eines Anwenders aufrechtzuerhalten.
Bei einem Ausführungsbeispiel
der vorliegenden Erfindung kann eine E-Mail-Client-Komponente nur
eine einzelne Subskription für Änderungsbenachrichtigungen
in Verknüpfung
mit der Tiefhierarchietabelle erstellen. Eine einzelne Subskription
ist effizienter, da weniger Fernoperationen benötigt werden, um sie zu bewerkstelligen,
weshalb auch weniger serverseitige Ressourcen beansprucht werden.
-
Wie
weiterhin in 13 gezeigt ist, ist, wenn eine
E-Mail-Client-Komponente 501 einer aktuellen Version entsprechend
einem Aspekt der vorliegenden Erfindung die Fernabfrage GetHierarchyTable
in einer ersten Anforderung 1301 zu Beginn einer Kommunikationssitzung
mit einer E-Mail-Server-Komponente 502 einsetzt, die E-Mail-Client-Komponente 501 automatisch
für Änderungsbenachrichtigungen
subskribiert, die mit der Tiefhierarchietabelle verknüpft sind,
was in der Antwort 1302 ausgegeben wird. Tritt eine Änderung
an einem E-Mail-Ordner in einem dem Anwender zu eigenen E-Mail-Nachrichten-Speicher
in der E-Mail-Client-Komponente auf, wird also beispielsweise eine
E-Mail-Nachricht
zu dem Ordner hinzugefügt,
so wird auch die Tiefhierarchietabelle, wie vorstehend beschrieben
worden ist, aktualisiert. Die Änderung
an der Tiefhierarchietabelle löst
einen Benachrichtigungsalarm 1305 für die E-Mail-Client-Komponente 501 aus.
Obwohl der Benachrichtigungsalarm als Antwort auf die von der Anforderung 1301 gestellte
Subskription erfolgt, ist er nicht Teil eines expliziten Anforderungs-Antwort-Zyklus.
Damit führt
die Verwendung des Benachrichtigungssystems gemäß Bereitstellung durch die
vorliegende Erfindung zu sehr viel weniger Overhead in dem E-Mail-Netzwerk.
-
Eine
einzelne Subskription kann zu vielen Benachrichtigungen führen. Bei
einem Ausführungsbeispiel wird
der Alarm unter Verwendung eines verbindungslosen Netzwerktrans portmechanismus
verbreitet, so beispielsweise mittels UDP/IP (User Datagramm Protocol/Internet
Protokoll UDP/IP, Anwenderdatagrammprotokoll/Internetprotokoll,
wobei jedoch ein beliebiger geeigneter Netzwerktransportmechanismus
verwendet werden kann. Als Antwort auf den Alarm sendet die E-Mail-Client-Komponente 501 eine
Anforderung 1306, die eine Fernoperation (beispielsweise
GetNotification) enthält,
an die E-Mail-Server-Komponente 502.
Als Antwort 1307 werden alle geänderten Reihen der Tiefhierarchietabelle
(beispielsweise Reihen entsprechend einem geänderten Ordner, der die Benachrichtigung
ausgelöst
hat) an die E-Mail-Client-Komponente 501 gesendet. Die
E-Mail-Client-Komponente 501 verwendet
anschließend
Fernoperationen (beispielsweise SynchFolder), um nur die Ordner,
die Änderungen
erfahren haben, zu synchronisieren.
-
Mehrere
E-Mail-Client-Komponenten können
für Änderungsbenachrichtigungen
in Verknüpfung
mit demselben Datenobjekt (beispielsweise demselben E-Mail-Ordner)
subskribiert werden, um beispielsweise eine kollaborative Funktionalität bereitzustellen.
Wie in 18 gezeigt ist, werden die E-Mail-Client-Komponenten 1801, 1802 und 1803 für Änderungsbenachrichtigungen
in Verknüpfung
mit demselben Datenobjekt (nicht gezeigt) in lokaler Anordnung in
der E-Mail-Server-Komponente 1804 subskribiert. Die E-Mail-Client-Komponente 1803 sendet
eine Fernoperation 1805 an die E-Mail-Server-Komponente 1804,
was zu einer Änderung
an dem Datenobjekt führt.
Als Ergebnis der Änderung
sendet die E-Mail-Server-Komponente 1804 Änderungsbenachrichtigungen 1806, 1807 und 1808 an
die E-Mail-Client-Komponenten 1801, 1802, 1803. Änderungsbenachrichtigungen
verfügen über kaum
mehr Information als das Identifizieren des Datenobjektes, das geändert worden
ist, sodass beispielsweise für
eine E-Mail-Client-Komponente keine Möglichkeit besteht zu bestimmen,
ob sie der Grund für
eine bestimmte Änderung
gewesen ist. Ist das Datenobjekt beispielsweise ein E-Mail-Ordner,
so können
die Änderungsbenachrichtigungen 1801, 1802 und 1803 dazu
führen,
dass in jeder E-Mail-Client-Komponente 1801, 1802, 1803 die
Synchronisation für
den geänderten
Ordner initiiert wird. Da in diesem Beispiel die E-Mail-Client-Komponente 1803 für die Änderung
verantwortlich war, ist das Ergebnis eine „Nullsynchronisierung".
-
Aus
vorstehend erläuterten
Gründen
kann es wünschenswert
sein, Synchronisationen zu beseitigen, deren Ergebnis eine „Nullsynchronisation" ist. Das beschriebene
Benachrichtigungsverhalten ist jedoch gegebenenfalls nicht immer
unerwünscht,
und es können
einige E-Mail-Client-Komponenten davon abhängen. Ein Aspekt der vorliegenden
Erfindung besteht darin, die Fähigkeit
bereitzustellen, dass eine E-Mail-Client-Komponente das Benachrichtigungsverhalten
der E-Mail-Server-Komponenten einer aktuellen Version konfiguriert, um
das Leistungsvermögen
des Protokolls bei gleichzeitiger Bereitstellung von E-Mail-Client-Komponenten
einer älteren
Version mit ungeändertem
Benachrichtigungsverhalten zu verbessern.
-
19A zeigt das Benachrichtigungsverhalten, das
von E-Mail-Server-Komponenten einer älteren Version bereitgestellt
werden kann. 19B zeigt ein konfigurierbares
Benachrichtigungsverhalten entsprechend einem Aspekt der vorliegenden
Erfindung. Falls erwünscht,
kann eine aktuelle E-Mail-Client-Komponente gegenüber einer
E-Mail-Server-Komponente
anzeigen, dass sie zu einem Benachrichtigungsverhalten gemäß 19 imstande ist, und zwar beispielsweise
durch Bereitstellen eines Flags mit einer Anforderung – in dem
Beispiel von 19B das Flag IGNORE_OWN.
-
In
Schritt 1901 wird der nächste
Kandidat aus der Gruppe der zu benachrichtigen Teilnehmer ausgewählt. In
Schritt 1904 wird die Subskription für das Flag IGNORE_OWN untersucht.
Ist das Flag nicht vorhanden, so geht Schritt 1904 zu Schritt 1902 über, wo
eine Benachrichtigung an den Kandidatenteilnehmer gesendet wird.
Wird das Flag vorgefunden, so geht Schritt 1904 zu Schritt 1905 über, wo
der Teilnehmer erneut untersucht wird, um zu bestimmen, ob der Teilnehmer
die Benachrichtigung ausgelöst
hat. Diese Bestimmung kann beispielsweise durch Untersuchen einer
Kommunikationssitzungskennung („Sitzungs-ID") derjenigen Sitzung,
die zur Erstellung der Subskription geführt hat, verwendet werden.
Eine Sitzungskennung kann beispielsweise eine global eindeutige
Kennung und eine 6 Byte umfassende Seriennummer umfassen. Die Benachrichtigung
wird auch nach der mit ihrer Ursache verknüpften Sitzungskennung untersucht.
Passen beide zusammen, so wird die Benachrichtigung unterdrückt. Ein
Ergebnis besteht darin, dass eine E-Mail-Client-Komponente, die
eine Benachrichtigung ausgelöst
hat, jene Benachrichtigung nicht erhält. Die Unterprozedur geht
sodann, wie nachstehend noch beschrieben wird, zu Schritt 1903 über.
-
Hat
der Teilnehmer die Benachrichtigung nicht ausgelöst, so ist die Sitzungskennung
in Verknüpfung mit
der Subskription nicht die gleiche wie die Sitzungskennung in Verknüpfung mit
dem Grund der Benachrichtigung, und Schritt 1905 geht zu
Schritt 1902 über,
wo die Benachrichtigung gesendet wird. Der Prozess geht sodann zu
Schritt 1903 über,
wo eine Bestimmung dahingehend erfolgt, ob mehr Teilnehmer benachrichtigt werden
sollen. Ist dies der Fall, so kehrt die Unterprozedur zu Schritt 1901 zurück, wohingegen
sie ansonsten endet.
-
Wie
vorstehend ausgeführt,
kann eine E-Mail-Client-Komponente, die sich eines Cashspeichers
von E-Mail-Nachrichten bedient, beispielsweise über eine Fernoperation die
Synchronisation von Nachrichten oder anderen Datenobjekten zwischen
einem lokalen Client-Datenspeicher und dem in der E-Mail-Server-Komponente
verfügbaren
Datenspeicher anfordern. Die E-Mail-Client-Komponente kann auf ähnliche
Weise das Kopieren von Nachrichten aus dem Server-Speicher in den
Client-Speicher anfordern. In beiden Fällen kann die Anforderung unter
Verwendung eines Schnellübertragungsmodus
erfolgen.
-
Üblicherweise
beinhaltet, wenn Nachrichten oder andere Daten, so beispielsweise
Dateien, für
ein Synchronisieren oder Kopieren angefordert werden, die Anforderung
(beispielsweise eine Fernoperation) einen Hinweis auf alle Nachrichten,
für die
eine Synchronisation erwünscht
ist. Diese Liste kann automatisch dadurch von einer E-Mail-Server-Komponente
erstellt werden, dass beispielsweise das vorstehend beschriebene stateblob-Merkmal
verwendet wird. Bei E-Mail-Server-Komponenten einer älteren Version
(Stand der Technik) verursacht ein Fehler in einer Nachricht oder
in einem Datenobjekt in einer Fernoperationsanforderung einen Fehler
bei sämtlichen
Elementen in der Anforderung. Dieser Prozess ist in 14A gezeigt, wo eine eine Fernoperation (beispielsweise
FXPrepare) enthaltende Anforderung in Schritt 1401 mit
einer Nachrichtenkennungsgruppe, die für das Kopieren oder Synchronisieren
bestimmt ist, gesendet wird. Ein Schnellübertragungsmechanismus wird
in die E-Mail-Server-Komponente 502 eingestellt, und es
wird eine Schnellübertragungskennung
in Schritt 1402 an die E-Mail-Client-Komponente 501 gesendet. Die
E-Mail-Client-Komponente 501 fordert anschließend das
Kopieren oder Synchronisieren der Datenobjekte mittels einer Anforderung
an, die beispielsweise eine Fernoperation FXGetBuffer enthält (Schritt 1403).
Es tritt ein Fehler bei einer oder mehreren der Nachrichten oder
der anderen Datenobjekte auf, wenn die E-Mail-Server-Komponente 502 versucht, die
angeforderten Nachrichten zu öffnen.
Beispiele für
Fehler sind beispielsweise beschädigte
Nachrichten oder Datenobjekte, ein Serverausfall, eine E-Mail-Server-Komponente 502 außerhalb
des Speichers oder ein bei dem Datenobjekt erfasster Virus.
-
Nach
dem Fehler sendet die E-Mail-Server Komponente 502 einen
schweren Fernoperationsfehler in den Daten, die an die E-Mail-Client-Komponente 501 gesendet
werden, siehe Schritt 1404. Schlägt die Synchronisierung als
solche fehl, so werden die Nachrichten innerhalb der Nachrichtenkennungsgruppe
nicht synchronisiert oder kopiert, und der stateblob oder eine ähnliche
Aktualisierungsinformation werden von der E-Mail- Client-Komponente 501 nicht
empfangen. Die E-Mail-Client-Komponente 501 muss anschließend die Synchronisation
oder das Kopieren der Datenobjekte zu einem anderen Zeitpunkt anfordern.
Es ist möglich, dass
für den
Fall, dass ein Fehler nicht in der E-Mail-Server-Komponente 502 fixiert
ist, weiterhin viele Nachrichten gesendet werden und die Nachrichten
innerhalb der Nachrichtenkennungsgruppe niemals synchronisiert oder
kopiert werden können.
-
Entsprechend
einem Aspekt der vorliegenden Erfindung kann anstelle eines schweren
Fernoperationsfehlers eine aktuelle E-Mail-Server-Komponente eine
Fehlerinformation hinsichtlich des bestimmten Datenobjektes (beispielsweise
eine E-Mail-Nachricht) senden, sodass die Synchronisation nur für jenes
Datenobjekt fehlschlägt.
Dieses Merkmal ermöglicht,
dass Nachrichten oder andere Datenobjekte innerhalb einer Fernoperation
oder einer anderen Anforderung auch dann gesendet und synchronisiert
oder kopiert werden, wenn eine Nachricht oder ein anderes Datenobjekt
mit einem Fehler in der Antwort enthalten ist.
-
Als
ein Beispiel dafür,
wie mit einem objektspezifischen Fehler umzugehen ist, kann eine
aktuelle E-Mail-Server-Komponente eine Fehlernachricht in einem
Datenstream für
das Datenobjekt mit einem Objektfehler senden. In diesem Beispiel
wird der Fehler, um die Bezeichnung zu vereinfachen, mit FXErrorInfo
bezeichnet. Falls erwünscht,
kann, was nachstehend noch beschrieben wird, FXErrorInfo Informationen
enthalten, so beispielsweise die Nachrichtenkennung für das Datenobjekt
mit dem Fehler, sowie zusätzliche
Informationen dahingehend, warum die Nachricht fehlerhaft ist.
-
14B zeigt eine Synchronisation, bei der ein Fehler
in einer Nachricht M3 auftritt. Der Fehler
führt zu
einer FXGetBuffer-Antwort 1405, die eine Nachricht M1 und eine Nachricht M2,
gefolgt von FXErrorInfo, und sodann eine Nachricht M4 enthält. Die
Information FXErrorInfo ermöglicht,
dass die E-Mail-Client-Komponente 501 Kenntnisse dahingehend
besitzt, welche Nachricht einen Fehler aufweist, und sämtliche
anderen Nachrichten in der Antwort synchronisiert. Enthält die Fehlernachricht
FXErrorInfo Informationen über
den Grund für den
Fehler, so kann die Information entsprechend von der Client-Komponente behandelt
werden, so beispielsweise dadurch, dass dem Anwender eine Fehlernachricht
angezeigt wird.
-
Die
nachfolgende Tabelle zeigt ein Beispiel für das Format, in dem FXErrorInfo
vorliegen kann.
FXErrorInfo |
Name
des Attributes | Typ
des Attributes | Anmerkungen |
Version | WORD | Version
dieser Struktur |
Fehlercode | DWORD | |
Nachrichtenkennung | MID | Der
Typ MID umfasst eine global eindeutige Kennung (GUID) und eine 6
Byte umfassende Seriennummer. Es handelt sich um die Nachrichtenkennung
der Nachricht, die den Fehler verursacht hat. |
... | ... | Null
oder mehr Attribute können hier
hinzugefügt
werden. |
Hilfsfeldgröße | ULONG | Größe des folgenden
Feldes |
Hilfsfeld | BYTE-Feld | unstrukturiertes
Feld zum Kommunizieren von Fehlerdetails |
-
Es
ergibt sich, dass das als Beispiel angegebene Format ein Versionsattribut,
einen Fehlercode und eine Nachrichtenkennung enthält. Darüber hinaus
können,
so dies gewünscht
ist, ein oder mehrere Attribute hinzugefügt werden. Wie vorstehend ausgeführt worden
ist, kann ein Hilfsfeld zur Kommunikation von Fehlerdetails definiert
werden. Als solches kann ein Attribut zum Vorgeben der Feldgröße der Fehlerdetails
(beispielsweise ein Feld) definiert werden, und es kann ein Feld
vorgesehen sein, das beispielsweise ein unstrukturiertes Feld zum
Kommunizieren der Fehlerdetails ist. Wie vorstehend ausgeführt worden
ist, können
die Fehlerdetails nach Bedarf von der E-Mail-Client-Komponente 501 gehandhabt
werden.
-
FXErrorInfo
ermöglicht
die vollständige
Synchronisation der ersten Antwort, was zu einem stateblob oder
einer anderen Information führt,
die an den E-Mail-Client-Komponente 501 übermittelt
wird. Da die E-Mail-Client-Komponente nunmehr durch die Nachricht
M4 synchronisiert ist, kann die nächste Anforderung 1406 zur
Synchronisierung zu einer Antwort 1407 mit den Nachrichten
nach M4 (beispielsweise M5 und
M6) führen.
-
Um
darauf hinzuweisen, dass eine E-Mail-Client-Komponente 501 eine
aktuelle Version und damit in der Lage ist, mit der Nachricht FXErrorInfo
umzugehen, kann ein Flag, beispielsweise FXRecoverMode, definiert
werden, das mit einer Fernoperation zur Anforderung eines Synchronisierens
oder Kopierens gesendet werden kann. Andere Hinweise können verwendet
werden, damit die E-Mail-Client-Komponente 501 mit der E-Mail- Server-Komponente 502 kommunizieren
kann, die wiederum in der Lage ist, mit der Nachricht FXErrorInfo
umzugehen.
-
Sendet
die E-Mail-Server-Komponente 502 eine oder mehrere Nachrichten
oder andere Datenobjekte an die E-Mail-Client-Komponente 501,
so kann der Datenstream an die E-Mail-Client-Komponente
durch Eigenschafts-Tags (property tags, beispielsweise ptags) abgetrennt
oder definiert werden. Eine Liste von Nachrichten kann beispielsweise
für jede
Nachricht einen Anfangsnachrichten-Tag und einen Endnachrichten-Tag enthalten.
Zwischen den Anfangs- und End-ptags können ein Eigenschaftslisten-ptag
und ein Themen-ptag mit der Eigenschaft einer Zeichenfolge (string)
liegen. Auf den Themen-ptag kann das Thema selbst folgen. Weitere
Eigenschafts-Tags können
enthalten sein.
-
Für den Fall,
dass ein Fehler beim Senden einer Nachricht auftritt, kam FXErrorInfo
als ptag bereitgestellt werden und binäre Eigenschaften aufweisen,
wie sie beispielsweise in vorstehender Tabelle definiert sind. Nachfolgend
ist als Beispiel ein Datenstream angegeben, der sowohl eine erfolgreiche
Nachricht wie auch eine Nachricht, in der ein Fehler auftritt, enthält. Für den Fall,
dass der Fehler auftritt, wird der Endnachrichten-ptag für diese
bestimmte Nachricht nicht verwendet, wobei der ptag FXErrorInfo
der letzte ptag für
diese Nachricht ist.
-
-
15 zeigt Schritte, die eine E-Mail-Server-Komponente 502 einsetzen
kann, um Nachrichten an eine E-Mail-Client-Komponente 501 einer älteren Version
zu übertragen.
Begonnen wird in Schritt 1501, wo die Nachrichtengruppe
vorbereitet wird, und zwar beispielsweise durch Verbringen der Nachrichtengruppe
in den Schnellübertragungsdatenspeicher.
In Schritt 1502 beginnt man mit der Aussendung der Nachricht,
so beispiels weise unmittelbar nach der Verbringung in den Sendepuffer
der E-Mail-Server-Komponente 502. Tritt ein Fehler beim
Aussenden der Nachricht auf, so wird ein schwerer Fernoperationsfehler
an die E-Mail-Client-Komponente 501 in Schritt 1504 ausgesendet.
Anschließend
endet die Unterprozedur. Tritt beim Senden der Nachricht kein Fehler
auf, so wird in Schritt 1503 eine Bestimmung dahingehend
vorgenommen, ob weitere Nachrichten in der Gruppe vorhanden sind.
Ist dem so, so kehrt der Prozess zu Schritt 1502 zurück, in dem die
nächste
Nachricht ausgesendet wird. Ist dem nicht so, so endet die Unterprozedur.
-
15B zeigt eine Prozedur zum Umgang mit einer Nachrichtengruppe
durch eine E-Mail-Server-Komponente 1502 einer
aktuellen Version. Die unternommenen Schritte unterscheiden sich
in Abhängigkeit
davon, ob die E-Mail-Client-Komponente von einer aktuellen Version
oder von einer älteren
Version ist. Schritte 1501 bis 1504 werden mit
einer E-Mail-Client-Komponente einer älteren Version unternommen
und sind dieselben wie die mit denselben Bezugszeichen bezeichneten
Schritte im vorhergehenden Abschnitt.
-
Wird
in Schritt 1502 ein Fehler beim Senden der Nachricht vorgefunden,
so wird in Schritt 1505 eine Bestimmung dahingehend vorgenommen,
ob die Anforderung ein Flag, so beispielsweise FXRecoverMode, enthält. Enthält die Anforderung
das Flag, so ist die E-Mail-Client-Komponente 501 eine
aktuelle Version, und Schritt 1505 geht zu Schritt 1506 über, in
dem FXErrorInfo an die E-Mail-Client-Komponente 501 ausgesendet wird.
Der Prozess kann sodann zu Schritt 1503 übergehen.
Enthält
die Anforderung das Flag nicht, so geht Schritt 1505 zu
Schritt 1504 über,
wo ein schwerer Operationsfehler ausgesendet wird. Die Unterprozedur
endet sodann.
-
Es
ergibt sich, dass das Vorhandensein des Flags in der Anforderung
ermöglicht,
dass der Aussendeprozess weitergeht, indem ein Aussenden von FXErrorInfo
ermöglicht
wird, anstelle dass abgebrochen und ein schwerer Fernoperationsfehler
ausgesendet würde.
Das Flag wird von einer E-Mail-Client-Komponente 501 einer
aktuellen Version ausgesendet. Ältere
Versionen von E-Mail-Client-Komponenten enthalten das Flag nicht,
was zu einem Fehler beim Aussenden eines schweren Fernoperationsfehlers,
wie vorstehend beschrieben worden ist, führt.
-
Gegebenenfalls
kann bei einem alternativen Ausführungsbeispiel
die Fehlernachricht (beispielsweise FXErrorInfo) für bestimmte
Eigenschaften einer Nachricht oder eines anderen Datenobjektes anstatt
für eine gesamte
Nachricht ausgesendet werden. So kann FXErrorInfo beispielsweise
für den
Körperbereich
einer Nachricht oder für
ein Attachment an der Nachricht ausgesendet werden. Die E-Mail-Client-Komponente 501 kann
anschließend
die Eigenschaften, die ohne einen Fehler erfolgreich gesendet worden
sind, synchronisieren oder kopieren, wobei lediglich diejenigen
Eigenschaften, die Fehler aufweisen, nicht synchronisiert oder kopiert
werden.
-
Bisweilen
kann eine Nachricht oder ein anderes Datenobjekt von einer derart
ausreichenden Größe sein,
dass sie/es mehrere FXGetBuffer-Antworten überspannt. Um mit derartigen
Nachrichten umzugehen, kann die E-Mail-Client-Komponente 501 eine
Wiederholungslogik enthalten, sodass sie sich einer beliebigen teilweise
empfangenen Nachricht entledigen kann und anschließend dahingehend
weitermacht, dass die weiteren Nachrichten nach dem Empfangen einer
Fehlernachricht geeignet empfangen werden.
-
Bisweilen
kann erwünscht
sein, dass eine E-Mail-Client-Komponente mit einer Rückmeldung
im Zusammenhang mit dem Prozess des Kopierens oder Synchronisierens
von Datenobjekten, so beispielsweise von E-Mail-Nachrichten, versehen
ist. Entsprechend einem Aspekt der vorliegenden Erfindung kann eine
aktuelle Version einer E-Mail-Client-Komponente 501 anzeigen, dass
sie in der Lage ist, mit Fortschrittsmodi umzugehen, beispielsweise
durch Senden eines Flags wie PROGRESS_MODE, an eine E-Mail-Server-Komponente 502 beim
Anfordern des Synchronisierens oder Kopierens von Datenobjekten.
Als Antwort kann eine aktuelle Version einer E-Mail-Server-Komponente 502 eine
Vielzahl von Informationen zusammen mit den Nachrichten senden,
so beispielsweise die Gesamtgröße sämtlicher
Nachrichten, die Gesamtanzahl der Nachrichten und die Gesamtgröße jeder
Nachricht oder eine Kombination hieraus.
-
16 zeigt ein Beispiel für eine E-Mail-Client-Komponente 501 einer älteren Version,
wobei hier als Antwort auf eine Schnellübertragungsanforderung (1601 und 1603)
für eine
Gruppe von Nachrichten die E-Mail-Client-Komponente 501 die
Nachrichten empfängt.
In 16A werden Nachrichten in zwei Antworten 1604 und 1606 empfangen.
In E-Mail-Client-Komponenten 501 einer älteren Version, wo ein Schnellübertragungsmechanismus
zum Einsatz kommt, ist eine Fortschrittsanzeige der an den Client
ausgesendeten Nachrichten nicht vorgesehen.
-
Ist
jedoch, wie in 16B gezeigt ist, eine Antwort 1607 auf
eine Anforderung einer Nachrichtengruppe seitens der E-Mail-Client-Komponente
gegeben, so kann die E-Mail-Server-Komponente 502 eine
Gesamtzahl von zur Übertragung
anstehenden Datenobjekten sowie die Gesamtgröße sämtlicher zur Übertragung
anstehenden Datenobjekte bereitstellen. Diese Information ist in 16B mit „Pall" bezeichnet.
Eine aktuelle Version einer E-Mail-Server-Komponente 502 kann
zudem die Größe jeder
Nachricht angeben, was in 16B mit „P1, P2, P3,
..." bezeichnet
ist. Darüber
hinaus können
gegebenenfalls die Informationen in Verknüpfung mit jeder Nachricht und
mit der gesamten Gruppe von Nachrichten zusätzliche Informationen dahingehend
beinhalten, ob jede Nachricht FAI oder eine tatsächliche E-Mail-Nachricht ist.
Bei einem Ausführungsbeispiel
werden die in 16B mit „Pall" bezeichneten
Informationen stets als Antwort auf eine Schnellübertragungsanforderung gesendet,
und zwar auch dann, wenn nur Datenobjekte übertragen werden, was die Verarbeitung
des Datenstreams vereinfacht.
-
Ein
Beispiel für
das Format von Größe und Anzahl
aller übertragenen
Datenobjekte ist in der nachfolgenden Tabelle gezeigt.
IncrSyncProgressMode |
Name
des Attributes | Typ
des Attributes | Anmerkungen |
Version | WORD
(beispielsweise eine ganze Zahl mit 16 Bit) | Version
dieser Struktur |
cAssocMsgs | DWORD
(beispielsweise eine ganze Zahl mit 32 Bit) | Anzahl
der zur Übertragung
anstehenden FAI-Datenobjekte |
IITotalAssocMsgSize | DWORD
(beispielsweise eine ganze Zahl mit 64 Bit) | Gesamtgröße aller
zur Übertragung
anstehenden FAI-Datenobjekte |
cNormalMsgs | DWORD | Anzahl
der zur Übertragung,
anstehenden E-Mail-Nachrichten |
IITotalNormalMsgSize | QWORD | Anzahl
aller zur Übertragung
anstehenden E-Mail-Nachrichten |
-
Es
ergibt sich, dass gesonderte Attribute für die Anzahl von FAI-Datenobjekten,
die Gesamtgröße aller FAI-Datenobjekte,
die Anzahl der zur Übertragung
anstehenden E-Mail-Nachrichten
und die Gesamtgröße aller
zur Übertragung
anstehenden E-Mail-Nachrichten definiert werden können. Andere
Kombinationen und zusätzliche
Attribute können
je nach Bedarf zu dem Format hinzugefügt werden.
-
Die
nachfolgende Tabelle zeigt ein Format für die Größe und andere Informationen,
die mit jeder Nachricht einhergehen können.
IncrSyncProgressModePerMsg |
Name
des Attributes | Typ
des Attributes | Anmerkungen |
Größe der Nachricht | LONG
(lang) | Größe der nächsten Nachricht |
FAI-Flag | BOOL | gibt
an, ob die nächste
Nachricht FAI ist |
-
Es
ist ersichtlich, dass das Format die Größe der nächsten Nachricht und Informationen
dahingehend, ob die nächste
Nachricht FAI ist, beinhaltet.
-
17A und 17B zeigen
Schritte zum Senden einer Nachrichtengruppe entsprechend einer älteren Version
der E-Mail-Komponenten beziehungsweise einer aktuellen Version der
E-Mail-Komponenten. Die Schritte in 17A sind ähnlich zu
den Schritten 1501 bis 1503 in 15A. Mit Blick auf 17B bleibt festzuhalten,
dass das Flag PROGESSMODE, beispielsweise mit einer Fernoperation,
von einer aktuellen E-Mail-Client-Komponente 501 gesendet
worden ist. Nachdem die Nachricht in Schritt 1701 vorbereitet
worden ist, wird eine Bestimmung dahingehend vorgenommen, ob das
Flag vorhanden ist. Ist dem so, so werden die Fortschrittsdaten
insgesamt in Schritt 1702 gesendet, woraufhin der Prozess
zu Schritt 1502 übergeht,
in dem die erste Nachricht gesendet wird. Ist das Flag nicht vorhanden,
so geht Schritt 1701 direkt zu Schritt 1502 über.
-
Nachdem
die erste Nachricht gesendet worden ist, geht der Prozess zu Schritt 1703 über, wo
eine Bestimmung dahingehend erfolgt, ob das Flag vorhanden ist.
Ist dem so, so geht Schritt 1703 zu Schritt 1704 über, wo
die Fortschrittsdaten pro Nachricht gesendet werden. Der Prozess
geht sodann zu Schritt 1503 über, der bereits beschrieben
worden ist. Ist das Flag nicht vorhanden, so geht Schritt 1703 direkt
zu Schritt 1503 über.
-
Ein
Beispiel für
das Senden von Daten für
eine aktuelle Server-Komponente, die Daten an eine aktuelle Client-Komponente
sendet, ist nachstehend dargestellt. Das Senden von Daten ist ähnlich dem
Senden von Daten gemäß vorstehender
Beschreibung, enthält
jedoch zusätzlich
ptags für
Fortschrittsgesamtdaten (ptagIncrSyncProgressMode), die beispielsweise
binäre
Eigenschaften aufweisen können.
Für jede
Nachricht sind beispielsweise die Fortschrittsdaten pro Nachricht,
beispielsweise PtagIncrSyncProgressModePerMsg, bereitgestellt.
-
-
In
dem gezeigten Beispiel sind die ptags, die die Fortschrittsgesamtdaten
(ptagIncrSyncProgressMode) und die ptags für die Nachrichtenfortschrittsdaten
(ptagIncrSyncProgressModePerMsg) enthalten, vor der Liste der Nachrichten
beziehungsweise vor jeder Nachricht angesiedelt. Gleichwohl kann
die Struktur des Sendens der Datenobjekte derart umgestaltet werden,
dass die Fortschrittsdaten in den Nachrichten oder in der Nachrichtenliste
enthalten sind. Es ist darüber
hinaus möglich,
die Struktur des Sendens von Datenobjekten derart umzugestalten,
dass ptag-Begrenzungsnachrichten und/oder Nachrichtenlisten in Gänze beseitigt
werden.
-
Eine
E-Mail-Client-Komponente, die Fortschrittsdaten empfängt, kann
diese Daten zur Bestimmung des Fortschrittes des Synchronisierens
oder Kopierens von Datenobjekten von der E-Mail-Server-Komponente und
die Fortschrittsdaten pro Nachricht zur Bestimmung des Fortschrittes
bei jeder einzelnen Nachricht verwenden. Diese Informationen können beispielsweise
beim Überwachen
von Echtzeitinformationen hinsichtlich des Fortschrittes einer Synchronisierung
hilfreich sein.
-
Es
gibt verschiedene Zeichensätze,
die zum Speichern von E-Mail-Nachrichten oder anderen Datenobjekten
verwendet werden können.
So ist beispielsweise ASCII der zur Speicherung von englischsprachigen Zeichen
am häufigsten
benutzte Zeichensatz. Gleichwohl ist ASCII zum Speichern von Zeichen
in allen Sprachen nicht ausreichend, da er auf 8 Bit umfassenden
Zeichen beruht. Daher kann der ASCII-Code nur für 256 Zeichen verwendet werden,
was genug für
das Englische, jedoch nicht genug für Sprachen ist, die über weitere Zeichen
verfügen.
Unicode ist demgegenüber
ein Zeichensatz, der auf 16 Bit (2 Byte) für jedes Schriftzeichen zugreift
und daher in der Lage ist, mehr Schriftzeichen als ASCII darzustellen.
Unicode kann 65.536 Zeichen umfassen und wird daher zur Codierung
nahezu sämtlicher
Sprachen der Welt verwendet. Unicode enthält den ASCII-Zeichensatz in
sich.
-
Im
Allgemeinen weisen ältere
Versionen von E-Mail-Client-Komponenten 501 eine bestimmte
Codeseite (codepage) oder einen Zeichensatz und/oder eine damit
verknüpfte
Sprache auf. Eine bestimmte Version der E-Mail-Client-Komponente 501 kann
beispielsweise eine deutsche Codeseite aufweisen, während eine
andere Version eine ANSI-Codeseite aufweist. Bisweilen kann es für eine E-Mail-Client-Komponente 501 wünschenswert
sein, E-Mails im Zeichensätzen
zu empfangen, die nicht der bezeichneten Codeseite entsprechen. Entsprechend
einem Aspekt der vorliegenden Erfindung kann eine aktuelle Client-Komponente
eine E-Mail-Server-Komponente zwingen, alle E-Mails in Unicode darzustellen. Sobald
die E-Mails von der E-Mail-Client-Komponente 501 empfangen
worden sind, können
die Unicode-E-Mails in die dem Client zu eigene Codeseite umgewandelt
werden oder alternativ in Unicode verbleiben.
-
Um
anzuzeigen, dass eine E-Mail-Client-Komponente 501 E-Mails
abruft, die in Unicode bereitgestellt werden sollen, kann die Client-Komponente 501 beispielsweise
ein Flag, so beispielsweise FORCEUNICODE, für die E-Mail-Server-Komponente 502 bereitstellen.
Das Flag kann mit einer Anforderung, so beispielsweise einer Fernoperation,
versehen sein. Ist die E-Mail-Server-Komponente 502 eine
aktuelle Version, so kann die E-Mail-Server-Komponente 502 eine
Unicode-Version, falls verfügbar,
bereitstellen oder kann E-Mail-Nachrichten in andere Zeichensätze als
Unicode umwandeln.
-
20 zeigt
die Schritte zur Bereitstellung eines bestimmten Zeichensatzes für eine Nachricht
entsprechend einem Aspekt der vorliegenden Erfindung. Beginnend
in Schritt 2001 ruft zunächst die E-Mail-Server-Komponente 502 eine
Nachricht aus ihrem Datenspeicher ab. In Schritt 2002 wird
eine Bestimmung dahingehend vorgenommen, ob das Flag FORCEUNICODE
vorhanden ist. Ist dem nicht so, so geht Schritt 2002 zu
Schritt 2003 über,
wo die E-Mail-Server-Komponente 502 die E-Mail-Nachricht
in der der E-Mail-Client-Komponente
zu eigenen bestimmten Codeseite bereitstellt und gegebenenfalls
eine Umwandlung vornimmt.
-
Ist
das Flag FORCEUNICODE vorhanden, so geht Schritt 2002 zu
Schritt 2004 über,
wo eine Bestimmung dahingehend vorgenommen wird, ob die Nachricht
als Unicode gespeichert ist. Ist dem so, so geht Schritt 2004 zu
Schritt 2005 über,
wo die Nachricht für
die E-Mail-Client-Komponente 501 im Unicode-Zeichensatz
bereitgestellt wird. Ist die Nachricht nicht in Unicode gespeichert,
so geht Schritt 2004 zu Schritt 2006 über, wo
die Nachricht in Unicode umgewandelt wird, woraufhin der Prozess
bei Schritt 2005 weitergeht, wo die Nachricht für die E-Mail-Client-Komponente
in Unicode bereitgestellt wird.
-
Die
Verwendung der Begriffe „ein/eine/ein" und „der/die/das" und ähnlicher
Worte im Kontext der Beschreibung der Erfindung (insbesondere im
Kontext der nachfolgenden Ansprüche)
soll sich sowohl auf den Singular wie auch auf den Plural beziehen,
außer
dies ist durch den Kontext eindeutig anderweitig nahegelegt. Die
Begriffe „umfassend, „aufweisend", „beinhaltend" und „enthaltend" sollen als nicht
abgeschlossene Begriffe (das heißt in der Bedeutung „beinhaltend,
aber nicht beschränkt
hierauf") verstanden
werden, außer
dies wird anderweitig angegeben. Die Nennung von Wertebereichen
soll nur als Kurzschreibweise für
eine Bezugnahme auf jeden einzelnen Wert, der in dem Bereich vorhanden
ist, dienen, außer
dies ist explizit anders angegeben, wobei jeder einzelne Wert genauso
in der Beschreibung enthalten sein soll, als würde er dort explizit genannt.
Sämtliche
hier beschriebenen Verfahren können
in einer geeigneten Reihenfolge ausgeführt werden, außer dies
ist explizit anders niedergelegt oder der Kontext legt Gegenteiliges
nahe. Die Verwendung beliebiger Beispiele oder aller Beispiele oder
auf Beispiele hinweisender Wendungen (beispielsweise) soll in der
vorliegenden Beschreibung nur einer besseren Erläuterung der Erfindung dienen
und keinerlei Beschränkung
des Schutzumfanges darstellen, außer dies ist anderweitig angegeben.
Keine Angabe in der Beschreibung soll derart verstanden werden,
dass sie ein nichtbeanspruchtes Element als wesentlich für die Umsetzung
der Erfindung in die Praxis angibt.