Windows Server AppFabric + WCF + WF4 = BizTalk voor de armen

De kern van BizTalk bestaat uit drie dingen: transformatie, orchestratie en betrouwbaarheid. Windows Server AppFabric zorgt voor vergelijkbare betrouwbaarheid en Windows Workflow Foundation 4 kun je vergelijken met de Orchestration Engine van BizTalk. Samen met Windows Communication Foundation kun je daarmee veel doen wat BizTalk ook kan. Het prijskaartje is echter beduidend vriendelijker dan BizTalk.

BizTalk is al behoorlijk wat jaren op de markt en heeft zich bewezen als een product waarmee verschillende systemen betrouwbaar aan elkaar gekoppeld kunnen worden. Het patroon dat BizTalk daarbij gebruikt is ontvang-transformeer-orchestreer-transformeer-zend. Transformatie gaat daarbij naar en vanuit de interne representatie waarmee de orchestration engine werkt. Deze interne presentatie is XML. Afbeelding 1 laat schematisch zien hoe BizTalk in elkaar zit en het genoemde patroon implementeert. Overigens is BizTalk op deze manier niet alleen in staat om een verbinding tussen twee systemen op te zetten die zonder BizTalk niet kunnen communiceren. De Orchestration Engine maakt het mogelijk om complexe processen te implementeren waarbij allerlei partijen betrokken zijn.
 
Afbeelding 1, BizTalk architectuur
 
Windows Workflow Foundation in .NET Framework 4 (WF4) lijkt heel erg op de Orchestration Engine van BizTalk. Omdat WF4 echt georiënteerd is op workflow, in plaats van het orchestreren van aanroepen naar verschillende applicaties ziet het er iets anders uit, maar de essentie is hetzelfde. Je kunt ook webservice aanroepen doen vanuit de workflow en andere applicaties de workflow laten aanroepen op basis van Windows Communication Foundation (WCF). Je kunt WF4 dan gebruiken om een webservice te implementeren, maar de aanroep kan ook dienen om de workflow te starten. Ook is het mogelijk om midden in een workflow te wachten op een bepaalde aanroep (of aanroepen). Een dergelijke workflow heet in .NET 4.0 een Workflow Service en deze kun je hosten in Internet Information Server (IIS). Zonder Windows Server AppFabric moet je echter nog wel wat zaken regelen, maar daar kom ik later nog op terug.
 
 
Windows Workflow Foundation in .NET Framework 4 lijkt heel erg op de Orchestration Engine van BizTalk.
 
Met een Workflow Service kun je de Orchestration Engine van BizTalk nabootsen. BizTalk biedt echter meer, om te beginnen met het vermogen om te werken met allerlei verschillende transport protocollen zoals HTTP, FTP en MQSeries en het kunnen transformeren van en naar allerlei verschillende formaten. De receive/send adapters en pipelines zorgen spelen hier een belangrijke rol bij. Er zijn allerlei situaties waarbij deze functionaliteit nodig is, zoals wanneer mainframe, Windows en Java applicaties met elkaar moeten communiceren. Heb je te maken met een omgeving waarin het transport gestandaardiseerd is op webservices, dan is het leven een stuk eenvoudiger en kun je zonder de uitgebreide adapter en pipeline architectuur van BizTalk. WCF is dan genoeg om de communicatie te faciliteren en met verschillende bindings heb je wat mogelijkheden om verschillende protocollen te gebruiken (SOAP, REST, Reliable Messaging, etc.). Wat je dan nog mist is de betrouwbaarheid van BizTalk nabootsen. Zelfs als je Reliable Messaging gebruikt, kan de aanroep naar een webservice nog falen als de service uit de lucht is of de fout in gaat. Reliable Messaging zorgt er alleen maar voor dat het kanaal tussen de twee endpoints betrouwbaar is ALS beide kanten beschikbaar zijn en zolang er geen functionele fouten zijn. Vindt er een timeout plaats, dan faalt de aanroep nog steeds. Er is geen retry-mechanisme.
 
Wanneer in BizTalk iets fout gaat, zoals communicatie met een andere applicatie, dan betekent dit niet dat het proces meteen helemaal afgebroken wordt. Het proces dat fout loopt wordt stilgelegd en wordt in de beheerconsole getoond. Vanuit de beheerconsole kan het proces weer opgestart worden, waarbij het uiteraard wel nodig is dat de foutconditie eerst verholpen wordt. Om dit te kunnen maakt BizTalk gebruik van een database waarin het bijhoudt waar een orchestratie zich in het proces bevindt. Zelfs als de server tijdelijk uit de lucht gaat, kunnen de lopende processen weer opgepakt worden. Dat is uiteraard niet zo met een gewone WCF service die je aanroept. WF4 heeft een vergelijkbare database om workflows in op te slaan, vooral om workflows die even niets doen (tijdelijk) uit het geheugen te halen. Deze database moet je normaal gezien zelf instellen in de configuratie van je applicatie. Dit is echter ook waar Windows Server AppFabric om de hoek komt kijken. Windows Server AppFabric zorgt dat deze database in het platform is ingebakken, waardoor je een Workflow Service zonder erbij na te denken in IIS kan plaatsen. De database is dan automatisch aanwezig, maar AppFabric heeft nog meer in petto. Het heeft een beheerconsole die te vergelijken is met die van BizTalk, de AppFabric Dashboard. Een deel daarvan is te zien in afbeelding 2, die er voor BizTalk mensen heel bekend uit zal zien. In afbeelding 2 zie je een keurig overzicht van het aantal actieve, slapende (idle) en onderbroken (suspended) WF Instances, waarbij een WF Instance synoniem is voor een Workflow Service. Welke Workflow Services actief en slapend zijn is niet zo heel interessant. Die zijn gewoon aan het doen wat ze moeten doen. Slapende Workflow Services wachten namelijk op input en zouden dus op een gegeven moment weer actief moeten worden. Workflow Services die onderbroken zijn, zijn echter tegen een fout aangelopen en kunnen daarom niet verder. Een beheerder zal die instanties moeten bekijken. Als de beheerder vanuit afbeelding 2 klikt op de link bij de Suspended WF Instances, dan krijgt hij/zij een scherm te zien zoals in afbeelding 3, waarin alle onderbroken instanties op een rij staan. Door op de instantie te klikken komt onderin het scherm een overzicht te staan van de instantie en de foutmelding. Als ontwikkelaars van de Workflow Service ervoor gezorgd hebben dat er een duidelijke foutmelding staat, kan de beheerder de fout wellicht oplossen en de Workflow Service de draad weer op laten pakken waar deze gebleven was voordat het fout ging (Resume).
 
Afbeelding 2, AppFabric Dashboard
 
Afbeelding 3, Overzicht van onderbroken Workflow Service instanties
 
Het Appfabric Dashboard lijkt veel op de BizTalk beheerconsole.
 
BizTalk heeft behoorlijk wat eigenschappen die Windows Server AppFabric samen met WCF en WF4 niet heeft. Sommige scenario’s zijn ook zeker in BizTalk eenvoudiger te realiseren, maar er zijn voldoende situaties waar BizTalk overkill is maar je toch wel wat wilt doen om robuuste communicatie en workflow te kunnen verzorgen. Wanneer je dit goed uitdenkt zal AppFabric met WCF en WF4 een goede oplossing zijn.
Geef feedback:

CAPTCHA image
Vul de bovenstaande code hieronder in
Verzend Commentaar