Specifické funkce Windows Workflow Foundation
.NET Framework 4 přidává do Windows Workflow Foundation řadu funkcí. Tento dokument popisuje řadu nových funkcí a poskytuje podrobnosti o scénářích, ve kterých můžou být užitečné.
Aktivity zasílání zpráv
Aktivity zasílání zpráv (Receive, SendReply, Send, ReceiveReply) slouží k odesílání a přijímání zpráv WCF z vašeho pracovního postupu. Receive a SendReply aktivity se používají k vytvoření operace služby Windows Communication Foundation (WCF), která je vystavena prostřednictvím WSDL stejně jako standardní webové služby WCF. Send a ReceiveReply používají se k využívání webové služby podobné WCF ChannelFactory. Prostředí pro přidání odkazu na službu existuje také pro základ pracovního postupu, který generuje předem nakonfigurované aktivity.
Začínáme s aktivitami zasílání zpráv
V sadě Visual Studio 2012 vytvořte projekt aplikace služby pracovního postupu WCF. Na Receive plátno se umístí pár a SendReply pár.
Klikněte pravým tlačítkem myši na projekt a vyberte Přidat odkaz na službu. Přejděte na existující webovou službu WSDL a klikněte na tlačítko OK. Sestavte projekt tak, aby zobrazoval vygenerované aktivity (implementované pomocí Send a ReceiveReply) v sadě nástrojů.
Ukázkový scénář aktivit zasílání zpráv
Služba BestPriceFinder
vyzývá více leteckých služeb, aby našel nejlepší cenu letenky pro konkrétní trasu. Implementace tohoto scénáře by vyžadovala použití aktivit zpráv k přijetí žádosti o cenu, načtení cen z back-endových služeb a odpovídání na žádost o cenu s nejlepší cenou. K vytvoření obchodní logiky pro výpočet nejlepší ceny byste také museli použít jiné předplacené aktivity.
Workflowservicehost
Jedná se WorkflowServiceHost o předem zadaného hostitele pracovního postupu, který podporuje více instancí, konfigurace a zasílání zpráv WCF (i když pracovní postupy nejsou potřeba k hostování zasílání zpráv). Integruje se také s trvalostí, sledováním a řízením instancí prostřednictvím sady chování služby. Stejně jako WCF ServiceHostWorkflowServiceHost může být hostovaný v konzole, v aplikaci WinForms/WPF nebo ve službě Windows nebo ve webovém hostování (jako soubor .xamlx) ve službě IIS nebo WAS.
Začínáme s hostitelem služby pracovního postupu
V sadě Visual Studio 2010 vytvořte projekt aplikace služby pracovního postupu WCF: tento projekt se nastaví tak, aby se používal WorkflowServiceHost v prostředí webového hostitele.
Pokud chcete hostovat pracovní postup bez zasílání zpráv, přidejte vlastní WorkflowHostingEndpoint , který vytvoří instanci na základě zprávy.
Instance pracovního postupu lze řídit (např. pozastavit nebo ukončit) přidáním a WorkflowControlEndpoint WorkflowServiceHost následným WorkflowControlClientpoužitím .
Ukázky pro tyto WorkflowServiceHost části najdete v následujících částech:
Aplikace: Pozastavená správa instancí
Scénář WorkflowServiceHost
Služba BestPriceFinder vyzývá více leteckých služeb, aby našla nejlepší cenu letenky pro konkrétní trasu. Implementace tohoto scénáře by vyžadovala hostování pracovního postupu v WorkflowServiceHost. Aktivity zpráv by také používaly k přijetí žádosti o cenu, načtení cen z back-endových služeb a odpovídání na žádost o cenu s nejlepší cenou.
Korelace
Korelace je jedna ze dvou věcí:
Způsob seskupení zpráv; to znamená vztah mezi zprávou žádosti a odpovědí.
Způsob mapování části dat na instanci služby
Začínáme
Pokud chcete začít s korelací, vytvořte v sadě Visual Studio nový projekt. Vytvořte proměnnou typu CorrelationHandle.
Příkladem korelace používané k seskupení zpráv je korelace žádosti a odpovědi, která seskupuje zprávy dohromady.
Receive V aktivitě klikněte na CorrelationInitializers vlastnost a přidejte RequestReplyCorrelationInitializer pomocí CorrelationHandle vytvořené v prvním kroku výše.
Vytvořte SendReply aktivitu tak, že kliknete pravým tlačítkem myši na Receive možnost Vytvořit sendReply a kliknete na Vytvořit příkaz SendReply. Vložte ho do pracovního postupu po aktivitě Receive .
Příkladem mapování části dat na instanci služby je korelace založená na obsahu, která mapuje část dat (například ID objednávky) na konkrétní instanci pracovního postupu.
- V jakékoli aktivitě zasílání zpráv klikněte na
CorrelationInitializers
vlastnost a přidejte QueryCorrelationInitializer pomocí CorrelationHandle proměnné vytvořené výše. V rozevírací nabídce poklikejte na požadovanou vlastnost zprávy (např. ORDERID).CorrelatesWith
Nastavte vlastnost na proměnnou použitou CorrelationHandle výše.
- V jakékoli aktivitě zasílání zpráv klikněte na
Scénář korelace
Pracovní postup zpracování objednávek slouží ke zpracování nových objednávek a aktualizaci existujících objednávek, které jsou v procesu. Implementace tohoto scénáře by vyžadovala hostování pracovního postupu WorkflowServiceHost a používání aktivit zasílání zpráv. Vyžaduje také korelaci založenou orderId
na tom, aby se zajistilo, že se aktualizace provádějí ve správném pracovním postupu.
Zjednodušená konfigurace
Schéma konfigurace WCF je složité a poskytuje uživatelům mnoho těžko najít funkce. V rozhraní .NET Framework 4.6.1 jsme se zaměřili na pomoc uživatelům WCF s konfigurací služeb s následujícími funkcemi:
Odebrání nutnosti explicitní konfigurace jednotlivých služeb Pokud pro vaši službu nenakonfigurujete žádné <prvky služby> a vaše služba nedefinuje žádný koncový bod prostřednictvím kódu programu, sada koncových bodů se automaticky přidá do vaší služby, jednu na základní adresu služby a smlouvu implementovanou vaší službou.
Umožňuje uživateli definovat výchozí hodnoty pro vazby a chování WCF, které se použijí pro služby bez explicitní konfigurace.
Standardní koncové body definují opakovaně použitelné předkonfigurované koncové body, které mají pevné hodnoty pro jednu nebo více vlastností koncového bodu (adresa, vazba a kontrakt) a umožňují definovat vlastní vlastnosti.
Nakonec vám umožní provádět centrální správu konfigurace klienta WCF, což je užitečné ve scénářích, ConfigurationChannelFactory<TChannel> ve kterých je vybrána nebo změněna konfigurace po době načítání domény aplikace.
Začínáme
Scénáře zjednodušené konfigurace
Zkušený vývojář ASMX chce začít používat WCF. WCF se ale zdá být příliš komplikovaný! Jaké jsou všechny informace, které potřebuji zapsat do konfiguračního souboru? V .NET 4 se dokonce můžete rozhodnout, že nemáte vůbec konfigurační soubor.
Stávající sada služeb WCF je velmi obtížné konfigurovat a udržovat. Konfigurační soubor obsahuje tisíce řádků kódu XML, které jsou extrémně nebezpečné pro dotykové ovládání. Je potřeba pomoct snížit množství kódu na něco, co je možné spravovat.
Překladač kontraktů dat
V rozhraní .NET Framework 3.5 bylo v návrhu známých typů několik omezení:
Dynamické přidávání známých typů během serializace nebo deserializace nebylo možné.
Serializátory nemohly řešit neznámé informace xsi:type.
Uživatelé nebylo možné určit, k jakému typu xsi:type by se chtěli připojit, například zmenšit velikost instance serializace na drátu.
DataContractResolver tyto problémy řeší v rozhraní .NET Framework 4.5.
Začínáme
Ukázky:
Scénáře překladače kontraktů dat
Vyhněte se deklarování desítek KnownTypeAttribute objektů ve službě.
Zmenšení velikosti objektu blob XML
Vývojový diagram
Vývojový diagram je dobře známé paradigma, které vizuálně znázorňuje problémy s doménou. Jedná se o nový styl toku řízení, který představujeme v rozhraní .NET Framework 4. Základní charakteristikou vývojového diagramu je, že se v daném okamžiku provádí pouze jedna aktivita. Vývojové diagramy můžou vyjádřit smyčky a alternativní výsledky, ale nemůžou nativně vyjádřit souběžné spouštění více uzlů.
Začínáme
V sadě Visual Studio 2012 vytvořte konzolovou aplikaci pracovního postupu. Přidejte vývojový diagram v návrháři pracovního postupu.
Funkce vývojového diagramu používá následující třídy:
Ukázky:
Dokumentace k návrháři:
Scénáře vývojových diagramů
Aktivitu vývojového diagramu lze použít k implementaci hry pro hádání. Hádací hra je velmi jednoduchá: počítač vybere náhodné číslo a hráč musí toto číslo odhadnout. Když hráč odešle každý odhad, počítač mu zobrazí nápovědu (tj. "zkuste nižší číslo"). Pokud hráč najde číslo za méně než 7 pokusů, obdrží od počítače zvláštní blahopřejeme. Tuto hru lze implementovat pomocí kombinace následujících procedurálních aktivit:
Procedurální aktivity (Sequence, If, ForEach, Switch, Assign, Do While, While)
Procedurální aktivity poskytují mechanismus modelování sekvenčního toku řízení pomocí konceptů, které jsou pro programátory známé. Tyto aktivity umožňují tradičně strukturované programovací jazyky a v případě potřeby poskytují paritu jazyka s běžnými procedurálními jazyky, jako jsou C# a Visual Basic.
Začínáme
V sadě Visual Studio 2012 vytvořte konzolovou aplikaci pracovního postupu. Přidejte procedurální aktivity v návrháři pracovního postupu.
Ukázky:
Dokumentace k návrháři:
Scénáře procedurálních aktivit
Parallel: Intranetový systém správy dokumentů má pracovní postup schválení dokumentu. Dokumenty musí schválit lidé v několika odděleních, aby je mohli publikovat na intranetu. Pro schválení neexistuje zavedená objednávka; k nim může dojít kdykoli, když je dokument ve fázi "čeká na schválení". Když uživatel odešle dokument ke kontrole, musí ho schválit jeho přímý manažer, správce intranetu a interní správce komunikace.
ParallelForEach<T>: Aplikace WF spravuje firemní nákupy ve velké společnosti. Firemní pravidla určují, že před plánováním jakékoli nákupní operace se vyžadují ocenění tří různých dodavatelů. Zaměstnanec z nákupního oddělení vybere ze seznamu dodavatelů společnosti tři dodavatele. Jakmile budou tito dodavatelé vybráni a upozorněni, společnost počká na své ekonomické návrhy. Návrhy mohou přijít v libovolném pořadí. K implementaci tohoto scénáře ve WF použijeme ParallelForEach<T> iteraci prostřednictvím naší kolekce dodavatelů a požádáme o jejich ekonomické návrhy. Po shromáždění všech nabídek se vybere a zobrazí nejlepší nabídka.
InvokeMethod
Aktivita InvokeMethod umožňuje vyvolání veřejných metod v objektech nebo typech v oboru. Podporuje vyvolání instancí a statických metod s parametry (včetně polí parametrů) a obecných metod. Umožňuje také synchronně a asynchronně spouštějící metodu.
Začínáme
V sadě Visual Studio 2012 vytvořte konzolovou aplikaci pracovního postupu. InvokeMethod Přidejte aktivitu v návrháři pracovního postupu a nakonfigurujte pro ni statické metody a metody instance.
Dokumentace návrháře: Návrhář aktivity InvokeMethod
Scénáře InvokeMethod
Je třeba vyvolat metodu v objektu v oboru. Například hodnotu je třeba přidat do slovníku. Vyvolá se metoda Add instance slovníku a klíč a hodnota jsou k dispozici.
U staršího objektu CLR je potřeba vyvolat metodu. Místo vytvoření vlastní aktivity pro zabalení volání této starší třídy, pokud je v oboru během provádění pracovního postupu, InvokeMethod lze použít.
Aktivity zpracování chyb
Aktivita TryCatch poskytuje mechanismus pro zachytávání výjimek, ke kterým dochází během provádění sady obsažených aktivit (podobně jako u konstruktoru Try/Catch v jazyce C# a Visual Basic). TryCatch poskytuje zpracování výjimek na úrovni pracovního postupu. Když dojde k vyvolání neošetřené výjimky, pracovní postup se přeruší a blok Finally se nespustí. Toto chování je konzistentní s jazykem C#.
Začínáme
V sadě Visual Studio 2012 vytvořte konzolovou aplikaci pracovního postupu. TryCatch Přidejte aktivitu v návrháři pracovního postupu.
Ukázka: Zpracování chyb v aktivitě vývojového diagramu pomocí tryCatch
Dokumentace návrháře: Návrháři aktivit zpracování chyb
Scénáře zpracování chyb
Je potřeba spustit sadu aktivit a při výskytu chyby je potřeba provést konkrétní logiku. Pokud se během této logiky zpracování chyb zjistí, že se chyba nedá obnovit, výjimka se znovu obnoví a nadřazená aktivita (nebo hostitel) problém vyřeší.
Výběr aktivity
Pick Aktivita poskytuje modelování toku řízení na základě událostí ve WF. Pick obsahuje mnoho větví, ve kterých každá větev čeká na výskyt určité události před spuštěním. V tomto nastavení se chová podobně jako Switch<T> aktivita, Pick na které bude aktivita spouštět pouze jednu ze sady událostí, které naslouchá. Každá větev je řízená událostí a událost, která nastane, spustí nejprve odpovídající větev. Všechny ostatní větve ruší a přestanou naslouchat událostem.
Začínáme
V sadě Visual Studio 2012 vytvořte konzolovou aplikaci pracovního postupu. Pick Přidejte aktivitu v návrháři pracovního postupu.
Ukázka: Použití aktivity výběru
Dokumentace návrháře: Výběr návrháře aktivit
Vybrat scénář
Uživatel musí být vyzván k zadání vstupu. Za normálních okolností by vývojář použil volání metody, jako ReadLine je výzva k zadání vstupu uživatele. Problém s tímto nastavením spočívá v tom, že program počká, dokud uživatel něco nezadá. V tomto scénáři je potřeba vypršení časového limitu k odblokování blokující aktivity. Běžný scénář je takový, který vyžaduje dokončení úkolu v daném časovém období. Časový limit blokující aktivity je scénář, ve kterém funkce Pick přidává velkou hodnotu.
Služba směrování WCF
Směrovací služba je navržená tak, aby byla obecným softwarovým směrovačem, který umožňuje řídit tok zpráv WCF mezi vašimi klienty a službami. Služba Směrování umožňuje oddělit klienty od vašich služeb, což vám dává mnohem větší volnost z hlediska konfigurací, které můžete podporovat, a flexibilitu, kterou máte při zvažování toho, jak hostovat služby. V rozhraní .NET Framework 3.5 byly klienti a služby úzce svázáni; klient musel vědět o všech službách, se kterými potřeboval mluvit a kde se nacházel. Kromě toho technologie WCF v rozhraní .NET Framework 3.5 měla následující omezení:
Zpracování chyb bylo složité, protože tato logika musela být pevně zakódovaná do klienta.
Klienti a služby museli vždy používat stejné vazby.
Služby byly zřídka dobře zohledněny: je jednodušší, aby klient komunikoval s jednou službou, která implementuje vše, a nemuseli si vybírat mezi více službami.
Směrovací služba v .NET 4 je navržená tak, aby se tyto problémy snadněji vyřešily. Nová služba směrování má následující funkce:
Směrování na základě obsahu (MessageFilter objekty zkontrolují zprávu a určí, kam se má odeslat.)
Přemostění protokolu (přenos a zpráva)
Zpracování chyb (směrovač zachytí výjimky komunikace a převzetí služeb při selhání do koncových bodů zálohování)
Dynamická aktualizace MessageFilterTable<TFilterData> (v paměti) a konfigurace směrování
Začínáme
Dokumentace: Směrování
Ukázky: Služby směrování [ukázky WCF]
Blog: Pravidla směrování!
Scénáře směrování
Služba směrování je užitečná v následujících scénářích:
Klienti můžou komunikovat s více službami, aniž by je museli řešit přímo.
Klienti můžou na požadavku klienta provádět další logiku, aby zjistili, kde se má směrovat.
Dekompisujte operace, které klient provádí, do více implementací služeb bez refaktoringu klienta.
Klienti a služby můžou mluvit různé vazby s různými nastaveními zabezpečení.
Klienti můžou být robustnější než selhání nebo nedostupnost služeb.
Zjišťování WCF
Wcf Discovery je technologie architektury, která umožňuje začlenit mechanismus zjišťování do vaší aplikační infrastruktury. Můžete ho použít k vyhledání služby a konfiguraci klientů tak, aby hledali služby. Klienti už nemusí být pevně zakódované pomocí koncového bodu, aby byla vaše aplikace robustnější a odolná proti chybám. Zjišťování je ideální platformou pro sestavování funkcí automatické konfigurace do vaší aplikace.
Produkt je postaven na standardu WS-Discovery. Je navržený tak, aby byl interoperabilní, rozšiřitelný a obecný. Produkt podporuje dva režimy provozu:
Spravované: kde existuje entita v síti, která je informovaná o existujících službách, klienti ji dotazuje přímo na informace. To je podobné službě Active Directory.
Ad hoc: kde klienti používají zprávy vícesměrového vysílání k vyhledání služeb.
Zprávy zjišťování jsou navíc nezávislé na síťovém protokolu; Můžete je použít nad libovolný protokol, který podporuje požadavky režimu. Zprávy vícesměrového vysílání zjišťování lze například odesílat přes kanál UDP nebo jakoukoli jinou síť, která podporuje zasílání zpráv vícesměrového vysílání. Tyto body návrhu v kombinaci s flexibilitou funkcí umožňují přizpůsobit zjišťování speciálně pro vaše řešení.
Začínáme
Dokumentace: Zjišťování WCF
Ukázky: Zjišťování (ukázky)
Scénáře zjišťování
Vývojář nechce pevně kódovat koncové body, protože je neznámý, když bude moje služba k dispozici. Místo toho chce vývojář zvolit službu za běhu. Mezi komponentami v aplikaci je potřeba oddělení, robustnost a automatická konfigurace.
Sledování
Sledování pracovního postupu poskytuje přehled o provádění instance pracovního postupu. Události sledování se vygenerují z pracovního postupu na úrovni instance pracovního postupu a při provádění aktivit v rámci pracovního postupu. Účastník sledování pracovního postupu musí být přidán do hostitele pracovního postupu, aby se přihlásil k odběru záznamů sledování. Záznamy sledování se filtrují pomocí profilu sledování. Rozhraní .NET Framework poskytuje účastníka sledování událostí pro Windows (Trasování událostí pro Windows) a základní profil je nainstalován v souboru machine.config.
Začínáme
V sadě Visual Studio 2010 vytvořte projekt aplikace služby pracovního postupu WCF. Začnete tak Receive , že na plátno umístíte pár SendReply .
Otevřete web.config a přidejte chování sledování Trasování událostí pro Windows bez profilu.
Použije se výchozí profil.
Otevřete prohlížeč událostí a povolte analytický kanál v následujícím uzlu: Prohlížeč událostí, protokoly aplikací a služeb, Microsoft, Windows, Application Server-Applications. Klikněte pravým tlačítkem myši na Analýzu a vyberte Povolit protokol.
Spusťte službu pracovního postupu.
Sledujte události sledování pracovního postupu v prohlížeči událostí.
Ukázky: Sledování
Koncepční dokumentace: Sledování a trasování pracovních postupů
Úložiště instancí pracovních postupů SQL
Jedná se SqlWorkflowInstanceStore o implementaci úložiště instancí založenou na SQL Serveru. Úložiště instancí ukládá stav spuštěné instance společně se všemi daty potřebnými k načtení a obnovení této instance. Hostitel služby dává úložišti instancí pokyn, aby uložil stav instance, pokud pracovní postup přetrvává, a dává úložišti instancí pokyn, aby při doručení zprávy pro danou instanci nebo vypršení platnosti aktivity zpoždění načetl stav instance.
Začínáme
V sadě Visual Studio 2012 vytvořte pracovní postup, který obsahuje implicitní nebo explicitní Persist aktivitu. SqlWorkflowInstanceStore Přidejte chování k hostiteli služby pracovního postupu. To lze provést v kódu nebo v konfiguračním souboru aplikace.
Ukázky: Trvalost
Koncepční dokumentace: Úložiště instancí pracovního postupu SQL