Visar inlägg med etikett Visual Studio 2008. Visa alla inlägg
Visar inlägg med etikett Visual Studio 2008. Visa alla inlägg

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.

måndag, augusti 24, 2009

Dags att använda nUnit igen...

För ett par dagar sedan började jag jobba med NUnit igen. Sista tiden har jag använt mig av Visual Studios unit testing men nu ska vi använda oss av NUnit i projektet som jag sitter i. Det första jag gjorde var att lägga till tangentbordsgenvägar för att kunna köra respektive debugga det test som är i fokus (CTRL +R, T och CTRL + R + T) samt genväg för att köra alla test i en solution (CTRL + R, A). Can’t live without them! Som tur var så använder jag mig av ReSharper som också har en integrerad test runner i Visual Studio.

Sedan skapade jag ett nytt class library och la till referens till nunit.framework och konverterade ett par test som var skrivna med Visual Studios testramverk till NUnit.

En sak som jag alltid har gillat med NUnit är deras Asserts som är mycket mer avancerade än Visual Studios. Det är kanske inte alltid man behöver det men det ökar läsbarheten att kunna skriva:

Assert.That(expected, Is.EqualTo(actual));

Istället för:

Assert.AreEqual(expected, actual);

Så efter att ha copy/paste:at in mina tester och bara uppdaterat attributen till classen och testmetoderna var det bara att köra.

Alla test fungerade bra i NUnits egna testrunner men ett av testen misslyckades i ReSharpers integrerade testrunner i Visual Studio. Det test som rapporterades som misslyckat var ett test som hade attributet [ExpectedException]. Det visade sig att ReSharper inte kan hantera det attributet. Istället för att använda ett attribut för att markera att man förväntar sig ett fel från en metod får man använda sig av en annan assert från NUnit:

var ex = Assert.Throws(() => target.MethodThatWillReturnException());

måndag, augusti 18, 2008

De små nyheterna...

I (som jag skrev om i mitt förra inlägg) skrev jag om att man efter att ha installerat SP1 för Visual Studio 2008 fick man tillgång till "Close All" när man högerklickar på en flik. Det visade sig att det stämmer inte alls...

Idag när min kollega Pär skulle köra "Close All" i Visual Studio 2008 efter att ha installerat SP1 upptäckte vi att den funktionen inte alls kommer från SP1 utan från reSharper.

Ytterligare kärlek till reSharper alltså!

tisdag, augusti 12, 2008

De små nyheterna som gör en lycklig!

Igår släpptes Service Pack 1 för Visual Studio 2008 och Framework 3.5 vilket självklart måste laddas ner och installeras. För en gångs skull hade jag inte installerat någon av betaversionerna vilket gjorde att installationen var helt smärtfri.

De stora nyheterna är att Entity Framework och ADO.NET Data Services är släppt men ibland är det de små nyheterna som gör en lycklig! Upptäckte precis att de nu har implementerat Close All när man högerklickar på en tab!!!

Tidigare har man antingen varit tvingad att välja Close All But This och sedan stänga det fönster som blev kvar alternativt gå till Window - Close All Documents. Men nu - vilken time saver!!

reSharper 4.0

Ibland är man efter sin tid men jag känner om och om igen att jag alltid är efter Mikael Deurells tid! Under många år har han pratat om sin kärlek till reSharper och jag vet att om några år kommer jag också att prata om DFO, PowerShell och production debugging. Men nu är det reSharper som gäller! Har precis installerat version 4.0 i min Visual Studio 2008 där jag jobbar i ett Visual Basic-projekt och visst... Det är kärlek!

Okej, i VB är den absolut inte perfekt. T ex så är den inte helt med när det gäller dess rekomendationer om Imports och LINQ och inte heller funkar Split declaration and assignment när man använder LINQ. Den missar nämligen att lägga in den line continuation som VB kräver. Men vad gör väl det när man får tillgång till refactoring som Extract Method...

torsdag, juni 12, 2008

Snippet för Singleton

Många gånger har jag tänkt att jag ska göra en snippet för att skapa en singleton men det har aldrig blivit av men idag, efter en lyckad release hos kund, så tycket jag att jag kunde ta mig fem minuter för att knåpa ihop en sådan som sedan kommer att spara in de fem minuterna om och om igen. Och om jag sedan också kan spara fem minuter åt någon annan så är väl det toppen!

Min singleton är baserad på DoFactorys Singleton med .NET optimized code men jag har bytt ut deras accessor, som är en metod, till en property pga jag tycker att det då blir snyggare att accessa den från annan kod då. Man slipper parenteserna i anropet.

Skapa en ny fil i Visual Studio av typen XML File,döp den till singleton.snippet, spara den i \My Documents\Visual Studio 2008\Code Snippets\Visual C#\My Code Snippets\ och klistra in följande kod:


<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">


  <CodeSnippet Format="1.0.0">


    <Header>


      <Title>singleton</Title>


      <Shortcut>singleton</Shortcut>


      <Description>Code snippet for singleton class</Description>


      <Author>Björn Eriksen - Connecta</Author>


      <SnippetTypes>


        <SnippetType>Expansion</SnippetType>


      </SnippetTypes>


    </Header>


    <Snippet>


      <Declarations>


        <Literal>


          <ID>className</ID>


          <ToolTip>The name of the class</ToolTip>


          <Default>SingletonClassName</Default>


        </Literal>


        <Literal>


          <ID>methodName</ID>


          <ToolTip>A method in the singleton class</ToolTip>


          <Default>MethodName</Default>


        </Literal>


      </Declarations>


      <Code Language="CSharp">


        <![CDATA[


          public sealed class $className$


              {


                  //This is the instance that will hold the instance


                  private static readonly $className$ instance =


                    new $className$();


 


                  //Private constructor


                  private $className$()


                  {


                  }


 


                  //The property used to return the singleton instance


                  public static $className$ UniqueInstance


                  {


                      get


                      {


                          return instance;


                      }


                  }


 


                  //Add methods


                  public void $methodName$()


                  {


 


                  }


              }


        ]]>


      </Code>


    </Snippet>


  </CodeSnippet>


</CodeSnippets>


onsdag, juni 11, 2008

Lazy Load och Eager Load med LINQ to SQL

Lazy Load

LINQ to SQL implementerar i grunden ett pattern som heter Lazy Load. Lazy Load innebär att man, som i fallet med LINQ to SQL har att göra med en databas, bara hämtar de rader som man behöver när man faktiskt behöver dem. Inom LINQ kallar man det för Deferred Query Execution vilket betyder att man kan definiera en fråga i ett läge men att kopplingen mot databasen sker först när man börjar iterera resultatet.

När man deklarerar en fråga för att t ex hämta alla kunder som finns i en stad som börjar på bokstaven M:

            var customers = from c in db.Customers

                            where c.City.StartsWith("M")

                            select c;


så kommer det att skapas en representation av frågan i form av ett Query Expression Tree. Om man då sätter break point och debuggar kan man se vilken SQL som kommer att exekveras. Men det är först när man använder någon information från resultatet:

            foreach (var customer in customers)

            {

                Console.WriteLine(customer.ContactName);

            }


som raderna faktiskt hämtas. Så frågan ovan genererar en server-round trip som returnerar 13 rader (om man använder sig av Northwinds databas).

Om man sedan går vidare på varje kund och skriver ut dess ordrar enligt följande:

            foreach (var customer in customers)

            {

                Console.WriteLine(customer.ContactName);

                foreach (var order in customer.Orders)

                {

                    Console.WriteLine(" - " + order.OrderDate.ToString());

                }

            }


så kommer man att för varje kund-objekt generera en ny SQL och hämta just den kundens ordrar. Det innebär att iterationen över kundernas ordrar kommer att generera 14 server-round trips.

Det här kan vara väldigt bra i vissa lägen men mindre bra i andra lägen. Tänk att man har ett presenteras en trädvy där alla kund-objekt visas och sedan väljer användaren att bara expandera en av dessa kunder för att visa kundens alla ordrar. Ja då kanske det är bättre att i bara hämta just den kundens ordrar istället för att skicka över alla kunders ordrar.

Eager Load

Men om man nu har en sådan situation där man vet att man vill ladda alla kunder och alla dess ordrar, dvs man vill använda sig av Eager Load istället för Lazy Load, ja då finns det förstås en lösning och det är DataLoadOptions.

För att lyckas med Eager Load i LINQ så skapar man ett objekt av typen DataLoadOptions och anropar en metod som heter LoadWith. I LoadWith anger man vilka objekt man ska ladda samtidigt som det huvudobjekt man hämtar. Detta gör man med hjälp av ett lambdauttryck. DataLoadOptions-objektet lägger man sedan till i DataContext-objektet. Här nedan har jag använt mig av en object initializer för att sätta propertyn samtidigt som jag skapar objektet.

            var dlo = new DataLoadOptions();

            dlo.LoadWith<Customer>(p => p.Orders);

            var db = new NorthwindDataContext() { LoadOptions = dlo };


Den frågan som jag ställde i början av det här inlägget gällde att hämta alla kunder som bor i en stad som börjar på bokstaven M. När man då skapar ett DataLoadOptions-objekt så är det ett objekt av typen Customer som man anger som typ till den generiska metoden LoadWith och det här objektet är det som kallas grundobjektet. I lambdauttrycket anger man sedan vilket typ av objekt som man vill ladda samtidigt som det grundobjekt man planerar att hämta. Detta innebär att man med en server-round trip kommer att hämta kund-objekten samt dessa kunders alla ordrar.

DataLoadOptions-objektet kan man sedan fylla på med flera relaterade objekt av andra typer som man vill ladda samtidigt som huvudobjektet.

            var dlo = new DataLoadOptions();

            dlo.LoadWith<Customer>(p => p.Orders);

            dlo.LoadWith<Order>(o => o.Order_Details);


Lazy Load är ett fantastiskt pattern men det är väldigt viktigt att man känner till vilka implikationer det kan få att använda det. Lazy Load innebär alltid ett mer chatty interface vilket som sagt kan vara bra ibland men helt förödande i andra lägen.

onsdag, maj 14, 2008

reSharper 3.1 med C# 3.0...

Igår installerade jag reSharper 3.1 på min Visual Studio 2008. Bättre intellisense, bättre refactoring-stöd och en allmänt trevligare utvecklingsmiljö var det som lockade. Tyckte också att det skulle bli kul att se vilket extra stöd man fick till de nya features i C# 3.0 så utan att läsa på allt för mycket installerade jag den senaste versionen, 3.1. Hoppade direkt in och skapa en ny console application i mitt favorit direcotry d:\junk\ och började skriva min favorit LINQ-fråga:

var procs = from p in Process.GetProcesses()

          select p;

 

Men istället för p så poppade en skum intellisense upp och ville ha en typ av nått slag... skrev om skrev om och skrev om men jag fick inte till frågan. Började tro att jag hade hamnat i akut LINQ-koma! Men det visade sig så klart att reSharper 3.1 inte har stöd för C# 3.0 utan då måste man vänta till version 4.0.

 

Det alternativ man har är att ladda ner den senaste nightly builden från reSharper 4.0 men det känns lite väl hard core just nu med tanke på att vissa av byggena är taggade som Not Recommended.

 

 

Så, dags för avinstallation. In på add/remove programs och plocka bort den - gick mycket smärtfritt och sedan tillbaka in till Visual Studio igen men...

 

Ingen intellisense!

 

Det visade sig dock att det bara var en checkbox under Tools/Options/Text Editor/C#. Av någon anledning återställer inte avinstallationen av reSharper "Auto list members" - Puh!

 

Men visst är det så att man är lite sugen på att ladda ner senaste bygget och testa 4.0...

fredag, maj 02, 2008

Plugin-pattern på webben

Martin Fowler har i sin bok Patterns of Enterprise Application Architecture beskrivit ett plugin patter som man kan använda för att länka ihop applikationer genom konfiguration istället för vid kompilering. Min tanke var att bygga en webbapplikation, typ en portal, som sedan blir medveten om att andra applikationer existerar bara genom en konfigurering istället för att man måste känna till den vid utveckling. Min vision var att kunna utveckla och uppgradera portalen för sig och sedan utveckla och uppgradera applikationer för sig.

Jag började med att definiera ett interface som varje applikation måste implementera. Det interfacet ska kunna leverera information om applikationen i fråga:

    public interface IApplicationInfo

    {

        string ApplicationName { get; set; }

    }

 

Sedan la jag till en PluginFactory med en statisk metod getPlugin. Den metodens uppgift var att läsa in assemblyt (snyggt ord) från disk och skapa en instans av den klass som implementerar IApplicationInfo och returnera denna...

public static IApplicationInfo getPlugin(string assemblyName)

{

var assembly = Assembly.LoadFrom(assemblyName);

var assemblyTypes = from a in assembly.GetTypes()

                    select a;

 

foreach (var t in assemblyTypes)

{

    var o = Activator.CreateInstance(t);

    if (o is IApplicationInfo)

        return o as IApplicationInfo;

}

return null;

}

 

Först placerade jag min PluginFactory i samma Visual Studio 2008 projekt som Portalen men det gjorde att mina enhetstester mot getPlugin blev otroligt sega att köra eftersom att den måste starta igång webservern först. Det blev dock betydligt bättre när jag flyttade ut den till ett eget class-library. Ett härligt bevis på hur test-driven utveckling gör att man fattar beslut tidigt som gör att ens arkitektur blir mer testbar!

Nästa steg var att lägga till en AppSetting i min web.config för varje applikation som jag vill att portalen ska känna till och använde mig av en LINQ-fråga för att hämta ut dessa:

var applications = from a in ConfigurationManager.AppSettings.AllKeys

                   where a.StartsWith("PortalApplication")

                   select new { AssemblyName = ConfigurationManager.AppSettings[a] };

 

Grymt coolt! Refelction, LINQ, plugin-patterns och allt möjligt coolt men sen då? Vad har jag vunnit med det här jämfört med att bara lägga in den här informationen i web.config eller i en databas. Hur ska jag nu få mina applikationer att agera i portalen som om de var en del av portalen från första början?

Ju mer jag funderar på det hela desto mer ser det ut som att det är Facebook jag vill bygga (fast utan den sociala delen)... För det är ju precis det Facebook är, en portal med viss gemensam funktionalitet och ett antal tjänster som sedan applikationsutvecklare kan nyttja för att bygga egna applikationer som jackas in i portalen. Så hur har Facebook löst interaktionen mellan en applikation och portalen? Kör varje applikation i en IFrame eller? Är det någon som vet??

onsdag, april 16, 2008

Bug vid konvertering till 2008?

Idag fick jag en fråga från en tidigare uppdragskollega om att konvertera en web-applikation jag jobbat med till Visual Studio 2008. Han hade försökt men lyckades inte och fick det härliga och informativa System.Runtime.InteropServices.COMException. Inget i event loggen, ingen info i konverteringsloggen, ingenting... Man tackar!

Det projektet använder sig av EPiServer och Web Application Project (WAP). WAP var ju först en separat download till 2005, ingick sedan i SP1 och är nu en del av VS2008 så jag trodde att felet var där men icke. Felet ligger istället i hur de olika versionerna av Visual Studio hanterar om IIS finns installerat på utvecklarmaskinen eller inte.

Det finns en inställning under project properties där man kan välja om man ska använda den inbyggda web servern eller om man ska använda IIS. I VS2005 kan man välja det senare alternativet även om man inte har IIS installerat men det kan man inte i VS2008 utan får ”The IIS Web Server is not installed on this computer”.

Det trevliga COMException får man om man först skapar ett Web Application Project i 2005’an, sätter att den ska använda IIS utan att ha IIS installerat och sedan öppnar det i 2008’an.

Så lösningen är antingen att se till att IIS är installerat innan konverteringen till 2008 eller så går man in i projektfilen och ändrar True till False.

[Update 2008-04-22]
Buggen är verifierad sedan länge av produktteamet och kommer att rättas i nästa release (SP1).

tisdag, april 15, 2008

.NET 3.5 Enhancements Training Kit

Som jag har skrivit i ett tidigare inlägg på min blog så finns det ett VS2008 & .NET 3.5 Training Kit. Det här paketet har varit källan till en hel del när det gäller de seminarier jag har hållit tillsammans med Addskills om nyheterna i VS2008 och .NET Framework 3.5. Demos, slides och exempelkod har nyttjats.

Nu är det släppt ett liknande training kit för .NET 3.5 Enhancments som berör följande, kommande, tekniker:
- ADO.NET Data Services
- ASP.NET MVC
- ASP.NET Dynamic Data
- ADO.NET Entity Framework
- ASP.NET Ajax History
- ASP.NET Silverlight Controls

Med tanke på vilken källa till kunskap det förra training kittet har varit så kändes det här som en något perfekt att sätta tänderna i! Men... Det saknas en hel del.

"Presentations will be added in a future release of the training kit."
"Demos will be added in a future release of the training kit."
"Screencasts will be added in a future release of the training kit."
"Resources will be added in a future release of the training kit."

Det enda som finns med är ett par Hands-on labbar. Lite besviken blev jag men precis som de skriver så kommer det att komma i kommande releaser av training kitet.

.NET 3.5 Enhancements Training Kit

Dags för beta-cert!

Idag släpptes tre nya cert från Microsoft i det som kallas .NET 3.5 exams:

70-502: Windows Presentation Foundation
70-503: Windows Communication Foundation
70-504: Windows Workflow Foundation

Dom betatestades under början av året så om det var någon som skrev den under beta-tiden så börjar resultaten att trilla ner nu. Det tar alltså ett par månader från det att man skriver tills man får reda på om man klarade eller inte. Under tiden så utvärderas frågor och feedback, frågor stryks och ändras och sedan sätts en nivå som blir den som gäller för att klara beta-certet. Logga in på MCP-siten - där ser man resutlatet snabbast.

Det är också två andra cert som just nu beta-testas:

70-561: Microsoft .NET Framework 3.5, ADO.NET Application Development
70-562: Microsoft .NET Framework 3.5, ASP.NET Application Development

Betaperioden pågår fram till den 4 maj och det är gratis att skriva. Observera att tiden för certet är fyra timmar och att det är betydligt mycket fler frågor än på ett vanligt cert.

När man ska anmäla sig till beta-cert behöver man en kod och certen börjar med nummer 71 istället för 70.

71-561 – beta code = 561B1
71-562 – beta code = 562B1

Själv ska jag skriva den 29 och 30 april.

torsdag, februari 28, 2008

Cert för Visual Studio 2008

I samband med att jag håller kurser och seminarier om Visual Studio 2008 får jag ofta frågor om vad det är för cert på gång för VS2008.

Microsoft är på väg att släppa sex nya titlar:
• MCTS: .NET Framework 3.5, Windows Presentation Foundation Applications
• MCTS: .NET Framework 3.5, Windows Communication Foundation Applications
• MCTS: .NET Framework 3.5, Windows Workflow Foundation Applications
• MCTS: .NET Framework 3.5, Windows Forms Applications
• MCTS: .NET Framework 3.5, ADO.NET Applications
• MCTS: .NET Framework 3.5, ASP.NET Applications

Den core-exam 70-536 som funnits länge nu är grundkravet för samtliga titlar.

Som det ser ut just nu ska de bli tillgängliga i april 2008.

tisdag, februari 19, 2008

VS2008 & .net 3.5 Training Kit

Vill passa på att tacka alla som kom på mitt seminarium i Visual Studio. Min tidsplanering under förmiddagen var katastrof men det är ju så kul när det bli mycket frågor så jag hoppas att ni tycker att det också var givande. Under eftermiddagen körde jag ett betydligt högre tempo och han igenom hela materialet... Till och med SharePoint-demo!

Jag får en del frågor om exemplekod och demoprojekt och tänkte hänvisa till det material som ligger till grund för min presentation. Visual Studio 2008 and .NET Framework 3.5 Training Kit Ett riktigt bra paket som innehåller presentationer, labbar och demos. Väl värt att ladda ner och installera!

tisdag, februari 12, 2008

Super tuesday! - Känns stort!

Det snackas om att amerikanska valet hade sin Super Tuesday, dvs den dagen när halva landet går till primärval. Snick-snack, idag är det Super Tuesday, i alla fall för mig! Kan dessa releaser möjlighen ha nått att göra med att Microsoft kör TechReady i Seattle den här veckan??

Windows Server 2008 RTM. It´s out, finally! Gamla goda Longhorn får äntligen se dagens ljus. Känns stort. Produkten kommer att lanseras tillsammans med lanseringen av VS2008 och SQL Server 2008 inom kort vilket osökt leder mig in på nästa puck.

VIP-inbjudan till lanseringen av produkterna. Som en av 150 utvecklare har jag fått en inbjudan till lanseringen idag. Känns också stort och speciellt kul i och med att jag har varit ute och pratat om VS2008 i ett par månader nu.

Sedan finns det inte någon koppling till nästa punken men det känns ändå stort.

Windows Vista SP1 RTM! Jag har själv inte haft några problem alls med Vista men har hört att det ska bli bättre och snabbare med SP1 vilket aldrig är fel. Ska nog ändå vänta tills efter fredag innan jag installerar. För på fredag ska jag hålla ett seminarium i Visual Studio 2008 och väntar ca 100 pers på fm och 100 pers på em. Lite trist om datorn skulle paja idag då!

fredag, februari 08, 2008

SharePoint & VS2008

När man är ute och pratar om Visual Studio 2008 eller SharePoint får man ofta frågan om hur bra och på vilket sätt de funkar tillsammans. Till VS2005 finns ett tilläggspaket som kallas SharePoint extensions. Då får man tillgång till ett antal projekt och itemtemplates samt ett enkelt sätt att deploya till en utvecklingsmiljö.

I VS2008 och VS Tools for Office (som nu ingår i produkten - lysande! Nu kan äntligen OBA´s ta fart på allvar!!) finns stöd för att bygga SharePoint Workflows. På ett otroligt smidigt sätt kan man bygga ett workflow, deploya och debugga. Antalet steg som man behöver göra är drastiskt minskade! Men allt det andra då? Om man vill bygga en Site Defenition, hur gör man då?

Eftersom att SharePoint extensions inte finns för VS2008 har jag rekomenderat att avvakta men det finns lösningar. När det gäller VS2008 extensions for SharePoint så kommer det att släppas i juni 2008 och fram tills dess kan man använda sig av STSDEV som min mentee på Connecta Jouni Pakarinen tipsade mig om. Jag ser fram emot en demo Jouni!

lördag, december 08, 2007

Microsoft Volta rockar!

Tidigare i veckan släpptes en Community Technology Preview av Microsoft Volta. Volta är en extension till Visual Studio 2008 som är till för att hjälpa utvecklare att bygga distribuerade webbapplikationer. Först designar och bygger man en applikation som en klientapplikation. Volta tolkar den .NET-kod man skrivit och skriver om den till JavaScript. Så alla .NET bibliotekt man använt tolkas och konverteras till JavaScript. Det finns också möjlighet att komma åt HTML-DOM-element från .NET koden och manipulera dessa.

Volta jobbar på MSIL istället för källkod i from av text och använder MSIL-koden för att göra omskrivningen till annan kod. I och med att man använder omskrivning som teknik kan man vara väldigt sent i utvecklingsfasen innan man bestämmer hur man ska distribuera sin applikation mellan olika lager.

Arkitektur refactoring
Programmeringsmodellen i Volta tar refactoring till en ny nivå och möjliggör att med hjälp av attribut styra var delar av en applikation ska exekvera. Så bara genom att ange ett attribut på en klass: [RunAtOrigin()] så säger man åt Volta att istället för att skapa JavaScript för den klassen så skapas en WCF-tjänst som automatiskt accessas från JavaScript-klienten. Det möjliggör också att man på ett väldigt enkelt sätt kan bygga in asyncrona mönster i sina applikationer. Det är bara att lägga till ett [Async]-attribut och ge möjlighet att lägga till en callback-metod.

Långt in i framtiden
Eftersom att det här är en första CTP av Volta så är det fortfarande på ett väldigt expermintellt stadium och inte ens säkert att det kommer att ingå i någon produkt. Men det är i alla fall grymt coolt!

Det finns mycket mer att läsa och ett enkelt exempel att följa på: http://labs.live.com/volta/

fredag, november 23, 2007

Visual Studio 2008 - installation och utbildning

Min nerladdning och installation av Visual Studio 2008 gick relativt smärtfritt. Jag följde Scott Guthrie's tips hade inga större problem. Första gången jag körde installationen så avbröts den pga att en Windows Update som inte hade blivit klar plötsligt blev det. Men efter omstart så funkade det dock perfekt. VS2008 är den enda versionen jag har på min maskin men jag har också gjort en installation på en virtuell maskin där jag sedan tidigare hade 2005 - även det utan problem.

En kollega till mig har dock haft en hel del problem men han valde att fösta avinstallera VS2005 innan han la in 2008. Läs mer om det på hans blog.

Jag körde en heldagsutbildning igår i Visual Studio 2008 på Microsoft för deras ISV Partners och trodde jag skulle kunna säga att jag var en sån där cool kille som hållit utbildning på en betaprodukt. Men eftersom att den släpptes innan så kände jag mig tvingad att installera den nya. Så nu får jag väl säga att jag var ganska tidigt ute att hålla utbildning efter release...

måndag, november 19, 2007

VS 2008 RTM idag!

Nu sägs det då att Visual Studio 2008 ska vara släppt och finnas att ladda ner på MSDN. Problemet är bara det att just nu får man ett felmeddelande på MSDN när man försöker gå in på download-siten.

Server Error in '/' Application.

The file '/home.aspx' has not been pre-compiled, and cannot be requested.

Så man får väl testa ikväll istället...

måndag, november 05, 2007

Release av Visual Studio 2008 i november!

Idag på Keynote på TechEd developers fick vi den trevliga nyheten att Visual Studio 2008 och .Net Framework 3.5 kommer att släppas på MSDN i november! Som annonserats tidigare så kommer de att lanseras tillsammans med Windows Server 2008 och SQL Server 2008 i februari.