fredag, februari 26, 2010

Visual Studio 2010 - IDE

Det finns en hel del nyheter i IDE’n i Visual Studio 2010. Den är numera byggd i WPF vilket kommer att möjliggöra tredjepartstillverkare att bygga mycket intressanta tillägg framöver!

New Project:
Precis som tidigare har man möjlighet att välja vilket ramverk man ska jobba med. Det innebär att man kan tidigt börja använda VS2010 även om man inte är redo att gå upp till .NET 4. Men i New Project är den mest välkomna nyheten att man nu kan söka bland installerade mallar. Sökrutan högst upp till höger filtrerar bland alla installerade mallar oavsett i vilken nod i trädet man står i när man startar sökningen. Jag hade önskat att man skulle ha gjort en större förändring och tydligare framhäva möjligheten att söka eftersom att det är så otroligt snabbt sätt att hitta den mall man behöver. Samma sökmöjlighet finns även när man väljer Add New Item. Som vanligt finns det också en hel del mallar att ladda ner i Visual Studio Gallery.

image

Extensions Manager:
Under Tools – Extension Manager hittar man en ny dialog som kan användas för att installera olika tillägg till Visual Studio. Det är relativt enkelt att skapa egna och det finns även många att ladda ner. Tillägg man kan hitta i det online gallery som är integrerat i Visual Studio kan vara små små förändringar eller större verktyg som t ex ReSharper. Det pratades tidigt i utvecklingen av VS2010 att man skulle kunna skinna IDE’n och med ett liten tillägg som heter Visual Studio Color Theme Editor är det i alla fall möjligt att enkelt ändra det färgschema som VS2010 använder. Nedan finns två exempel på teman som jag skapat. Ett som är lite mer nertonat a la Expression och det andra med lite mer klara färger.

image image

Ett av mina favorit-tillägg är ItallicComments. Ett litet tillägg som gör så att kommentarer i kod blir kursiva.

image

IntelliSense:
Ända sedan jag testade Visual Assist från Whole Tomato för ett antal år sedan har jag önskat att få IntelliSense som är implementerad som “innehåller” istället för “börjar med” och nu kommer den nyheten till VS2010. Det finns också stöd för att göra sökningar med Pascal Casing men det är en funktion som jag har märkt att jag aldrig använder. Det känns som att det tar längre tid att komma på vad det är för Pascal Casing på AreAnyTouchesCapturedWithin än att skriva t ex Touch. Men med nya IntelliSense kan man alltså också skriva AATCW.

Call Hierarcy:
För att förenkla för utvecklare att förstå hur kod hänger ihop har man lagt till ett par intressanta nyheter. Ett sådant är Call Hierarcy som visar vad som anropar en metod samt vad den metoden i sin tur anropar. Ställ dig på en metod och tryck CTRL+K, T så kommer Call Hierarcy-fönstret fram. Calls to visar vilka anrop som kommer in till metoden och Calls From visar vad den i sin tur anropar. Mycket värdefull hjälp för att framför allt snabbt få koll på vem som anropar en metod som man ska ändra!

image

Pin:
Det finns många möjligheter att pinna saker i VS2010. Den mest uppenbara är att man t ex kan pinna sln-filer så att de alltid finns med i Recent Projects-listan. En lite mer dold feature är att man kan pinna inspektioner som man gör under debugging. När man gör en mouse over på en variabel under debugging får man som vanligt upp information om vilket värde den variabeln håller. Den visualiseringen har nu en liten nål så att man kan pinna den och behöver då inte längre hålla kvar musen där för att se dess värde. Efter det att man har pinnat visualiseringen kan man också expandera fram ett kommentarsfält. Hela den här visualiseringen går också att pinna så att även om man scrollar så ligger den kvar på samma ställ samt att man även enkelt kan flytta den.

image image

Det är var några av de nya features som finns i VS2010 som gör livet som utvecklare lite enklare och trevligare!

tisdag, februari 23, 2010

Problem med CSS i Azure

Förra veckan blev jag tvingad att installera om min dator från scratch. Det var strul med SQL Server Express, Visual Studio 2010 och Azure som föranledde det hela. Det hela gick som vanligt väldigt smidigt och snart var jag igång med Windows 7 Ultimate och Visual Studio 2010 Ultimate RC.

Ett problem som dock dök upp var att jag inte längre fick med mig CSS filen för den site jag jobbar med när jag startade projektet i Azure Development Fabric i Visual Studio. Det funkade bra att deploya till Windows Azure eller att enbart starta upp web projektet. Det visade sig att det var en Windows Feature som jag missat. Aktivera den och din css kommer att hänga med och allt funkar fin-fint igen.

StaticContent

måndag, februari 01, 2010

Timeout för kö-meddelanden i Windows Azure

En fråga som har dykt upp många gånger sista tiden i mitt projekt men som vi aldrig sök upp svaret på är hur det funkar med timeout för meddelanden i en kö i Windows Azure Queue Storage. Windows Azure garanterar att meddelanden som placeras i köer kommer att hanteras minst en gång. När man gör ett GET-anrop via REST, alternativt GetMessage() från StorageClient, kan man skicka med en alternativ parameter som sätter hur lång tid timeouten ska vara. Om man inte har tagit bort meddelandet innan tiden för timeouten så dyker meddelandet upp på kön igen.

var message = c.GetMessage(TimeSpan.FromSeconds(10));

Om man inte anger någon tid sätts den till 30 sekunder vilket också är maxtiden för ett meddelande idag. Det har pratats om att möjliggöra längre intervall men det har ännu inte dykt upp. Oavsett hur lång tid man skulle kunna sätta måste applikationer byggas så att dess funktioner är idempotenta. Med idempotent menas att om man anropar en funktion två gånger ska det ge samma resultat, f(f(x)) = f(x).

Ett exempel kan vara att en worker role hämtar ett meddelande och börjar hantera det. När den är klar ska det utföras en loggning till Azure Table Storage som av någon anledning tar väldigt lång tid eller misslyckas. Då dyker meddelandet upp på kön igen och en annan instans av samma worker role kan få tag i meddelandet och påbörja att hantera det på nytt. Då måste applikationen hantera den situationen och inte förändra slutresultatet.