Webhosting einer Anwendung mit QueuingWeb Hosting a Queued Application

Windows Process Activation Service (WAS) verwaltet die Aktivierung und Lebensdauer der Arbeitsprozesse, die Anwendungen, die Hostdienste Windows Communication Foundation (WCF) enthalten.The Windows Process Activation Service (WAS) manages the activation and lifetime of the worker processes that contain applications that host Windows Communication Foundation (WCF) services. Das WAS-Prozessmodell verallgemeinert das IIS 6.0IIS 6.0-Prozessmodell für den HTTP-Server durch das Entfernen der Abhängigkeit von HTTP.The WAS process model generalizes the IIS 6.0IIS 6.0 process model for the HTTP server by removing the dependency on HTTP. Dadurch wird die Verwendung von HTTP- und nicht-HTTP-Protokollen wie net.msmq und msmq.formatname in einer Hostingumgebung, die Nachrichtenbasierte Aktivierung unterstützt und bietet die Möglichkeit, eine große Anzahl von Anwendungen auf einem Computer Hosten von WCF-Dienste.This allows WCF services to use both HTTP and non-HTTP protocols, such as net.msmq and msmq.formatname, in a hosting environment that supports message-based activation and offers the ability to host a large number of applications on a given computer.

WAS enthält einen Message Queuing (MSMQ)-Aktivierungsdienst, der eine Anwendung mit Queuing aktiviert, wenn mindestens eine Nachricht in einer der von der Anwendung verwendeten Warteschlangen platziert wird.WAS includes a Message Queuing (MSMQ) activation service that activates a queued application when one or more messages are placed in one of the queues used by the application. Der MSMQ-Aktivierungsdienst ist ein NT-Dienst, der standardmäßig automatisch gestartet wird.The MSMQ activation service is an NT service that is automatically started by default.

Weitere Informationen zur WAS und seine Vorteile finden Sie unter Hosten in Windows Process Activation Service.For more information about WAS and its benefits, see Hosting in Windows Process Activation Service. Weitere Informationen zu MSMQ, finden Sie unter Nachrichtenwarteschlangen (Übersicht)For more information about MSMQ, see Queues Overview

Adressieren von Warteschlangen in WASQueue Addressing in WAS

WAS-Anwendungen weisen Uniform Resource Identifier (URI)-Adressen auf.WAS applications have Uniform Resource Identifier (URI) addresses. Anwendungsadressen haben zwei Teile: einen Basis-URI-Präfix und eine anwendungsspezifische, relative Adresse (Pfad).Application addresses have two parts: a base URI prefix and an application-specific, relative address (path). Diese beiden Teile stellen beim Zusammenfügen die externe Adresse für eine Anwendung bereit.These two parts provide the external address for an application when joined together. Die base-URI-Präfix wird aus der sitebindung erstellt und wird für alle Anwendungen innerhalb der Website, z. B. "MSMQ://localhost", "Formatname://localhost" oder "Net. TCP://localhost" verwendet.The base URI prefix is constructed from the site binding and is used for all the applications under the site, for example, "net.msmq://localhost", "msmq.formatname://localhost", or "net.tcp://localhost". Anwendungsadressen werden anschließend erstellt, indem Sie anwendungsspezifische pfadfragmente (wie z. B. "/ ApplicationOne") und Anfügen an den Basis-URI-Präfix, das den vollständigen Anwendungs-URI, z. B. ankommen "MSMQ://localhost/applicationone".Application addresses are then constructed by taking application-specific path fragments (such as "/applicationOne") and appending them to the base URI prefix to arrive at the full application URI, for example, "net.msmq://localhost/applicationOne".

Der MSMQ-Aktivierungsdienst verwendet den Anwendungs-URI zum Abgleichen der Warteschlange, die der MSMQ-Aktivierungsdienst auf Nachrichten überwachen muss.The MSMQ activation service uses the application URI to match the queue that the MSMQ activation service must monitor for messages. 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.When the MSMQ activation service starts, it enumerates all public and private queues on the computer it is configured to receive from and monitors them for messages. Alle 10 Minuten aktualisiert der MSMQ-Aktivierungsdienst die Liste der zu überwachenden Warteschlangen.Every 10 minutes, the MSMQ activation service refreshes the list of queues to monitor. Wenn in einer Warteschlange eine Nachricht gefunden wird, gleicht der Aktivierungsdienst den Warteschlangennamen entsprechend dem längsten übereinstimmenden Anwendungs-URI für die Bindung net.msmq ab, und aktiviert die Anwendung.When a message is found in a queue, the activation service matches the queue name to the longest matching application URI for the net.msmq binding and activates the application.

Hinweis

Die aktivierte Anwendung muss mit dem Präfix des Warteschlangennamens übereinstimmen (längstmögliche Übereinstimmung).The application being activated must match (longest match) the prefix of the queue name.

Ein Warteschlangenname lautet beispielsweise msmqWebHost/orderProcessing/service.svc.For example, a queue name is: msmqWebHost/orderProcessing/service.svc. Wenn Anwendung 1 über ein virtuelles Verzeichnis /msmqWebHost/orderProcessing mit service.svc darunter verfügt und Anwendung 2 über ein virtuelles Verzeichnis /msmqWebHost mit orderProcessing.svc darunter verfügt, wird Anwendung 1 aktiviert.If Application 1 has a virtual directory /msmqWebHost/orderProcessing with a service.svc under it, and Application 2 has a virtual directory /msmqWebHost with an orderProcessing.svc under it, Application 1 is activated. Wenn Anwendung 1 gelöscht wird, wird Anwendung 2 aktiviert.If Application 1 is deleted, Application 2 is activated.

Hinweis

Beim Erstellen einer Warteschlange aktivieren gesendete Nachrichten eine Anwendung erst dann, wenn der MSMQ-Aktivierungsdienst die Warteschlangenliste aktiviert; dies geschieht maximal 10 Minuten nach dem Erstellen der Warteschlange.When a queue is created, any messages sent to it do not activate an application until the MSMQ activation service refreshes the queue list, which is, at most, 10 minutes from the time the queue was created. Beim Neustart des Aktivierungsdienstes wird auch die Warteschlangenliste aktualisiert.Restarting the activation service refreshes the queue list as well.

Die Auswirkung privater und öffentlicher Warteschlangen auf die AdressierungThe Effect of Private and Public Queues on Addressing

Der MSMQ-Aktivierungsdienst unterscheidet nicht zwischen privater und öffentlicher Warteschlangenüberwachung.The MSMQ activation service does not distinguish between private and public queue monitoring. Öffentliche und private Warteschlangen sollten nicht den gleichen Namen haben.As such, you cannot have public and private queues with the same name. Anderenfalls wird eine im Internet gehostete Anwendung möglicherweise beim Lesen aus einer der beiden Warteschlangen aktiviert.If you do, a Web-hosted application may get activated reading from either of the queues.

Warteschlangenkonfiguration zur AktivierungQueue Configuration for Activation

Der MSMQ-Aktivierungsdienst wird als NETZWERKDIENST ausgeführt.The MSMQ activation service runs as NETWORK SERVICE. Dieser Dienst überwacht Warteschlangen zum Aktivieren von Anwendungen.It is the service that monitors queues to activate applications. Zum Aktivieren von Anwendungen aus der Warteschlange muss die Warteschlange NETZWERKDIENST-Zugriff bieten, um Nachrichten in der Zugriffssteuerungsliste einzusehen.For it to activate applications from the queue, the queue must provide for NETWORK SERVICE access to peek for messages in its access control list (ACL).

Nicht verarbeitbare NachrichtenPoison Messaging

In WCF Handhabung beschädigter Nachrichten erfolgt durch den Kanal, der nicht nur feststellt, dass eine Nachricht beschädigt wurde, aber ein basierend auf der Benutzerkonfiguration Disposition auswählt.Poison message handling in WCF is handled by the channel, which not only detects that a message is poisoned but selects a disposition based on user configuration. Als Ergebnis gibt es eine einzelne Nachricht in der Warteschlange.As a result, there is a single message in the queue. Die im Internet gehostete Anwendung bricht mehrmals hintereinander ab, und die Nachricht wird in eine Wiederholungswarteschlange verschoben.The Web-hosted application aborts successive times and the message is moved to a retry queue. 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.At a point dictated by the retry cycle delay, the message is moved from the retry queue to the main queue to try again. Dazu muss jedoch der in der Warteschlange stehende Kanal aktiv sein.But this requires the queued channel to be active. Wenn die Anwendung vom WAS wiederverwendet wird, verbleibt die Nachricht in der Wiederholungswarteschlange, bis eine weitere Nachricht zum Aktivieren der Anwendung mit Queuing in der Hauptwarteschlange eingeht.If the application is recycled by WAS, then the message remains in the retry queue until another message arrives in the main queue to activate the queued application. In diesem Fall kann das Problem behoben werden, indem die Nachricht manuell aus der Wiederholungswarteschlange zurück in die Hauptwarteschlange verschoben wird, um die Anwendung erneut zu aktivieren.The workaround in this case is to move the message manually from the retry queue back to the main queue to reactivate the application.

Einschränkung für Unterwarteschlangen und SystemwarteschlangenSubqueue and System Queue Caveat

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.A WAS-hosted application cannot be activated based on messages in a system queue, such as the system-wide dead-letter queue, or sub-queues, such as poison sub-queues. Dies ist eine Einschränkung für diese Produktversion.This is a limitation for this version of the product.

Siehe auchSee Also

Behandlung nicht verarbeitbarer NachrichtenPoison Message Handling
Dienstendpunkte und Adressieren von WarteschlangenService Endpoints and Queue Addressing