Visar inlägg med etikett Cloud. Visa alla inlägg
Visar inlägg med etikett Cloud. Visa alla inlägg

fredag, oktober 31, 2008

Konfiguration av Cloud Services-projekt

Förutom den vanliga web.config så har man också tillgång till två andra config filer i ett projekt av typen Web Cloud Service. Dessa heter ServiceConfiguration.cscfg samt ServiceDefinition.csdef.



ServiceDefinition.csdef
Den här filen innehåller definitionen av tjänsten man bygger, dvs vilka roller den är uppbygd av. En Web Role innehåller också InputEndpoints som definierar vilket protokoll som används (http eller https) samt vilken port man kommunicerar på. Servicedefinitionen byggs in i projektet och laddas upp till molnet.

En tjänst i molnet kan alltid som mest innehålla en Web Role och en Worker Role. Ett projekt kan innehålla flera Web Role men det kan bara vara en som är associerad med tjänsten. Att associerad och av-associerad roller med en tjänst gör man enkelt genom att högerklicka på Roles-noden.


ServiceConfiguration.cscfg
ServiceConfiguration kan laddas upp separat för att förändra tjänsten i molnet efter det är publicerad. De man kan ställa in i konfigurationsfilen är t ex antalet instanser som körs av tjänsten och par av namn och värde som man kan använda sig av i applikationen.


Antalet instanser som körs av en Web Role respektive Worker Role kan vara olika till antalet så man kan alltså köra en Web Role och tre Worker Roles.


En liten lustig grej när man ska lägga till ConfigurationSettings som man sedan kan läsa in i applikationen är att man måste lägga till den både i ServiceConfiguration och i ServiceDefinition men med skillnaden att man bara lägger till värdet i ServiceConfiguration. Om man bara lägger till den i ServiceConfiguration så får man ett något anonymt felmeddelande när man kör applikationen: Invalid Configuration File.


Exempel på hur de två konfigurationsfilerna ser ut med ConfigurationSettings elementet rätt konfigurerat:




För att sedan läsa in data från konfigurationsfilen anävänder man den statiska metoden GetConfigurationSetting på RoleManager:
var firstName = RoleManager.GetConfigurationSetting("FirstName");


RoleManager kan man också använda för att skriva logmeddelanden till consolen i det simulerade molnet:
RoleManager.WriteToLog("Information", "Hello World");

Värt att veta är dock att om man börjar ändra i associeringen av roller till en tjänst så uppdateras också konfigurationsfilerna vilket innebär att om man har ConfigurationSettings så försvinner dessa...

Trots det så är jag än så länge positivt överraskad av hur stabilt och långt utvecklat allt är. Det är ju trots allt bara CTP än så länge!

Äntligen installerat Azure!

Ikväll bestämde jag mig för att installera Windows Azure och allt som har med den att göra. Eftersom att min dator var helt ny och fräsh så tänkte jag att jag skulle, för en gångs skull, göra allt i en virtuell maskin. Så en Windows Server 2008 fick agera mål för mina installationer. Det dröjde dock inte länge förrän problemen började hopa sig. Det första som behövdes var SP1 för .net Framework och SP1 och Visual Studio 2008 och det tar ju sin lilla tid att genomföra dessa installationer.

Det verkliga problemet var dök upp när jag skulle installera SP1 för VS och inte hade tillräckligt med diskutrymme. Min disk är satt att växa automatiskt med det funkade inte så bra när installationsprogrammet kollar efter ledigt diskutrymme innan installationen kan starta - suck. Så jag gav upp till slut upp den virutella och satsade på att installera allt direkt på datorn istället.

Så efter några trevliga prerequisits som tex ASP.Net MVC och PowerShell är jag nu klar med hela insallationen av följande:


Så nu är det då äntligen dagsa att se vad VS har att erbjuda!

I VS har man lite nya project templates tillgängliga som alla ligger under Clode Services. Det är Blank Cloud Service, Web Cloud Service, Worker Cloud Service och den sammanslagna Web And Worker Cloud Service. Den största skillanden mellan Web Cloud och Worker Cloud så är det att Web Cloud har en IIS installerat i sin virtuella maskin och kan därför ta emot requester utifrån och hosta asp.net samt WCF-tjänster. Worker Cloud kan bara kommunicera med andra genom köer i storage molnet. Användningen för ett Worker Cloud är om man har något som kommer att ta lång tid eller kräver extra kraft att utföras. Då kan man bygga den delen i ett Worker Cloud som man kommunicerar med genom en kö.

Nu har jag implementerar lite enkel logik i mitt Web Cloud-projekt - tycker F5...

Det första som händer när man tycker F5 för att köra igång sitt projekt är att Development Storage konfigureras. Han inte riktigt med att se exakt vad som hände men det skapades en databas för Cloud Storage (Blob, Queue och Table) och det konfigurerades några konton.

Applikationen drar sedan igång och det ser ut precis som en vanlig webapp. Inga skillnader alls. Förutom att man i sin tray, där man normalt brukar ha Cassini när man startar en webapp, så har man nu två nya ikoner. Deveopment Fabric och Development Storage.

Development Fabric är den del av utvecklingsmiljön som simulerar molnet. Det är här ens applikation körs. Bilden nedan visar hur det ser ut när man har konfigurerat sin applikation att köra på en viruell maskin.



Om man sedan ändrar i en konfigurationsfil och skriver att

Så får man istället två virtuella maskiner att köra sin applikation på:




Nästa steg är att publicera sin applikation till molnet. För att göra det högerklickar man på det projekt som innehåller konfigurationen för tjänsten i molnet coh väljer Publish. Då får man logga in med sitt live ID och då gäller det ju också att man har ett konto i molnet vilket jag inte har... ännu :-(

Nästa steg blir att börja labba med de olika tjänsterna i molnet. .Net Services och Storage Services... men mer om det senare!