it-swarm-eu.dev

Kdy použít Windows Workflow Foundation?

Některé věci lze snadněji implementovat jen ručně (kód), ale některé jsou jednodušší prostřednictvím WF. Vypadá to, že WF lze použít k vytvoření (téměř) jakéhokoliv druhu algoritmu. Takže (teoreticky) mohu dělat všechny své logiky ve WF, ale je to asi špatný nápad to udělat pro všechny projekty.

V jakých situacích je dobré použít WF a kdy to bude dělat věci těžší, pak musí být? Jaké jsou výhody a nevýhody/náklady WF vs. kódování ručně?

148
Sumrak

Možná budete potřebovat WF pouze pokud platí některá z následujících skutečností:

  1. Máte dlouhodobý proces.
  2. Máte proces, který se často mění.
  3. Chcete vizuální model procesu.

Pro více informací viz Paul Paul post: Co použít Windows Workflow Foundation pro?

Nezaměňujte se nebo nespojujte WF s vizuálním programováním jakéhokoliv druhu. Je to špatné a může vést k velmi špatným architektonickým/návrhovým rozhodnutím.

121
Panos

Nikdy. Pravděpodobně budete litovat:

  • Strmá křivka učení
  • Obtížné ladění
  • Obtížné udržovat
  • Nezajišťuje dostatečný výkon, flexibilitu ani zvýšení produktivity, aby bylo možné ospravedlnit jeho použití
  • Může a bude poškozen stav aplikace, který nelze obnovit

Jediný čas, kdy jsem kdy mohl představit použití WF, je, kdybych chtěl hostit návrháře pro koncového uživatele a pravděpodobně ani tehdy.

Věř mi, nikdy nebude nic tak přímočarého, mocného nebo flexibilního jako kód, který píšete, abys dělal přesně to, co potřebujete. Drž se dál od WF.

Samozřejmě, to je jen můj názor, ale myslím, že je to zatraceně dobrý. :)

80
Ronnie Overby

Kód vygenerovaný WF je ošklivý. Hodnota, kterou WF přináší, je ve vizuální reprezentaci systému, i když jsem ještě nic neviděla (6-7 projektů v práci s WF, se kterými jsem se zabýval) upřednostňovali jednodušší ručně kódovaný projekt.

47
craigb

Obecně platí, že pokud nepotřebujete vytrvalost a funkce sledování (které jsou podle mého názoru hlavní rysy), neměli byste používat Workflow Foundation. 

Zde jsou výhody a nevýhody Workflow Foundation, které jsem získal z mé zkušenosti:

Výhody

  • Perzistence: Pokud budete mít mnoho dlouhých procesů (myslím dny, týdny, měsíce), pak jsou Workflow pro to skvělé. Instance nečinnosti pracovního postupu jsou zachovány v databázi, takže nevyužívají paměť.
  • Sledování: WF poskytuje mechanismus pro sledování každé aktivity prováděné v pracovním postupu
  • * Vizuální Návrhář: Já jsem to jako *, protože si myslím, že je to opravdu užitečné pouze pro marketingové účely. Jako vývojář raději raději psát kód, než abych viděl věci dohromady. A když máte vývojáře, který nemá vývojáře, často skončíte s obrovským matoucím nepořádkem.

Nevýhody

  • Programovací model: Jste opravdu omezený v programovacích funkcích. Přemýšlejte o všech skvělých funkcích, které máte v C #, pak na ně zapomeňte. Jednoduchý jeden nebo dva řádkové příkazy v C # se stávají poměrně velkými blokovými aktivitami. To je zejména bolest pro validaci vstupu. Když to řekneme, pokud jste opravdu opatrní, abyste v pracovních postupech zachovali pouze logiku na vysoké úrovni a všechno ostatní v jazyce C #, pak to nemusí být problém.
  • Výkon: Pracovní postupy spotřebovávají velké množství paměti. Pokud na serveru nasazujete mnoho pracovních postupů, ujistěte se, že máte spoustu paměti. Také si uvědomte, že pracovní postupy jsou mnohem pomalejší než normální kód C #.
  • Strmá křivka učení, těžko laditelná: Jak bylo uvedeno výše. Budeš trávit spoustu času tím, že přijdeš na to, jak věci dostat do práce, a přijít na nejlepší způsob, jak něco udělat.
  • Nekompatibilita pracovního postupu: Pokud nasadíte pracovní postup s vytrvalostí a potřebujete provést aktualizace pracovního postupu, staré instance pracovního postupu již nejsou kompatibilní. Pravděpodobně je to opraveno v .NET 4.5.
  • Musíte použít výrazy VB (.NET 4.5 umožňuje výrazy C #).
  • Není flexibilní: Pokud potřebujete nějakou speciální nebo specifickou funkci, kterou neposkytuje nadace Workflow Foundation, připravte se na spoustu bolesti. V některých případech to nemusí být možné. Kdo ví, dokud to nezkusíš? Je tu hodně rizika.
  • Služby WCF XAML bez rozhraní: Normálně se služby WCF vyvíjejí proti rozhraní. S WCF XAML Services nelze zajistit, že služba WCF XAML implementovala vše v rozhraní. Nemusíte ani definovat rozhraní. (Pokud vím...)
38
Mas

Hlavním důvodem, proč jsem zjistil, že používám základy workflow, je to, jak moc vás to vyvede z krabice z hlediska sledování a vytrvalosti. Je velmi snadné dostat službu vytrvalosti do provozu, což přináší spolehlivost a rozložení zátěže mezi více instancemi a hostiteli.

Na druhou stranu, stejně jako aplikace pro formuláře, jsou kódové vzory, které vás designér pracovního postupu posouvá, špatné. Problémům se můžete vyhnout zapisováním žádného kódu do pracovního postupu a delegováním všech prací na jiné třídy, které lze organizovat a testovat jednotně více než pracovní postup. Pak se dostanete chladný vizuální aspekt návrháře bez křížení špagety kód za sebou.

26
Tegan Mulholland

Osobně nejsem prodáván na WF. Je to pro mě užitečná jako jiné nové technologie MS, jako je WPF nebo WCF.

Myslím, že WF bude v budoucnu silně využíváno v podnikových aplikacích, ale nemám v plánu je používat, protože to nevypadá jako správný nástroj pro práci v mých projektech.

11
Rob

Společnost, kterou v současné době pracuji pro nastavení Windows Workflow Foundation (WF), a důvody, proč se rozhodli pro její použití, byla taková, že pravidla by se často měnila a nutila je k tomu, aby provedly rekompilaci různých dll atd. A tak jejich řešení bylo umístit pravidla do DB a zavolat je odtud. Tímto způsobem by mohli změnit pravidla a nemuseli by znovu kompilovat a šířit dll atd. 

6
Pritesh

Windows Workflows svádí nekódující IT manažery, BA a podobně, stejně jako jeho bratranec BizTalk, ale v praxi testování jednotek, ladění a kódové pokrytí jsou jen tři z mnoha nástrah. Můžete překonat některé z nich, ale musíte investovat do dosažení tohoto cíle, zatímco s prostým kódem to prostě dostanete. Pokud máte skutečně dlouhodobý požadavek, budete pravděpodobně potřebovat něco sofistikovanějšího. Slyšel jsem argument o tom, že je možné vložit nové soubory xaml do výroby, aniž by byly znovu kompilovány dll, ale upřímně, že doba, po kterou budou Workflows spotřebovány, by mohla být lépe využita ke zlepšení vaší Nepřetržité integrace do bodu, kdy kompilované nasazení nejsou problém.

5
Owain Glyndŵr

Použil bych ho v jakémkoli prostředí, kde potřebuji pracovat s workflow, ale při jeho použití ve spojení s K2 nebo dokonce SharePoint 2007 je síla platformy opravdu užitečná. Při vývoji podnikových aplikací se specialistou BI se doporučuje použití platformy, což by bylo normálně relevantní pouze pro zefektivnění a zlepšení obchodních procesů.

Pro záznam WF byl vyvinut ve spolupráci s vývojovým týmem K2 a nový K2 Blackpearl je postaven na vrcholu WF, takže je to i MOSS 2007 a WSS 3.0.

2
BinaryMisfit

Když nechcete ručně psát všechny tyto kódy, abyste udrželi vizuální rozhraní, sledování a vytrvalost, je moudré volit pro WF.

1
sparksustc

Používám pracovní postup Windows několik měsíců, abych vytvořil vlastní aktivity a re-hosted designer, kteří mohou vývojáři používat k vytváření pracovních postupů. WF je velmi silný, ale je to jen tak dobré jako vlastní aktivity, které jsou vytvořeny vývojáři. Když přijde na to, vývojář by se musel podívat na pracovní postupy vytvořené jinými než vývojáři, aby otestovali a ladili, ale z hlediska mohou vytvářet pracovní postupy - to je fantastické.

Kromě toho, v případech, kdy máte dlouhodobě spuštěné procesy WF, je dobrý technologický zásobník, který potřebujete použít, když potřebujete dynamicky aktualizovat procesy - aniž byste museli znovu instalovat/stahovat nebo dělat cokoli, stačí přidat nové soubory XAML do adresáře a Vaše architektura by měla být nastavena s verzí, aby se starý mohl zrušit a použít nový.

0
JohnChris