Kom igång med Windows Server AppFabric och Workflow Services

Att bara säga AppFabric bäddar för missförstånd då vi i skrivandets stund har vi två erbjudanden i AppFabric “familjen” med helt skilda förmågor. Windows Server AppFabric är ett tillägg till Windows Server som gör det enklare att bygga, skala och hantera webb- och komposit- applikationer som rullar på IIS. Windows Azure platform AppFabric hjälper dig att ansluta appar och tjänster mellan installationer i Windows Azure och installationer lokalt (läs on-premise). Med tanke på namnsättningen kan vi hoppas att “Appfabrikerna” kommer dela minst ett par av sina förmågor framöver.

I denna artikel visar jag hur du snabbt kommer igång med utvecklingen av en Windows Workflow Foundation (WF)-tjänst tillsammans med Windows Server AppFabric. Jag vill även påvisa att det nu är i princip lika enkelt att husera ett arbetsflöde och en WCF-tjänst som det är att husera en ASP.NET webbapplikation i IIS.

Värt att notera är att jag i denna artikel använder Windows Server AppFabric Beta 2 och Visual Studio 2010 RC vilket gör att detaljer kan skilja sig från de kommande versionerna.

Installera Windows Server AppFabric

För att installera Windows Server AppFabric på din utvecklingsburk kan jag varmt rekommendera användandet av Web Platform Installer (WebPI). Du får inte bara Windows Server AppFabric installerat utan WebPI gör också konfigurationen av Windows Server AppFabric åt dig. Himla smidigt för att snabbt komma igång med utvecklingen. Vill du istället ladda ned installationspaketet och göra installation och konfiguration manuellt så går naturligtvis det också bra. I denna artikel använder jag WebPI.

Efter installation av WebPI behöver jag aktivera Enterprise funktionerna i WebPI. Det gör jag genom att klicka på Options…

WebPI

… följt av klick i Enterprise kryssrutan.

enterprise

Nu får jag tillgång till en ytterligare flik i WebPI där valet Application Server finns.

image

Efter att jag klickat på Install installeras och konfigureras Windows Server AppFabric åt mig. (OK. Nu har jag skrivit Windows Server AppFabric för många gånger. Hädanefter skriver jag bara AppFabric men vi vet alla att det är Windows Server AppFabric jag menar och inget annat. Eller hur?).

Bygg Workflow Service

Jag startar Visual Studio 2010 med administratörsbehörighet (Run as administrator). Detta för att få interagera med IIS. Jag skapar sedan et nytt projekt av typen WCF Workflow Service Application.

image

Innan jag börjar utveckla min tjänst så vill jag ändra egenskaperna på projektet så Visual Studio förstår att det är AppFabric jag vill använda för test och inte den inbyggda webbservern. För att använda AppFabric så anger jag i projektets egenskaper att använda IIS – Use Local IIS Web server. Jag klickar också på Create Virtual Directory för att skapa den plats där min tjänst kommer exponeras.

image

Nu är jag redo att bygga min tjänst. Visual Studio skapade ett sekventiellt arbetsflöde åt mig när jag skapade projektet. För denna artikel räcker detta arbetsflöde bra. Vi kan se att det består av två aktiviteter – en aktivitet för att ta emot en förfråga och en aktivitet för att skicka svaret. Det är dessa två aktiviteter som utgör kontraktet för min tjänst. Namnet på tjänsteoperationen är GetData. För att se innehållet i meddelandet klickar jag på View message…

image

I dialogen Content Definition kan jag se att en variabel, med namn data, som är definierad i arbetsflödet tilldelas innehållet av meddelandet.

image

För att se vilka variabler jag har till förfogande för vald aktivitet klickar jag på Variables i arbetsflödesdesignern. Jag ser då mycket riktigt att data är definierad och att den är av typen System.Int32.

image

För sakens skull tittar jag även på svarsmeddelandet genom att klicka på View message…SendResponse aktiviteten.

image

Jag kan då se att svarsmeddelandet innehåller samma värde som skickas in som parameter i förfrågan till tjänsten (data) men skickas istället tillbaka som en sträng (System.String). Detta är fullt tillräckligt för en enkel “ping”-tjänst. Men jag vill göra en “ping”-tjänst deluxe…

Jag tänker mig en tjänst som multiplicerar inkommande värde med 1000. För att göra det drar jag ut Assign-aktiviteten från verktygslådan in i mitt arbetsflöde och lägger den mellan Request och Response aktiviteterna.

image

När jag gjort det får jag ett valideringsfel. Det beror i detta fall på att jag ännu inte har angivit något utryck i Assign-aktiviteten.

image

Det är variabeln data som jag vill multiplicera med sig själv så jag skriver “data” i fältet To. Jag noterar då två saker med Assign- aktiviteten; Det första är att jag får IntelliSense i fälten för utryck. Det andra jag noterar är att utryck endast kan anges med Visual Basic.

image

Jag känner mig nu nöjd med min Workflow Service. Arbetsflödet ser nu ut som följer. Förfrågan kommer in – inkommande värde multipliceras med 1000 – produkten av multipliceringen skickas tillbaka i svaret.

image

Innan jag provkör min tjänst vill jag säkerställa mig om att tjänsten är satt som startsida. Visual Studio startar då WCF testklienten och refererar min tjänst automatiskt när jag sedan startar debuggern.

image

Dags att köra! => F5. WCF testklient startas och min tjänst refereras automatiskt. Jag anger “5” som parameter i förfrågan och får, som förväntat, “5000” till svar.

image

Men hur kan jag nu se att AppFabric har varit inblandat i allt detta?

Verktygen för att hantera AppFabric integreras med IIS Manager. Så jag startar IIS Manager och noterar att en ny sektion har lagts till i Features vyn för min applikation.

image

Genom att klicka på AppFabric Dashboard får jag en överblick av läget vad gäller tjänster och arbetsflöden. Jag ser att jag har ett arbetsflöde som har aktiverats och avslutats inom de senaste 24 timmarna.

image

Detta var en överblick av Windows Server AppFabric och WCF Workflow Services. Jag hoppas med den att du nu har fått ytterligare lite inspiration och framöver överväger att använda Windows Workflow Foundation (WF) tillsammans med Windows Communication Foundation (WCF) och Windows Server AppFabric för att implementera dina tjänster.

Om du är riktigt sugen på WF/WCF/AppFabric och vill anta utmaningen att bli en WF-AppFabric-Ninja så har vi en kanonbra två dagars gör-det-själv utbildning att ladda ned här.