Dela via


Arbetsflödestjänstvärds interna komponenter

WorkflowServiceHost tillhandahåller en värd för arbetsflödestjänster. Den ansvarar för att lyssna efter inkommande meddelanden och dirigera dem till rätt arbetsflödestjänstinstans, den styr avlastning och beständighet av inaktiva arbetsflöden med mera. Det här avsnittet beskriver hur WorkflowServiceHost bearbetar inkommande meddelanden.

Översikt över WorkflowServiceHost

Klassen WorkflowServiceHost används som värd för arbetsflödestjänster. Den lyssnar efter inkommande meddelanden och dirigerar dem till lämplig tjänstinstans, skapar nya instanser eller läser in befintliga instanser från beständig lagring efter behov. Följande diagram illustrerar på en hög nivå hur WorkflowServiceHost fungerar:

Diagram som ger en översikt av arbetsflödestjänstvärden.

Det här diagrammet visar hur WorkflowServiceHost du läser in arbetsflödestjänstdefinitioner från .xamlx-filer och läser in konfigurationsinformation från en konfigurationsfil. Den läser också in spårningskonfigurationen från spårningsprofilen. WorkflowServiceHost exponerar en slutpunkt för arbetsflödeskontroll som gör att du kan skicka kontrollåtgärder till arbetsflödesinstanser. Mer information finns i Exempel på slutpunkt för arbetsflödeskontroll.

WorkflowServiceHost exponerar också programslutpunkter som lyssnar efter inkommande programmeddelanden. När ett inkommande meddelande tas emot skickas det till lämplig arbetsflödestjänstinstans (om det för närvarande läses in). Vid behov skapas en ny arbetsflödesinstans. Eller om en befintlig instans har sparats, läses den in från lagringsplatsen.

Information om WorkflowServiceHost

Följande diagram visar hur WorkflowServiceHost meddelanden hanteras lite mer detaljerat:

Diagram som visar arbetsflödestjänstens värdmeddelandeflöde.

Det här diagrammet visar tre olika slutpunkter, en programslutpunkt, en slutpunkt för arbetsflödeskontroll och en arbetsflödesvärdslutpunkt. Programslutpunkten tar emot meddelanden som är bundna till en specifik arbetsflödesinstans. Slutpunkten för arbetsflödeskontroll lyssnar efter kontrolloperationer. Arbetsflödet som är värd för slutpunkten lyssnar efter meddelanden som gör WorkflowServiceHost att arbetsflöden som inte är tjänstbaserade läses in och körs. Som visas i diagrammet bearbetas alla meddelanden via WCF-runtime. Begränsning av arbetsflödestjänstens instans uppnås med hjälp av egenskapen MaxConcurrentInstances. Den här egenskapen begränsar antalet samtidiga arbetsflödestjänstinstanser. När den här begränsningen överskrids placeras eventuella ytterligare begäranden för nya arbetsflödestjänstinstanser eller begäranden om att aktivera instanser av beständiga arbetsflöden i kö. De köade begärandena bearbetas i FIFO-ordning oavsett om de är begäranden om en ny instans eller en instans som redan körs och är kvarstående. Information om värdprincip läses in, vilket avgör hur ohanterade undantag hanteras och hur inaktiva arbetsflödestjänster avlastas och sparas. Mer information om de här avsnitten finns i Så här konfigurerar du ohanterat undantagsbeteende för arbetsflöde med WorkflowServiceHost och Så här konfigurerar du inaktivt beteende med WorkflowServiceHost. Arbetsflödesinstanser sparas enligt värdprinciper och läses in igen när det behövs. Mer information om arbetsflödespersistence finns i: Så här konfigurerar du beständighet med WorkflowServiceHost, skapar en långvarig arbetsflödestjänst och arbetsflödespersistence.

Följande bild visar flödet när WorkflowServiceHost.Open anropas:

Diagram som visar flödet när WorkflowServiceHost.Open anropas.

Arbetsflödet läses in från XAML och aktivitetsträdet skapas. WorkflowServiceHost traverserar aktivitetsträdet och skapar tjänstbeskrivningen. Konfigurationen tillämpas på värddatorn. Slutligen börjar värden lyssna efter inkommande meddelanden.

Följande bild visar vad som WorkflowServiceHost gör när det tar emot ett meddelande som är bundet till en mottagningsaktivitet som har CanCreateInstance inställt på true:

Beslutsträd som används av WFS-värden när det tar emot ett meddelande och CanCreateInstance är sant.

Meddelandet tas emot och bearbetas av WCF-kanalstacken. Reglage kontrolleras och korrelationsförfrågningar körs. Om meddelandet är bundet till en befintlig instans levereras meddelandet. Om en ny instans behöver skapas, kontrolleras egenskapen CanCreateInstance för Ta emot-aktiviteten. Om den är inställd på true skapas en ny instans och meddelandet levereras.

Följande illustration visar vad WorkflowServiceHost gör när den tar emot ett meddelande som är avsett för en Receive-aktivitet som har CanCreateInstance inställt på false.

Beslutsträd som används av WFS Host när ett meddelande tas emot och CanCreateInstance är falskt.

Meddelandet tas emot och bearbetas av WCF-kanalstacken. Reglage kontrolleras och korrelationsförfrågningar körs. Meddelandet är bundet till en befintlig instans (eftersom CanCreateInstance är falskt) så instansen läses in från beständighetsarkivet, bokmärket återupptas och arbetsflödet körs.

Varning

Det går inte att öppna arbetsflödestjänstens värd om SQL Server endast är konfigurerat att lyssna på NamedPipe-protokollet.

Se även