Intern arbetsflödestjänstvärd
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:
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 beständighetsarkivet.
Information om WorkflowServiceHost
Följande diagram visar hur WorkflowServiceHost meddelanden hanteras lite mer detaljerat:
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 kontrollåtgärder. 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 du ser i diagrammet bearbetas alla meddelanden via WCF-körningen. Begränsning av arbetsflödestjänstens instans uppnås med hjälp MaxConcurrentInstances av egenskapen . 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 för en ny instans eller en instans som körs. Information om värdprincip läses in som avgör hur ohanterade undantag hanteras och hur inaktiva arbetsflödestjänster tas bort och behålls. 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:
Arbetsflödet läses in från XAML och aktivitetsträdet skapas. WorkflowServiceHost går i aktivitetsträdet och skapar tjänstbeskrivningen. Konfigurationen tillämpas på värden. 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
:
Meddelandet tas emot och bearbetas av WCF-kanalstacken. Begränsningar kontrolleras och korrelationsfrågor körs. Om meddelandet är bundet till en befintlig instans levereras meddelandet. Om en ny instans behöver skapas kontrolleras egenskapen Ta emot aktivitetens egenskap CanCreateInstance. Om den är inställd på true skapas en ny instans och meddelandet levereras.
Följande bild visar vad som WorkflowServiceHost händer när det tar emot ett meddelande som är bundet till en mottagningsaktivitet som har CanCreateInstance inställt på false.
Meddelandet tas emot och bearbetas av WCF-kanalstacken. Begränsningar kontrolleras och korrelationsfrågor 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.