Foundations = Alapok

Mióta évekkel ezelőtt felröppent, hogy lesz Windows Presentation, Communication és Workflow Foundation gyakran találkozom azzal a kérdéssel, hogy vajon miért jó, miben segít, szükség van-e rá és hogy fogjuk-e vajon használni egyiket vagy másikat. Ha a szokásos Microsoft kommunikációt nézzük, akkor bizony azt a választ kaphatjuk, hogy naná, hiszen ezek forradalmasítják a szoftverfejlesztést. Na persze…

Ez persze bizonyos szinten igaz, azonban mindenképp meg kell értenünk, hogy mi is a bizonyos szint. A megfejtést rögtön megtalálhatjuk a technológiák elnevezésében: FOUNDATION = ALAP. Nem több, csak alap. Aztán ha megnézzük, hogy a W*F technológiák a .NET Framework 3.0 részeként jelentek meg, akkor megint közelebb kerülhetünk a megoldáshoz: FRAMEWORK = KERETRENDSZER. Nem eszköz, nem termék, csak csodafegyver, csak alap és keretrendszer.

Mint minden keretrendszernek, ezeknek is megvannak az előnyeik az egyedi megoldásokkal szemben: egységesség, kiterjeszthetőség, felhasználói közösség stb. Hátrányuk is van, nem titok: kompatibilitás, veriózás, komplexitás…

A legnagyobb hátrányt azonban mi magunk kreáljuk: túl sokat várunk tőlük.

Vegyük például a Workflow Foundationt. Ez a kis mostoha (erről majd egyszer máskor) mindössze három DLL, három .NET-es szerelvény. Akad hozzá ugyan egy-két segédprogram (majd erről is máskor), de akkor is csak jó sok osztály marad. A nyers osztályokat pedig nem lehet máshogy használni, mint hogy az ember kódot ír hozzájuk, amiben példányosít, tulajdonságokat állít és metódusokat hív. Ha mint runtime nézzük, akkor kódot kell írni már ahhoz is, hogy hosztoljuk a runtime-ot.

Ok, túl vagyunk a hosztoláson, építsünk workflow-t. Mi kell hozzá? Építőkocka, azaz activity. Van is néhány a Base Activity Library-ben. Néhány. Ráadásul azok is teljesen általános activity-k, azaz alap activity-k. (Ugye, alapok!) Hogyan fogunk tudni megépíteni egy folyamatot, amiben értelmes tevékenység (levélküldés, feldolgozás, adatbázis művelet stb.) is van? Építünk építőkockát, azaz készítünk saját activity-t. Hogyan? Létrehozunk egy osztályt, amit a WF egyik ősosztályából származtatunk. Azaz megint csak kódolunk.

Gondolkodjunk tovább. A WF segítségével kétféle típusú workflow-t lehet készíteni: szekvenciális és állapotgép típusú folyamatot. Az állapotgép egyik jellemzője, hogy események hatására megy át egyik állapotból a másik állapotba, azaz a workflow-nak tudnia kell eseményeket kezelnie. A megoldás a WF-ben található ExternalDataExchangeService. Aki már egy kicsit is foglalkozott a workflow és a külvilág közötti kommunikáció megvalósításával, biztos belefutott ebbe a szörnyszülöttbe. Ha esetleg az interneten olvasott fórumokat, akkor azt is biztosan látta, hogy ez az API a bonyolultsága miatt nagyon ellenszenves a fejlesztőknek. Persze van oka, amiért így alkották meg, a lényeg, hogy az egyszerű eseményküldéshez és kezeléshez megint csak kódolnunk kell.

Nézzünk egy speciális esetet: workflow hosztolása webalkalmazásban. Egy-két érdekességéről már írtam korábban, de most vegyünk egy gyakori példát: portál regisztráció jóváhagyását valósítsuk meg WF alapokon. Mi kell hozzá:

  • Workflow
  • Activity-k
  • Hosztolás
  • Kommunikáció
    • Saját EventArgs
    • ExternalDataExchange interfész…
    • és annak implementációja
    • Események elsütése

…és a sor még folytatható lenne. Ha ez az első workflow, amit beépítünk az alkalmazásba, akkor egy fél nap biztosan el fog menni, mire mindezzel végzünk.

Makó közelebb van Jeruzsálemhez, mint a WF a Rapid Application Developmenthez. Aki azt várja, hogy a WF (sőt, merek általánosítani: a W*F) segítségével egyszerűbb lesz az élete és gyorsabban fog fejleszteni, az szerintem csalódni fog és oda jut, hogy mindez gagyi. Pedig messze nem erről van szó, csak sokat várunk tőlük.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s