Freigeben über


Webhosting einer in die Warteschlange gestellten Anwendung

Der Windows-Prozessaktivierungsdienst (WAS) verwaltet die Aktivierung und Lebensdauer der Arbeitsprozesse, die Anwendungen enthalten, die Windows Communication Foundation (WCF)-Dienste hosten. Das WAS-Prozessmodell generalisiert das IIS 6.0-Prozessmodell für den HTTP-Server, indem die Abhängigkeit von HTTP entfernt wird. Dadurch können WCF-Dienste sowohl HTTP- als auch Nicht-HTTP-Protokolle wie net.msmq und msmq.formatname in einer Hostingumgebung verwenden, die die nachrichtenbasierte Aktivierung unterstützt und die Möglichkeit bietet, eine große Anzahl von Anwendungen auf einem bestimmten Computer zu hosten.

WAS enthält einen MsMQ-Aktivierungsdienst (Message Queuing), der eine in die Warteschlange eingereihte Anwendung aktiviert, wenn eine oder mehrere Nachrichten in einer der von der Anwendung verwendeten Warteschlangen platziert werden. Der MSMQ-Aktivierungsdienst ist ein NT-Dienst, der standardmäßig automatisch gestartet wird.

Weitere Informationen zu WAS und seinen Vorteilen finden Sie unter "Hosting in Windows Process Activation Service". Weitere Informationen zu MSMQ finden Sie unter "Queues Overview".

Adressieren von Warteschlangen in WAS

WAS-Anwendungen weisen URI-Adressen (Uniform Resource Identifier) auf. Anwendungsadressen haben zwei Teile: ein Basis-URI-Präfix und eine anwendungsspezifische relative Adresse (Pfad). Diese beiden Teile stellen die externe Adresse für eine Anwendung bereit, wenn sie miteinander verbunden sind. Das Basis-URI-Präfix wird aus der Websitebindung erstellt und für alle Anwendungen unter der Website verwendet, z. B. "net.msmq://localhost", "msmq.formatname://localhost" oder "net.tcp://localhost". Anwendungsadressen werden dann erstellt, indem anwendungsspezifische Pfadfragmente (z. B. "/applicationOne") verwendet und an das Basis-URI-Präfix angefügt werden, um zum vollständigen Anwendungs-URI zu gelangen, z. B. "net.msmq://localhost/applicationOne".

Der MSMQ-Aktivierungsdienst verwendet den Anwendungs-URI, um der Warteschlange zu entsprechen, die der MSMQ-Aktivierungsdienst für Nachrichten überwachen muss. Wenn der MSMQ-Aktivierungsdienst startet, listet er alle öffentlichen und privaten Warteschlangen auf dem Computer auf, für deren Empfang er konfiguriert ist, und überwacht ihn auf Nachrichten. Alle 10 Minuten aktualisiert der MSMQ-Aktivierungsdienst die Liste der zu überwachenden Warteschlangen. Wenn eine Nachricht in einer Warteschlange gefunden wird, vergleicht der Aktivierungsdienst den Warteschlangennamen mit dem längsten übereinstimmenden Anwendungs-URI für die net.msmq-Bindung und aktiviert die Anwendung.

Hinweis

Die aktivierte Anwendung muss mit dem Präfix des Warteschlangennamens übereinstimmen (längstmögliche Übereinstimmung).

Beispielsweise lautet ein Warteschlangenname: msmqWebHost/orderProcessing/service.svc. Wenn Anwendung 1 über ein virtuelles Verzeichnis /msmqWebHost/orderProcessing mit einem dienst.svc unter ihr verfügt und Anwendung 2 über ein virtuelles Verzeichnis "/msmqWebHost" mit einem "orderProcessing.svc" verfügt, wird Anwendung 1 aktiviert. Wenn Anwendung 1 gelöscht wird, wird Anwendung 2 aktiviert.

Hinweis

Wenn eine Warteschlange erstellt wird, führen an sie gesendete Nachrichten nicht zur Aktivierung einer Anwendung, bis der MSMQ-Aktivierungsdienst die Warteschlangenliste aktualisiert, was spätestens 10 Minuten nach der Erstellung der Warteschlange geschieht. Durch den Neustart des Aktivierungsdiensts wird auch die Warteschlangenliste aktualisiert.

Auswirkungen privater und öffentlicher Warteschlangen auf die Adressierung

Der MSMQ-Aktivierungsdienst unterscheidet nicht zwischen der Überwachung privater und öffentlicher Warteschlangen. Daher können Sie keine öffentlichen und privaten Warteschlangen mit demselben Namen haben. Anderenfalls wird eine im Internet gehostete Anwendung möglicherweise beim Lesen aus einer der beiden Warteschlangen aktiviert.

Warteschlangenkonfiguration zur Aktivierung

Der MSMQ-Aktivierungsdienst wird als NETZWERKDIENST ausgeführt. Es ist der Dienst, der Warteschlangen überwacht, um Anwendungen zu aktivieren. Zum Aktivieren von Anwendungen aus der Warteschlange muss die Warteschlange NETZWERKDIENST-Zugriff bieten, um Nachrichten in der Zugriffssteuerungsliste einzusehen.

Giftnachrichten

Die Behandlung von Giftnachrichten in WCF wird vom Kanal behandelt, was nicht nur erkennt, dass eine Nachricht vergiftet wird, sondern eine Löschung basierend auf der Benutzerkonfiguration auswählt. Daher gibt es eine einzelne Nachricht in der Warteschlange. Die webgehostete Anwendung bricht wiederholt ab, und die Nachricht wird in eine erneute Warteschlange verschoben. Zu einem von der Zeitverzögerung zwischen den Wiederholungszyklen festgelegten Zeitpunkt wird die Nachricht aus der Wiederholungswarteschlange für einen erneuten Versuch in die Hauptwarteschlange verschoben. Dies erfordert jedoch, dass der in die Warteschlange eingereihte Kanal aktiv ist. Wenn die Anwendung von WAS wiederverwendet wird, verbleibt die Nachricht in der Wiederholungswarteschlange, bis eine andere Nachricht in der Hauptwarteschlange eintrifft, um die in die Warteschlange eingereihte Anwendung zu aktivieren. Die Problemumgehung in diesem Fall besteht darin, die Nachricht manuell aus der Wiederholungswarteschlange zurück in die Hauptwarteschlange zu verschieben, um die Anwendung erneut zu aktivieren.

Einschränkung für Unterwarteschlangen und Systemwarteschlangen

Eine in WAS gehostete Anwendungen kann in einer Systemwarteschlange wie der systemweiten Warteschlange für unzustellbare Nachrichten oder in Unterwarteschlangen wie der Unterwarteschlange für potenziell schädliche Nachrichten nicht basierend auf Nachrichten aktiviert werden. Dies ist eine Einschränkung für diese Version des Produkts.

Siehe auch