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!

Inga kommentarer: