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!

Live Mesh

Sedan en tid tillbaka använder jag Live Mesh vilket är den första applikationen som är utvecklad på Azure. Den använder sig av Live Services på Azure Services Platform.

Live Mesh är ett "desktop in the cloud" där du får utrymme att spara upp till 5gb data. Det data som du sparar i molnet kan du sedan välja hur det ska synkas till de enheter du har lagt till i ditt "system". Mesh finns idag för XP och Vista. MAC och Mobil finns som CTP. När man sparar en fil i en mesh-folder på din lokala dator (som för dig som användare ser ut precis som en vanlig folder) så synkas den direkt till andra enheter. Man kan också logga in på sitt Live Desktop och hantera filer därifrån.

Bilden visar enheterna i min "Device Ring":




På sikt ska man även som utvecklare kunna kunna bygga mesh-enablade web-applikationer som görs tillgängliga genom en applikationskatalog i molnet. Användare väljer en applikationen som sedan installeras till den användarens moln och kommer sedan också att synkas till alla enehter. Det blir då sedan möjligt att köra applikationen lokalt med lokalt data eller i molnet. Mesh-applikationer kommer att kunna byggas med olika tekniker som t ex Silverlight, DHTML eller Flash.


Fram till ny har Live Mesh bara varit tillgängligt för USA (även om det har gått att klämma sig in genom att ändra lite inställningar på sitt Live-konto) men nu är en publik beta tillgänglig worldwide. Så nu är det dags att surfa in till www.livemesh.com, lämna fast mark och kliva in i molnet!

onsdag, oktober 29, 2008

Azure

David Chappell har skrivit en helt fantastikt bra artikel om The Azure Services Platform som går igenom de olika delarna i plattformen samt de olika tjänster man kan använda sig av som utvecklare.

Det ska bli riktigt kul att börja testa och självklart har jag anmält mig på Azure-siten för att få tillgång till CTP av tjänsterna.

Redan idag går det dock bra att ladda ner och bygga appar som sedan körs i det simulerade molnet.

tisdag, oktober 28, 2008

Oslo är här!

Igår släpptes de första bitarna (hyper early CTP) till Oslo. Men vad är Oslo och var ska man börja?

Oslo kodnamnet för Microsofts nya plattform för modeldrivna applikationer. I kärnan finns tre delar:

Ett nytt språk, M
M är namnet på Oslos nya språk för att skapa modeller. Modellering som teknik är inget nytt utan något vi har använt oss av länge. Vi modellerar idag våra applikationer i Visio, på en servett eller på en whiteboard. Problemet med det här är att det ofta blir en första vision av systemet som man sedan inte underhåller över tiden. Med M får vi nu möjligheten att skapa modeller i ett deklarativt språk. På de modeller vi bygger i M kan vi sedan skapa domänspecifika språk (DSL).

M består av tre olika delar. MGraph, MSchema och MGrammar. Mer om dessa senare...

Ett verktyg, Quadrant
Tanken med Quadrant är att det är ett verktyg där man kan få en textbaserad eller visuell representation av en modell. Precis som i t ex xaml-editorn i Visual Studio så kan man göra förändringarna där man själv känner sig bekväm. Det är bara två olika vyer av samma källa. Quadrants användarupplevelse ska påminna om den i Office.

Flera olika roller inom en organisation, som t ex analytiker, arkitekt, utvecklare och IT Chef, kan samarbete runt dessa modeller i Quadrant genom att använda en vy som passar för deras behov. Det kommer också att vara möjligt att uppdatera modellerna direkt i Visual Studio, BizTalk, SharePoint, Visio etc.

En central lagringsplats för modeller, Repository
All data om de modeller som skapas sparas i en central lagringsplats som kallas för The Oslo Repository. Den baserars på SQL Server och därför kan man också använda alla vertyg man normalt använder mot SQL Server även mot The Oslo Repository.


Var börjar jag?
En bra start är att kolla på http://msdn.microsoft.com/Oslo/. Där kan man ladda ner SDK och läsa på en hel del.

Rekomenderade bloggar:
http://douglaspurdy.com/
http://www.pluralsight.com/community/blogs/dbox/default.aspx

I ett avsnitt av .NET Rocks! med just Douglas Purdy och Don Box pratade de om Oslo. Vid ett tillfälle nämnde Don en session på PDC som handlar om hur man kan använda Oslo för att skapa textbaserade DSL och uttryckte det som: "If ýou want the power of Anders (Hejlsberg) in your hands...".

lördag, oktober 25, 2008

Ny logga för .NET!

Idag släpptes en ny officiell logga för .NET! Anledningen är för att synka med Microsofts värderingar om vad de tycker att .NET står för: konsistent, robust och lysande användarupplevelse (fritt översatt).

Läs mer på Scott Barnes blogg och på Scott Hanselmanns dito.

fredag, oktober 10, 2008

PDC online!

Tyvärr så har jag inte möjligheten att vara med på PDC i år. Ser dock fram emot att följa PDC Online. Johan Lindfors har lovat att han ska blogga live från keynotes och sessioner och idag läste jag att alla sessioner kommer att finnas online inom 24 timmar efter framförandet!

På TechEd i Orlando tidigare igår sände de keynotes live och om det blir något liknande så lovar jag att det kommer att kommer att hålla väldigt hög kvalitet!