WCF Exchange Server E-Mail-Transport

Dieser Dokumentation für die Vorschau nur ist und in späteren Versionen geändert. Leere Themen wurden als Platzhalter eingefügt.]

Windows Communication Foundation (WCF) Mail-Transport für Microsoft Exchange Server bietet einen in der Warteschlange Dienst mithilfe von WCF-Endpunkten basierend auf e-Mail-Adressen. Diese Lösung ermöglicht .NET Framework und .NET Framework-Anwendungen zu Host und Webdienste von einem beliebigen Computer nutzen, solange der e-Mail-Server erreichbar ist.

Hinweis

WCF wird in .NET Compact Framework, Version 3.5 und höher unterstützt.

Dieses Feature kann verwendet werden, damit eine Vielzahl von Anwendungsszenarios, einschließlich der folgenden:

  • Anwendungen, die sichere Kommunikation aus dem Feld senden möchten, wieder in einem zentralen Server und sichere Kommunikation vom Server empfangen.

  • Anwendungen, die Daten aus einer Enterprise-Server zu Geräten in das Feld abzulegen.

  • Peer-to-Peer-Anwendungen, in denen zwei oder mehr Geräten zu anderen direkt kommunizieren können.

    In diesen Szenarios werden mit mehreren Parteien Zustandsinformationen zu anderen mithilfe von e-Mail-Server als den Vermittler kommunizieren. Beispielsweise sendet ein Spieler in einem typischen Gaming-Szenario, eine Einladung ein Spiel auf die anderen Spieler spielen, indem Sie die Anwendung mit e-Mail-Adressen oder einen Gruppenalias bereitstellen.

  • Anwendungen, die verlorene Geräten zu suchen.

  • Anwendungen, die Konfigurationsinformationen für andere Anwendungen durch Verschieben von Daten an das Gerät zu aktualisieren.

WCF Exchange Server e-Mail-Transport behebt zwei grundlegende Einschränkungen für Geräte im Feld: Addressibility und die Möglichkeit, Warteschlangendaten, wenn Geräte offline sind. Bilden die Endpunktadresse WCF den Kanalnamen und die e-Mail-Adresse. Dies ähnelt einer IP-Adresse und Anschlussnummer an in einer Socket-basierten Anwendung. Addressibility des Geräts wird die e-Mail-Adresse behandelt, und Addressibility der Anwendungsinstanz wird durch den eingegebenen Kanalnamen behandelt. Das Protokoll WS-Adressierung wird verwendet, um diese benutzerdefinierte Adressierungsschema implementieren.

Queuing wird durch den lokalen Datenspeicher in Windows Mobile-Geräten unterstützt. Allgemeine Informationen über WCF Warteschlangen finden Sie unter Queues Overview.

Anwendungen, die auf die WCF-Exchange-Server e-Mail-Nachrichten basieren transport von grundlegende WCF-Features profitieren. WCF bietet ein einheitliches Programmiermodell für die verschiedenen zugrunde liegenden Protokolle und Transporte und trennt die Anwendungslogik von WCF-Endpunkt. Dieses Programmiermodell bietet mehrere Vorteile, einschließlich Unterstützung für verschiedene Netzwerke wie General Packet Radio Service (GPRS), Wi-Fi und einem anderen Netzwerk, auf die e-Mail-Server zugreifen können. Entwickeln von Anwendungen mithilfe von WCF Exchange Server e-Mail-Transport ist sehr ähnlich zum Entwickeln von Anwendungen mithilfe von WCF-Kanäle wie z. B. den HTTP-Kanal.

Voraussetzungen

Der e-Mail-Server für Anwendungen auf Grundlage der WCF-Mailtransport ist Exchange Server 2007. Exchange Server 2007 Service Pack 1 bietet eine administrative Aufgabe, die Ihnen ermöglicht, in einem separaten Ordner für WCF-e-Mail-Dienst Datenverkehr umgeleitet.

Hinweis

Service-Datenverkehr verwendet den Posteingang , wenn es nicht umgeleitet wird.

Mail-Transport wird für Geräte und Desktopcomputer unterstützt.

CEMAPI (CE Messaging API) ist auf dem Gerät erforderlich, um Warteschlangen zu unterstützen. CEMAPI ist auf Windows Mobile-Geräte vorhanden, aber es ist nicht auf Windows Embedded CE-Geräte vorhanden.

Windows Mobile Version 5.0 und höhere Versionen unterstützen WCF Exchange Server e-Mail-Übermittlungsdienst. In Windows Mobile Versionen ist älter als Version 5.0 (build 14847.2.0), Systems Management Server (SMS) anstelle von Direct Push verwendet, um die Synchronisierung mit dem Exchange-e-Mail-Server erzwingen.

Hinweis

Mail-Transport wird auch auf Windows Mobile 2003 für Pocket PC und Windows Mobile 2003 Second Edition für Pocket PC unterstützt.Allerdings tritt für Geräte, die Versionen von Windows Mobile 5.0 vor ausgeführt werden, der ActiveSync-Synchronisationszeitraum für eingehende Nachrichten nicht immer auf, wenn geplant.Diese Geräte wird empfohlen, dass einen Timeout nicht angeben, oder, dass Sie einen großen Timeout, angeben Wenn Sie die Receive-Methode aufrufen.Windows Mobile 2003 für Smartphone wird nicht unterstützt.

  • Tritt auf, Kommunikation mit dem e-Mail-Server direkt über Exchange Server 2007-Webdienste, auf dem Desktopcomputer. Der Desktop unterstützt nicht queuing. Folglich muss der Desktopcomputer immer online sein.

  • Anwendungen auf dem Desktop verwenden die Desktopimplementierung von WCF.

Architektur

Die Messagingschicht basiert auf der standard desktop WCF-Architektur. Die Common Language Runtime-Dienstschicht ist nicht vorhanden. Die folgende Abbildung zeigt den Kanalstapel und die unterstützten Protokolle und Bindungselemente.

Messagingschicht für den WCF-Exchange-Server e-Mail-transport

Messaging layer for Exchange Server mail transport

Unterstützung für WS-Security-Spezifikationsversion 1.0 umfasst SOAP-Nachrichtensicherheit mithilfe von x. 509-Zertifikate.

Message-Klasse baut auf dem Standard WS-Adressierung. Alle Nachrichten sind asynchrone;Sie geleitet von einem Gerät über den e-Mail-Server auf einem anderen Gerät, ohne eine return Reise.

Serialisierung und Deserialisierung von Meldungen werden innerhalb der .NET Framework oder .NET Framework Runtime behandelt. Auf der Seite Gerät muss ein benutzerdefiniertes Serialisierungsprogramm in der Anwendung verwendet werden. Dies ist nicht für den Desktop erforderlich, da im vollständigen .NET Framework die DataContractSerializer-Klasse unterstützt. Jedoch sollten die gleiche Serialisierungskomponente, die für Geräte verwendet wird, auf dem Desktop verwendet werden, wenn die Anwendung die Kommunikation zwischen Geräten und dem Desktop unterstützt.

Design

Für den WCF-Exchange-Server e-Mail-Transport wird durch die Kombination einer WCF-Bindung und die Endpunktadresse ein WCF-Endpunkt dargestellt. Die Bindung gibt die Parameter, die für die Kommunikation verwendet werden. Es stellt eine Auflistung von Bindungselementen, die einen Element, eine Codierung Bindungselement und eine Sicherheitsbindungselement Transport enthält. Bei Anwendungen, die Mail-Transport verwenden, werden diese Elemente wie folgt definiert:

Anstatt einen Satz Bindungselemente in einem Objekt CustomBinding instanziieren, können Anwendungen eine vordefinierte Sammlung von Bindungselementen mithilfe einer Klasse, die von dem Objekt MailBindingBase abgeleitet ist, erstellen. Diese Klasse enthält neben E-mail-Transportbindungselement ein Textcodierung Bindungselement und optionale Meldung Sicherheit.

Nachrichten werden im Textkörper der e-Mail-Nachricht enthalten oder als Anlage gesendet. Betreffzeile der Nachricht enthält den Kanalnamen. Die Nachricht wird mit einem benutzerdefinierten WCF-e-Mail-Kanal Stempel identifiziert, die von der Nachrichtenklasse von Exchange Server verwendete bereitgestellt wird.

Versenden von Nachrichten

Wenn eine Anwendung eine Nachricht sendet, ruft es die Send-Methode für den aktuellen Ausgabechannel, der geöffnet sein müssen. Der Ausgabekanal serialisiert die Nachricht an eine Zeichenfolge und erstellt die Meldung im Ordner Entwürfe. Er legt die entsprechenden Werte in die e-Mail-Felder. Wenn die Nachricht erstellt wurde, wird er in den Postausgang verschoben. Dies geschieht über CEMAPI auf dem Gerät oder über Exchange-Webdienste auf dem Desktop. Auf dem Gerät werden Nachrichten in den Postausgang mit anderen ausgehenden Nachrichten synchronisiert, gemäß der Definition durch ActiveSync.

Empfangen von Nachrichten

Wenn eine Anwendung, die auf WCF Exchange Server e-Mail-Transport basiert eine Nachricht empfängt, geschieht Folgendes:

  1. Die Anwendung wird den Eingangskanal geöffnet.

  2. Die Eingangskanal Ruft die Receive-Methode zu Nachrichten abhört.

  3. Wenn Exchange e-Mail-Server eine Nachricht, die den WCF-e-Mail-Kanal-Stempel hat empfängt, leitet es automatisch die Nachricht in den Service E-Mail Ordner, die auf der gleichen Ebene wie der Posteingang weiter.

    Hinweis

    Wenn Exchange e-Mail-Server keine Route WCF Exchange Server-Dienst e-Mail-Nachrichten in Ordner Service E-Mail konfiguriert wurde, wird stattdessen verwendet der Posteingang .

  4. Eingangskanal, die für das neue e-Mail-Ereignis überwacht überprüft jede Nachricht, die in der Service E oder Posteingang eintreffen.

    Den Eingangskanal wird den Code blockiert, während es für Nachrichten abhört.

  5. Wenn die Eingangskanal mit dem Namen bestimmten Kanal in der Nachricht übereinstimmt, die Meldung abgerufen, und wird den Code die Blockierung aufgehoben.

Sie können mehrere Kanäle Eingabe die Receive-Methode aufrufen, die auf der gleichen Transport basieren. Blockierung tritt auf, nur wenn Receive zum zweiten Mal auf demselben Kanal Eingabe auf demselben Thread aufgerufen wird.

Hinweis

Nur eine Eingangskanal kann jedes Kanallistener zugeordnet werden.Ein zweiter Aufruf der Methode AcceptChannel auf einen Kanallistener wird erst schließt die erste Eingangskanal zurückgegeben.

Für größere Flexibilität kann der e-Mail-Transport Verarbeitung von Nachrichten mit verschiedenen Größen auf unterschiedliche Weise konfiguriert werden. Beispielsweise können Nachrichten als Anlagen oder im Nachrichtentext auf Grundlage ihrer Größe gesendet werden. Größere Nachrichten möglicherweise nicht vollständig während der anfänglichen Synchronisierung gedownloadet werden. Auf dem Gerät werden Nachrichten in der Service E oder Posteingang mit anderen eingehenden Nachrichten synchronisiert, gemäß der Definition durch Microsoft ActiveSync.

Hinweis

Für das Gerät steuern die Synchronisierungseinstellungen für ActiveSync-e-Mail-die maximale Größe jeder Nachricht, das zunächst auf das Gerät gedownloadet wird.Wenn eine Nachricht dieser Größe überschreitet, wird anfänglich nur ein Teil des Nachrichtentextes gedownloadet.Wenn eine Nachricht teilweise heruntergeladen ist und installiert eine Kanallistener auf die Nachricht wartet, markiert der Transport die Nachricht um anzugeben, dass es in seiner Gesamtheit per Download übertragen verfügt.Die vollständige Meldung wird bei der nächsten Synchronisierungssitzung gedownloadet.

Beim Empfang einer Meldung erhalten Sie die e-Mail-Adresse des Absenders, mithilfe der benutzerdefinierten Eigenschaft FromEmailAddress in der Message-Klasse. Das folgende Beispiel veranschaulicht diese Eigenschaft verwenden.

System.ServiceModel.Channels.Message m;
String senderAddress;
m = input.Receive();
senderAddress = m.Properties.ContainsKey("FromEmailAddress")

Löschen von Nachrichten

Der Transport Löscht eine Nachricht, sobald die Nachricht angefordert und von der Anwendung empfangen. Der Prozess für eingehende Nachrichten löschen, nachdem Sie verarbeitet variiert je nach Plattform.

Der Vorgang zum Löschen von eingehende Nachrichten auf Windows Mobile-Geräten besteht aus den folgenden Schritten:

  1. Den Eingangskanal Ruft eine Meldung ab, nach der Receive-Methodenaufrufe.

  2. Mail-Transport stellt einen Aufruf an die Nachricht aus dem Nachrichtenspeicher auf Windows Mobile mit Strom versorgten Gerät löschen.

  3. Die Nachricht wird vom Server an die nächste e-Mail-Synchronisierung gelöscht.

Der Vorgang zum Löschen von Nachrichten auf dem Desktop besteht aus den folgenden Schritten:

  1. Den Eingangskanal Ruft eine Meldung ab, nach der Receive-Methodenaufrufe.

  2. Mail-Transport die Nachricht in den Cache Gelöschte Nachrichten, die einen internen Cache Besitz Mail Transport platziert.

  3. Nach dem nächsten Abfrageintervall überprüft Mail-Transport der gelöschten Nachrichten-Zwischenspeicher.

    Das Abfrageintervall wird durch die ServerQueryInterval-Eigenschaft bestimmt.

  4. Wenn der gelöschte Nachrichten Cache alle Nachrichten enthält, gibt Mail-Transport eine Abfrage, die einen Befehl an den Server, um die Nachrichten im Cache löschen enthält.

  5. Während die Abfrage Mail-Transport überprüft der Serverereignisse und alle zugeordneten Nachrichten gedownloadet.

  6. Mail-Transport sendet alle gedownloadeten Nachrichten an seinen Cache Verarbeitung für die Verarbeitung von der Anwendung.

Für den Desktop gibt Mail-Transport auch einen Befehl an den Server Nachrichten im Cache Gelöschte Nachrichten in folgenden Situationen löschen:

  • Beim Aufrufen der Methode Close auf dem letzten verbleibenden Öffnen Eingabe Kanal, ist eine e-Mail-Übermittlungsdienst zugeordnet.

  • Wenn Sie auf Mail-Transport Dispose-Methode aufrufen.

Diese Vorgänge sind synchron;Close und Dispose blockieren den Code, bis die Nachrichten vom Server gelöscht werden. Die Zeit für die Meldungen löschen kann variieren und hängt von der Anzahl der Nachrichten, die gelöscht werden. Wenn während dieses Vorgangs ein Fehler auftritt, wird der Transport auch weitere Versuche, die Nachrichten löschen mehrere.

Auf Windows Mobile-Geräten behandelt der Nachrichtenspeicher diese Funktion.

Nachrichten werden ebenfalls gelöscht, wenn Sie ungültig oder beschädigt sind. Eine Nachricht mit einen beschädigten SOAP-Envelope als ungültig angesehen und wird endgültig gelöscht werden. Wenn die Betreffzeile der Nachricht fehlerhafte Informationen, die folgenden des WCF-e-Mail-Kanal Stempels z. B. eine nicht unterstützte Zeichen im Kanalnamen enthält gilt, eine ungültige Nachricht. Falsch formatierte Nachrichten werden zum Ordner gelöschte verschoben.

Standardeinstellungen

MailBindingBase-Klasse und von ihr abgeleiteten Klassen stellen eine Auflistung von vordefinierten Bindung Elementen dar. Diese Klassen sind konzipiert, zum Erstellen von Eingabe und Ausgabe Kanäle zu erleichtern. In einigen Szenarien müssen Sie möglicherweise Standardwerte in diesen vordefinierten Auflistungen zu ändern. Wenn die Eigenschaft, die Sie ändern müssen in MailBindingBase oder die abgeleitete Klasse nicht vorhanden ist, können Sie das Bindungselement separat in einem CustomBinding-Objekt erstellen. Alternativ können Sie die CreateBindingElements Methode alle Bindungselemente in MailBindingBase zurückgegeben aufrufen.

In der Klasse ExchangeWebServiceMailBinding ist z. B. die maximale Nachrichtengröße für empfangene Nachrichten 65.536 Bytes an. Sie können die maximale Größe auf 100.000 Byte erhöhen, indem mithilfe des folgenden Codes zum Festlegen der Eigenschaft MaxReceivedMessageSize.

binding = new ExchangeWebServiceMailBinding(Server, Credential, MailSecurityMode.Message);
bindingElems = binding.CreateBindingElements();
bindingElems.Find<ExchangeWebServiceMailTransportBindingElement>().MaxReceivedMessageSize = 100000;
binding = new CustomBinding(bindingElems);

Sicherheit

Anwendungen, die auf WCF Exchange Server e-Mail-Übermittlungsdienst basieren unterstützen SOAP-Nachrichtensicherheit basierend auf der WS-Security-Protokolls, der Desktopsicherheit-Features für die Klasse HttpTransportBindingElement unterstützt ähnelt. Dieses Sicherheitsfeature beruht auf x. 509-Zertifikate.

Wenn Sie den vordefinierten Satz von Bindungselementen in einer Teilklasse des MailBindingBase-Objekts verwenden, ist Nachrichtensicherheit verfügbar jedoch standardmäßig deaktiviert. Verwenden Sie die Mode-Eigenschaft, um Sicherheit zu aktivieren. Sie können den standardmäßige Verschlüsselungsalgorithmus mithilfe der AlgorithmSuite-Eigenschaft ändern. Wenn die Sicherheit aktiviert ist, ist Basic256Rsa15 der Standardwert.

Der Sicherheitselemente für Bindung, die von Anwendungen unterstützt werden, die WCF-Exchange-Server e-Mail-Übermittlungsdienst sind SecurityBindingElement und AsymmetricSecurityBindingElement.

Hinweis

Mit Nachrichtensicherheit erhöht die Größe jeder Nachricht.Wenn Sie die ExchangeWebServiceMailBinding -Klasse verwenden und Ihre Nachrichten 45,000 Bytes überschreiten, müssen Sie möglicherweise den Wert der Eigenschaft MaxReceivedMessageSize erhöhen.Im Codebeispiel wird im vorherigen Abschnitt veranschaulicht, wie Sie die maximale Nachrichtengröße erhöhen.

Bereitstellung

Für Gerät Bereitstellung sind WCF Exchange Server e-Mail-Übermittlungsdienst DLLs in den .NET Compact Framework CAB-Dateien für Windows Mobile-Geräten geliefert. Die verwalteten Assemblys werden im globalen Assemblycache installiert.

Mail-Transport-DLLs für das Gerät lauten wie folgt:

  • Microsoft.ServiceModel.Channels.Mail.dll

  • Microsoft.ServiceModel.Channels.Mail.WindowsMobile.dll

  • Netcfmail3_5.dll, das als CEMAPI systemeigenen Wrapper verwendet wird

Der .NET Compact Framework WCF-DLLs müssen auch auf dem Gerät vorhanden sein.

Desktop Bereitstellung erfolgt über die .NET Framework msi-Setup-Datei. Die WCF Exchange Server e-Mail-Transport-Funktion ist standardmäßig installiert. Die e-Mail-Transport-Assemblys werden im globalen Assemblycache des Desktops installiert.

WCF Exchange Server Mail-Transport-DLLs für den Desktop lauten wie folgt:

  • Microsoft.ServiceModel.Channels.Mail.dll

  • Microsoft.ServiceModel.Channels.Mail.ExchangeWebService.dll

Der Standarddesktop WCF-DLLs muss auch auf dem Desktop vorhanden sein.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Mithilfe von WCF Exchange Server-Mailtransport

Weitere Ressourcen

Windows Communication Foundation (WCF) Entwicklung und .NET Compact Framework