Webhosting van een toepassing in de wachtrij
De Windows Process Activation Service (WAS) beheert de activering en levensduur van de werkprocessen die toepassingen bevatten die WCF-services (Windows Communication Foundation) hosten. Het WAS-procesmodel generaliseert het IIS 6.0-procesmodel voor de HTTP-server door de afhankelijkheid van HTTP te verwijderen. Hierdoor kunnen WCF-services zowel HTTP- als niet-HTTP-protocollen gebruiken, zoals net.msmq en msmq.formatname, in een hostingomgeving die ondersteuning biedt voor activering op basis van berichten en biedt de mogelijkheid om een groot aantal toepassingen op een bepaalde computer te hosten.
WAS bevat een Message Queuing-activeringsservice (MSMQ) waarmee een toepassing in de wachtrij wordt geactiveerd wanneer een of meer berichten in een van de wachtrijen worden geplaatst die door de toepassing worden gebruikt. De MSMQ-activeringsservice is een NT-service die standaard automatisch wordt gestart.
Zie Hosting in Windows Process Activation Service voor meer informatie over WAS en de voordelen ervan. Zie Overzicht van wachtrijen voor meer informatie over MSMQ.
Wachtrijadressering in WAS
WAS-toepassingen hebben URI-adressen (Uniform Resource Identifier). Toepassingsadressen hebben twee delen: een basis-URI-voorvoegsel en een toepassingsspecifiek, relatief adres (pad). Deze twee onderdelen bieden het externe adres voor een toepassing wanneer deze worden samengevoegd. Het basis-URI-voorvoegsel wordt samengesteld op basis van de sitebinding en wordt gebruikt voor alle toepassingen onder de site, bijvoorbeeld 'net.msmq://localhost', 'msmq.formatname://localhost' of 'net.tcp://localhost'. Toepassingsadressen worden vervolgens samengesteld door toepassingsspecifieke padfragmenten (zoals '/applicationOne') te nemen en deze toe te voegen aan het basis-URI-voorvoegsel om de volledige toepassings-URI te bereiken, bijvoorbeeld 'net.msmq://localhost/applicationOne'.
De MSMQ-activeringsservice gebruikt de toepassings-URI om overeen te komen met de wachtrij die de MSMQ-activeringsservice moet controleren op berichten. Wanneer de MSMQ-activeringsservice wordt gestart, worden alle openbare en persoonlijke wachtrijen op de computer opgesomd waarop deze is geconfigureerd voor het ontvangen van en bewaken van berichten. Elke 10 minuten vernieuwt de MSMQ-activeringsservice de lijst met wachtrijen die moeten worden bewaakt. Wanneer een bericht in een wachtrij wordt gevonden, komt de activeringsservice overeen met de naam van de wachtrij met de langst overeenkomende toepassings-URI voor de net.msmq-binding en wordt de toepassing geactiveerd.
Notitie
De toepassing die wordt geactiveerd, moet overeenkomen met het voorvoegsel van de wachtrijnaam (langste overeenkomst).
Een wachtrijnaam is bijvoorbeeld: msmqWebHost/orderProcessing/service.svc. Als Toepassing 1 een virtuele map /msmqWebHost/orderProcessing met een service.svc eronder heeft en Application 2 een virtuele map /msmqWebHost met een orderProcessing.svc eronder heeft, wordt Application 1 geactiveerd. Als Toepassing 1 wordt verwijderd, wordt Toepassing 2 geactiveerd.
Notitie
Wanneer er een wachtrij wordt gemaakt, activeren alle berichten die ernaar worden verzonden geen toepassing totdat de MSMQ-activeringsservice de wachtrijlijst vernieuwt. Dit is maximaal 10 minuten vanaf het moment dat de wachtrij is gemaakt. Als u de activeringsservice opnieuw start, wordt ook de wachtrijlijst vernieuwd.
Het effect van privé- en openbare wachtrijen op adressering
De MSMQ-activeringsservice maakt geen onderscheid tussen privé- en openbare wachtrijbewaking. Als zodanig kunt u geen openbare en privéwachtrijen met dezelfde naam hebben. Als u dit doet, kan een web-hostende toepassing worden geactiveerd voor het lezen van een van de wachtrijen.
Wachtrijconfiguratie voor activering
De MSMQ-activeringsservice wordt uitgevoerd als NETWORK SERVICE. Het is de service die wachtrijen bewaakt om toepassingen te activeren. Om toepassingen uit de wachtrij te activeren, moet de wachtrij toegang tot NETWORK SERVICE bieden om berichten in de toegangsbeheerlijst (ACL) te bekijken.
Gifberichten
De verwerking van gifberichten in WCF wordt verwerkt door het kanaal, dat niet alleen detecteert dat een bericht is vergiftigd, maar een verwijdering selecteert op basis van de gebruikersconfiguratie. Als gevolg hiervan bevindt zich één bericht in de wachtrij. De web-hostende toepassing afbreekt opeenvolgende tijden en het bericht wordt verplaatst naar een wachtrij voor opnieuw proberen. Op een punt dat is bepaald door de vertraging van de cyclus voor opnieuw proberen, wordt het bericht verplaatst van de wachtrij voor opnieuw proberen naar de hoofdwachtrij om het opnieuw te proberen. Hiervoor moet het kanaal in de wachtrij actief zijn. Als de toepassing wordt gerecycled door WAS, blijft het bericht in de wachtrij voor opnieuw proberen totdat een ander bericht in de hoofdwachtrij binnenkomt om de toepassing in de wachtrij te activeren. De tijdelijke oplossing in dit geval is het handmatig verplaatsen van het bericht van de wachtrij voor opnieuw proberen naar de hoofdwachtrij om de toepassing opnieuw te activeren.
Subqueue en wachtrij van systeemwachtrij
Een door WAS gehoste toepassing kan niet worden geactiveerd op basis van berichten in een systeemwachtrij, zoals de wachtrij met dode letters van het systeem of subwachtrijen, zoals gifsubwachtrijen. Dit is een beperking voor deze versie van het product.