Přehled služeb pracovních postupů
Služby pracovních postupů jsou služby založené na WCF, které se implementují pomocí pracovních postupů. Služby pracovního postupu jsou pracovní postupy, které používají aktivity zasílání zpráv k odesílání a přijímání zpráv WCF (Windows Communication Foundation). .NET Framework 4.5 zavádí řadu aktivit zasílání zpráv, které umožňují odesílat a přijímat zprávy z pracovního postupu. Další informace o aktivitách zasílání zpráv a o tom, jak je lze použít k implementaci různých vzorů výměny zpráv, najdete v tématu Aktivity zasílání zpráv.
Výhody používání služeb pracovních postupů
S tím, jak se aplikace stále více distribuují, jsou jednotlivé služby zodpovědné za volání jiných služeb, aby některé z nich přesměrovávají. Implementace těchto volání jako asynchronních operací přináší do kódu určitou složitost. Zpracování chyb zvyšuje složitost ve formě zpracování výjimek a poskytuje podrobné informace o sledování. Některé služby jsou často dlouhotrvající a při čekání na vstup můžou zabírat cenné systémové prostředky. Kvůli těmto problémům jsou distribuované aplikace často velmi složité a obtížně se zapisují a udržují. Pracovní postupy představují přirozený způsob vyjádření koordinace asynchronní práce, zejména volání externích služeb. Pracovní postupy jsou také efektivní při reprezentaci dlouhotrvajících obchodních procesů. Jedná se o tyto vlastnosti, díky kterým je pracovní postup skvělým assetem pro vytváření služeb v distribuovaném prostředí.
Implementace služby pracovního postupu
Při implementaci služby WCF definujete řadu kontraktů, které popisují službu a data, která odesílá a přijímá. Data jsou reprezentována jako kontrakty dat a kontrakty zpráv. Služby WCF i pracovních postupů používají definice kontraktů dat a kontraktů zpráv jako součást popisu služby. Samotná služba zveřejňuje metadata (ve formě WSDL) k popisu operací služby. V WCF definují kontrakty služeb a kontrakty operací službu a operace, které podporuje. Ve službě pracovního postupu jsou však tyto kontrakty součástí samotného obchodního procesu. Jsou zpřístupněny v metadatech procesem označovaným jako odvození kontraktu. Při hostování služby pracovního postupu pomocí WorkflowServiceHostdefinice pracovního postupu se prozkoumá a vygeneruje se kontrakt na základě sady aktivit zasílání zpráv nalezených v pracovním postupu. Konkrétně se ke generování kontraktu používají následující aktivity a vlastnosti:
Receive Činnosti
SendReply Činnosti
TransactedReceiveScope Činnosti
Konečným výsledkem odvození kontraktu je popis služby, která používá stejné datové struktury jako služby WCF a kontrakty operací. Tyto informace se pak používají ke zveřejnění WSDL pro službu pracovního postupu.
Poznámka:
Rozhraní .NET Framework 4.6.1 neumožňuje psát služby pracovních postupů pomocí existující definice kontraktu bez další podpory nástrojů. Kontrakty služeb pracovního postupu jsou vytvořeny procesem odvozováním kontraktů, který jsme probírali dříve. Kontrakty zpráv a datové kontrakty jsou však plně podporované.
Služby pracovních postupů a vazby založené na MSMQ
WCF definuje dvě vazby NetMsmqBinding založené na jazyce MSMQ a MsmqIntegrationBinding. Vazby založené na MSMQ se často používají se službami pracovních postupů z důvodu dlouhotrvající povahy těchto služeb. Vazby založené na MSMQ mají ValidityDuration
vlastnost, která určuje, jak dlouho mohou zprávy MSMQ předpokládat, že jsou platné. Vzhledem k dlouhotrvající povaze služeb pracovních postupů je možné, že doba platnosti zprávy MSMQ může uplynou před tím, než ji služba pracovního postupu zpracuje. Proto je velmi důležité nastavit dobu platnosti vazby MSMQ na odpovídající hodnotu. Tato hodnota musí být zvolena na základě pracovního postupu a způsobu zpracování zpráv. Pokud máte například pracovní postup s aktivitou Receive následovanou vlastní aktivitou, která trvá 10 minut, a pak další Receive aktivitu, bude správná hodnota pro ValidityDuration
více než 10 minut.
Hostování služby pracovního postupu
Stejně jako služby WCF musí být hostované služby pracovních postupů. Služby WCF používají ServiceHost třídu k hostování služeb a služeb pracovních postupů, které slouží WorkflowServiceHost k hostování služeb. Podobně jako služby WCF je možné služby pracovních postupů hostovat různými způsoby, například:
Ve spravované aplikaci .NET Framework.
V Internetová informační služba (IIS).
Ve službě aktivace procesu systému Windows (WAS).
Ve spravované službě Systému Windows.
Služby pracovního postupu hostované ve spravované aplikaci .NET Framework nebo spravované službě Systému Windows vytvoří instanci WorkflowServiceHost třídy a předá ji instanci WorkflowService , která obsahuje definici pracovního postupu v rámci Body vlastnosti. Definice pracovního postupu, která obsahuje aktivity zasílání zpráv, je vystavena jako služba pracovního postupu.
Chcete-li hostovat službu pracovního postupu ve službě IIS nebo WAS, umístěte soubor .xamlx obsahující definici služby pracovního postupu do virtuálního adresáře. Výchozí koncový bod (pomocí BasicHttpBinding) se vytvoří automaticky. Další informace najdete v tématu Zjednodušená konfigurace. Můžete také umístit soubor Web.config do virtuálního adresáře a zadat vlastní koncové body. Pokud je definice pracovního postupu v sestavení, můžete umístit soubor .svc do virtuálního adresáře a sestavení pracovního postupu do App_Code adresáře. Soubor .svc musí určit objekt pro hostování služby a třídu, která implementuje službu pracovního postupu. Následující příklad ukazuje, jak zadat objekt pro vytváření hostitelů služby a určit třídu, která implementuje službu pracovního postupu.
<%@ServiceHost Factory="System.ServiceModel.Activities.Activation.WorkflowServiceHostFactory"
Service="EchoService"%>