onsdag, december 15, 2010

CommunicationObjectFaultedException i Azure 1.3

Igår uppdaterade jag ett Azure-projekt till SDK 1.3 och ett skumt fel dök upp. Jag fick följande exception:

Microsoft.WindowsAzure.ServiceRuntime Critical System.ServiceModel.CommunicationObjectFaultedException: The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.

Konverteringen funkade bra och mina tester funkade bra så jag checkade gladeligen in. Skulle sedan lägga till ett projekt, labba lite med det och då när jag skulle testköra allt tillsammans: CommunicationObjectFaultedException!!!

Med SDK 1.3 så dyker det här felet upp om i Windows Azure compute emulator när en web.config för en Azure roll är markerad som read only. Felet kommer inte att dyka upp när man deployar till Windows Azure eftersom att attribut på filerna resettas när man gör en deployment.

För att komma runt problemet måste man antingen ta bort read only-flaggan på varje web.config eller checka ut filen.

Mer info finns här: http://msdn.microsoft.com/en-us/library/gg508669.aspx

tisdag, november 30, 2010

Windows Azure SDK 1.3 är släppt

I dagarna släpptes version 1.3 av Azure SDK och Azure Tools for Visual Studio. Mycket av det som lanserades på PDC10 är nu tillgängligt och så även den nya Management Portalen. Den är numera helt byggd i Silverlight och är en mycket trevligare upplevelse än tidigare.



Det kan initialt vara lite svårt att hitta sina existerande tjänster eftersom det första du möts av är dokumentationen. Men klicka på New Hosted Service i The Ribbon och sedan Cancel så kommer man till administrationsgränssnittet. Jag antar att det inte är den rätta vägen men det är den enda jag har hittat!



Väl framme så ser man alla sina tjänster, sina storage accounts, sina affinity groups osv.

En ny detalj som var något som länge har varit efterfrågad är möjligheten att vara flera personer som administrerar ett konto. Dvs att det kan vara en person som registrerar tjänsten medan det finns flera som administrerar den. Tidigare har man varit tvingad att dela konto och lösenord mellan varandra och det har verkligen inte känts optimalt. Nu finns dock möjligheten att lägga till administratörer! Klicka bara på User Management i menyn och sedan på Add New Co-Admin i the Ribbon. Great!!


fredag, oktober 29, 2010

VM Role

Igår på PDC10 tillkännagavs en ny roll i Windows Azure – Virtual Machine Role (VM Role). Denna roll kompleterar de tidigare rollerna Web Role och Worker Role. Med en VM Role kan man köra en image, en VHD (virtual hard disk), av en Windows Server 2008 R2 i Windows Azure. Ett scenario med en VM role är att enklare kunna flytta line of business-applikationer till Windows Azure.

Den VHD man laddar upp måste köra Windows Server 2008 R2 64 bit. Det är samma operativsystem som alla roller kör i Windows Auzre och det enda som kan hanteras. Observera att när man jobbar med en VHD i Windows Azure så får man själv ta ansvar för att t ex uppdatera operativsystemet vilket är något som man slipper med de andra rollerna.

När man har laddat upp en VHD och skapat en VM role kan man skala ut den på samma sätt som man gör med andra roller. Genom att sätta de antal instanser man vill ha så kommer Windows Azure att spinna igång det antalet och lastbalansera mellan dessa. Dessa kommer dock att helt sakna tillstånd. Man kan aldrig garantera att en användare kommer tillbaka till samma instans och därför kan inget rörande ett tillstånd eller applikationsdata sparas direkt i en vm roll. Så innan man kan flytta sin applikation till en VM Role i Windows Azure måsta man lösa lagring av data.

Ett exempel på hur man kan göra det, är att flytta datalagring till Azure Storage eller till SQL Azure. Ett annat alternativ är att använda Azure Connect. Med Azure Connect kan man koppla ihop roller i Azure med servrar eller databaser on premises. Jag fick en fråga av en kollega om man skulle kunna installera Sharepoint i VM Role och köra den i Windows Azure och det skulle alltså vara fullt möjligt med Azure Connect. På en VHD kan man installera t ex Sharepoint och konfigurera den att använda en SQL Server på en annan maskin. VHD:n med Sharepoint laddas upp till Windows Azure och ansluts till den lokala domänen där SQL Servern ligger.

Jag tror inte att det är ett vettigt scenario att installera Sharepoint på en VM Role i Windows Azure. Aktuella scenarios är om man har en lång installation, en installation som inte går att scripta eller en installation som är känslig och komplex. Om man har något av dessa scenarios så kan Windows Azure VM Role vara rätt väg att gå.

Prissättningen för VM Role kommer att se likadan ut som för andra typer av roller och man betalar per timme och för storleken på instansen.

torsdag, oktober 28, 2010

Nyheter i Windows Azure.

Idag på Keynote på PDC lanserades en hel del nyheter rörande Windows Azure. Här är några av dessa sammanfattade:

· Virtual Machine Role. För att enklare ge stöd för existerande applikationer som är utvecklade för Windows visades en Virtual Machine Role. Det här var väntat och har pratats om en del den sista tiden. Med en VM Role kan man ladda upp en färdigkonfigurerad virtuell maskin direkt till Windows Azure. På sikt kommer man också att direkt kunna skapa virutella maskiner direkt i Windows Azure.

· Flera administratörer för ett konto. Det här är en liten förändring men ack så efterlängtad och viktig. Jag anser att ett delat konto för att deploya och hantera roller är den största säkerhetsrisken med Windows Azure. Det är nu löst och man kan hantera flera användare genom administrationsportalen för Windows Azure.

· Ny portal. Portalen för Windows Azure har länge varit eftersatt. Begränsad funktionalitet och en väldigt begränsad upplevelse för användaren. Nu kommer en helt ny portal som är baserad på Silverlight. Den nya portalen är ännu inte tillgänglig och jag har bara sett den i demo på scen än så länge men det ser väldigt bra ut!

· Utökade rättigheter och fullständig IIS. Med utökade rättigheter (elevated privileges) kan man göra saker som tidigare inte varit möjligt som t ex att installera ett com-objekt under uppstart. Med fullständig IIS kan man i en Web Role ha flera web sites och Virtual Applications. Tidigare har en web role kört i en Hosted Web Core som var isolerad från IIS. Numera kommer man att köra direkt i w3wp-processen.

· Windows Azure Virtual Network. Roller i Azure kan ingå i ett virtuellt nätverk med andra domäner. På så sätt kan man t ex lägga till en maskin i Windows Azure till ditt eget lokala nätverk.

· Remote Desktop. Med Remote Desktop kan man, direkt från utveckalarportalen klicka på Connecta och öppna en Remote Desktop till den aktuella instansen i Windows Azure. När man deployar en app till Windows Azure kan man välja att konfigurera för Remote Desktop. Självklart används certifikat för säker access. När man har remote desktop mot en instans i Windows Azure kan man se vad som är deployat, ändra filer och inställningar. Dessa förändringar är så klart stateless och kan förloras men det kan vara bra vid en felsökning. Om man gör det här i en produktionsmiljö kan det vara bra att plocka bort den aktuella instansen från lastbalanseraren så att den inte träffas av webbtrafik under tiden. Det kan man göra via PowerShell cmdlets på den aktuella instansen.

· Windows Azure Marketplace. På PDC09 visades Dallas för första gången. Genom oData kan man komma åt olika datakällor, antingen gratis eller som man betalar för. Dessa datakällor kan man använda i sina egna appliktioner. Alla dessa datakällor samlas nu i det som kallas Windows Azure Marketplace. Inom kort kommer även en nya del av Windows Azure Marketplace som innehåller delar eller hela applikationer som man kan köpa eller använda.

Det var mycket mer som visades. Mer information kommer att komma vad tiden lider och en bra källa är Windows Azure Team Blog

fredag, augusti 20, 2010

Certifikat för utveckling i Windows Azure med SDK 1.2

I juni släpptes en ny version av Windows Azure SDK (version 1.2). Den innehöll många mycket bra nyheter som gör livet som Azure-utvecklare mycket enklare.

Fullt stöd för Visual Studio 2010 RTM samt stöd för .NET 4 var väntat (och efterlängtat!). En annan nyhet är två tillägg till Server Explorer. Dessa ger möjlighet att få en read only-vy av de tjänster man har i Azure Compute samt Azure Storage.

Numera är det möjligt att deploya direkt från Visual Studio. Tidigare kunde man bara bygga paket och fick själv ladda upp dessa genom portalen alternativt med hjälp av PowerShell. Det här är ett enormt lyft och gör hantering av deployment samt historik av deployade paket mycket enklare.

Alla externa verktyg som på något sätt ska komma åt Windows Azure Managements api måste använda sig av ett X.509-certifikat. Man kan använda ett existerande certifikat eller utfärda ett nytt eget. Enklaste sättet att utfärda ett eget certifikat är att använda Visual Studio.

  • Klicka på Windows Azure Compute i Server Explorer och välj Add Slot…

image

  • Högerklicka på den vita rutan och välj New…

image 

  • Skapa ett nytt certifikat genom att välja <Create…> i rullistan i steg 1.
  • Kopiera pathen till filen som representerar certifikatet genom att klicka på länken i steg 2.

Oavsett om man väljer ett existerande certifikat eller om man har utfärdat ett eget måste man ladda upp det till Azure Portalen.

  • Logga in på portalen och klicka på Account

image

  • Klicka på Manage My API Certificates och ladda där upp det certifikat som du precis kopierat pathen till.
  • Klicka på Account igen och kopiera ditt Subscription ID som finns längst ner på sidan.
  • Ge dina rättigheter ett vänligt namn.

image

Du kan nu lista de slots du har för din tjänst i Azure och lägga till respektive slot du vill kunna granska i Server Explorer.

 

Cerebrata Cloud Storage Studio

Samma certifikat som nu finns uppladdat i Windows Azure-portalen kan också med fördel användas av andra verktyg. Jag är ett fan av Cerebratas Cloud Storage Studio där det också finns möjlighet att övervaka tjänster i Azure, göra nya deployments, starta och stoppa tjänster samt byta mellan Staging och Produktion.

I Cloud Storage Studio är det bara att klicka på Connect to Hosted Service, klistra in sitt Subscription ID från Azure-portalen samt peka ut certifikatet.

image

Om det certifikat som ska användas är genererat av Visual Studio enligt ovan så hittar man det under:

  • Certifikate Store
    • Certificates – Current User
      • My

image

onsdag, mars 24, 2010

TechDays 2010

Två intensiva dagar i Örebro är över för denna gång och jag måste säga att TechDays 2010 var ett klart lyft jämfört med 2009!


Lyckligtvis fick jag möjlighet att hålla min session, A Lap Around Visual Studio 2010 under dag 1 vilket gjorde att jag sedan kunde ta det lugnt och bara “vara” resten av tiden. Sessionen var relativt välbesökt men i en lokal som tar 1400 personer är det svårt att uppskatta hur många det var på plats. Allt flöt på bra och jag har fått mycket positiv feedback efteråt. Ska bli spännande att se utvärderingarna! Jag fokuserade på nyheterna i IDE’n, nyheterna i språken med en demo om Covariance, visa lite av parallell extensions och avslutade med lite nyheter i WPF 4. Det är så klart svårt att täcka speciellt mycket på bara en timme men det kändes ändå som att det blev en bra översikt över nyheterna.


Direkt efter min session hoppade jag in i en Taxi och åkte till Örebro Universitet för att köra min session igen på TechDays@Campus. Ett mycket bra initiativ från Microsoft och Örebro Universitet! Studenterna fick möjligheten att se keynote från dag 1 streamat och hade sedan valt ut fyra sessioner som de vill ha levererade på plats. Före mig hade Magnus Mårtensson pratat om Azure Storage, Tiberiu Covaci om parallell computing och Tess Ferrandez om ASP.NET debugging. Gruppen var lite sliten och något desarmerad när jag kom dit kl 15.00 och jag antar att Tess session kanske var lite väl komplex. Jag började med att fråga hur många som hade använt någon version av Visual Studio och såg tre händer… Det gjorde att jag fick ändra lite i min session, hoppa över några demos och prata mer om hur det har varit tidigare och visa tydligare visa på förändringar.


Connecta var med som utställare och vi hade även tagit dit vårt Surface bord. Som vanligt drog Sonicspree mycket folk!


TechDays - Surface


På kvällen var det underhållning med Henrik Schyffert som alltid är helt lysande!



imac




//Björn

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.

söndag, januari 17, 2010

Azure Development Storage i SQL Server 2008 R2

Sista tiden har jag utvecklat en hel del mot Windows Azure i Visual Studio 2010 och om man som jag inte gillar SQL Express utan vill använda SQL Server 2008 R2 till Development Storage är det väldigt enkelt att fixa till det. När man startar ett Windows Azure projekt första gången skapas en lokal SQL Server Express-databas med tabeller för köer, blobbar och tabeller. För att istället skapa databasen i en icke-express-variant av SQL Server måste man först själv skapa databasen som behövs med hjälp av ett program i Windows Azure SDK.

I katalogen C:\Program Files\Windows Azure SDK\v1.0\bin\devstore finns filen dsinit.exe. Det är den som exekveras när man startat ett Azure projekt första gången och skapar upp databasen. Starta en command prompt och exekvera dsinit.exe enligt följande för att installera den på default-instasen:
dsinit.exe /sqlinstance:.

Eller om man vill installera den på en namngiven instans:
dsinit.exe /sqlinstance:myLocalInstance

Updatera sedan DSService.exe.config och lägg till attributet dbServer enligt nedan:

<service name="Blob" url="http://127.0.0.1:10000/" dbServer="ComputerName\NamedInstance"/>
<service name="Queue" url="http://127.0.0.1:10001/" dbServer=" ComputerName\NamedInstance "/>
<service name="Table" url="http://127.0.0.1:10002/" dbServer=" ComputerName\NamedInstance "/>

Man kan också använda dsinit.exe om man vill rensa allt innehåll i databasen, dvs tömma köer, blobbar och tabeller med:
dsinit.exe /sqlinstance:myLocalInstance /forceCreate

Det finns en del forum, blogger och liknande som hänvisar till att man ska göra ändringarna i DevelopmentStorage.exe.config men det var det gamla namnet och numera heter den DSService.exe.