<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Christofer Löf</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/chrislof/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/chrislof/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:19:02 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Context/Specification enhetstester</title>
      <link>https://docs.microsoft.com/archive/blogs/chrislof/contextspecification-enhetstester</link>
      <pubDate>Sat, 09 Oct 2010 00:53:00 GMT</pubDate>
      <dc:creator><![CDATA[Christofer Löf [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chrislof/2010/10/09/contextspecification-enhetstester/</guid>
      <description><![CDATA[Context/Specification &auml;r en alternativ stil att skriva enhetstester enligt. Stilen kan vara...]]></description>
      <content:encoded><![CDATA[<p>
Context/Specification &auml;r en alternativ stil att skriva enhetstester enligt. Stilen kan vara ett verktyg i arbetet med att reda ut en komplex flora av enhetstester, samtidigt som den kan ge en tydligare koppling till kravst&auml;llningen.</p>
<p><a href="https://christoferlof.com/testing/context-specification-tests">L&auml;s artikeln i sin helhet h&auml;r</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Att integrationstesta WCF-tjänster</title>
      <link>https://docs.microsoft.com/archive/blogs/chrislof/att-integrationstesta-wcf-tjnster</link>
      <pubDate>Wed, 21 Apr 2010 04:55:16 GMT</pubDate>
      <dc:creator><![CDATA[Christofer Löf [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chrislof/2010/04/21/att-integrationstesta-wcf-tjnster/</guid>
      <description><![CDATA[I en tidigare artikel skrev jag hur du kan isolera tjänsteimplementationen för att möjliggöra...]]></description>
      <content:encoded><![CDATA[<p><a href="https://blogs.msdn.com/chrislof/archive/2009/11/07/att-enhetstesta-wcf-tj-nster.aspx">I en tidigare artikel skrev jag hur du kan isolera tjänsteimplementationen för att möjliggöra enhetstestning.</a> Du kommer också behöva testa tjänsten i sin helhet eller åtminstone med flera enheter tillsammans. </p>  <p>Att köra manuella tester med hjälp av <a href="https://msdn.microsoft.com/en-us/library/bb552363.aspx">WCF Service Host</a> och <a href="https://msdn.microsoft.com/en-us/library/bb552364.aspx">WCF Test Client</a> är ett alternativ för att testa tjänsten i sin helhet. Manuella tester har sin plats i utvecklingscykeln men gapet mellan enhetstester och manuella tester bör fyllas med automatiserade integrationstester och funktionstester . </p>  <p>Då kommer vi till frågan hur vi på ett enkelt sätt kan husera WCF tjänsten och sedan exekvera de automatiserade testerna på den? Min rekommendation är att instansiera tjänstevärden inom ramen för din testklass (ServiceHost). För att slippa skriva all tråkig ServiceHost-kod nyttjer jag själv&#160; ett bibliotek som kallas ServiceModelEx skrivet av Juval Löwy. Det&#160; innehåller, bland mycket annat, klasser som förenklar konfigurering av WCF-värden. I sin absolut enklaste form räcker det med två rader kod; en rad för att instansiera tjänsten och öppna kanalen och en rad kod för att stänga kanalen och värden. </p>  <pre class="code">[TestClass]
<span style="color: blue">public class </span><span style="color: #2b91af">when_process_is_successfully_invoked </span>: ContextSpecification {

    <span style="color: blue">protected </span>IMyService    Service;
    <span style="color: blue">protected bool          </span>Result;

    <span style="color: blue">protected override void </span>Context() {
        <span style="color: green">//create instance and open ipc channel
        </span>Service = InProcFactory.CreateInstance&lt;MyService, IMyService&gt;();
    }

    <span style="color: blue">protected override void </span>Because() {
        <span style="color: green">//execute integration test
        </span>Result = Service.Process();
    }

    [TestMethod]
    <span style="color: blue">public void </span>should_return_true() {
        <span style="color: green">//assert state
        </span>Assert.IsTrue(Result);
    }

    <span style="color: blue">public override void </span>Cleanup() {
        <span style="color: green">//close channel
        </span>InProcFactory.CloseProxy(Service);
    }
}</pre>

<p>Så min rekommendation till dig är att <a href="https://idesign.net/idesign/DesktopDefault.aspx?tabindex=5&amp;tabid=11">surfa över till IDesign.net och ladda ned ServiceModelEx.</a> Användandet av ServiceModelEx behandlas även i <a href="https://blogs.msdn.com/chrislof/archive/2009/01/14/wcf-best-practices.aspx">Juvals bok</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Kom igång med Windows Server AppFabric och Workflow Services</title>
      <link>https://docs.microsoft.com/archive/blogs/chrislof/kom-igng-med-windows-server-appfabric-och-workflow-services</link>
      <pubDate>Sun, 04 Apr 2010 09:27:34 GMT</pubDate>
      <dc:creator><![CDATA[Christofer Löf [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chrislof/2010/04/04/kom-igng-med-windows-server-appfabric-och-workflow-services/</guid>
      <description><![CDATA[Att bara säga AppFabric bäddar för missförstånd då vi i skrivandets stund har vi två erbjudanden i...]]></description>
      <content:encoded><![CDATA[<p>Att bara säga <em>AppFabric</em> bäddar för missförstånd då vi i skrivandets stund har vi två erbjudanden i AppFabric “familjen” med helt skilda förmågor. <a href="https://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx">Windows Server AppFabric</a> är ett tillägg till Windows Server som gör det enklare att bygga, skala och hantera webb- och komposit- applikationer som rullar på IIS. <a href="https://www.microsoft.com/windowsazure/appfabric/">Windows Azure platform AppFabric</a> hjälper dig att ansluta appar och tjänster mellan installationer i Windows Azure och installationer lokalt (läs <em>on-premise</em>). Med tanke på namnsättningen kan vi hoppas att “Appfabrikerna” kommer dela minst ett par av sina förmågor framöver. </p>  <p>I denna artikel visar jag hur du snabbt kommer igång med utvecklingen av en Windows Workflow Foundation (WF)-tjänst tillsammans med Windows Server AppFabric. Jag vill även påvisa att det nu är i princip lika enkelt att husera ett arbetsflöde och en WCF-tjänst som det är att husera en ASP.NET webbapplikation i IIS.</p>  <p>Värt att notera är att jag i denna artikel använder Windows Server AppFabric <font color="#00ff40">Beta 2</font> och Visual Studio 2010 <font color="#00ff00">RC</font> vilket gör att detaljer kan skilja sig från de kommande versionerna.</p>  <h2>Installera Windows Server AppFabric</h2>  <p>För att installera Windows Server AppFabric på din utvecklingsburk kan jag varmt rekommendera användandet av <a href="https://www.microsoft.com/web/platform/default.aspx">Web Platform Installer</a> (WebPI). Du får inte bara Windows Server AppFabric installerat utan WebPI gör också konfigurationen av Windows Server AppFabric åt dig. Himla smidigt för att snabbt komma igång med utvecklingen. Vill du istället <a href="https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=a1ed6018-ddd1-4bd8-b4af-6561e910ebb4">ladda ned installationspaketet</a> och göra installation och konfiguration manuellt så går naturligtvis det också bra. I denna artikel använder jag WebPI.</p>  <p>Efter <a href="https://www.microsoft.com/web/downloads/platform.aspx">installation av WebPI</a> behöver jag aktivera <em>Enterprise</em> funktionerna i WebPI. Det gör jag genom att klicka på <em>Options…</em></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_2.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WebPI" border="0" alt="WebPI" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb.png" width="640" height="475" /></a> </p>  <p>… följt av klick i <em>Enterprise</em> kryssrutan.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_4.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="enterprise" border="0" alt="enterprise" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_1.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_1.png" width="640" height="439" /></a> </p>  <p>Nu får jag tillgång till en ytterligare flik i WebPI där valet <em>Application Server</em> finns. </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_6.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_2.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_2.png" width="640" height="475" /></a> </p>  <p>Efter att jag klickat på <em>Install</em> installeras och konfigureras Windows Server AppFabric åt mig. (OK. Nu har jag skrivit <em>Windows Server AppFabric </em>för många gånger. Hädanefter skriver jag bara <em>AppFabric </em>men vi vet alla att det är Windows Server AppFabric jag menar och inget annat. Eller hur?).</p>  <h2>Bygg Workflow Service</h2>  <p>Jag startar Visual Studio 2010 med administratörsbehörighet (<em>Run as administrator). </em>Detta för att få interagera med IIS. Jag skapar sedan et nytt projekt av typen <em>WCF Workflow Service Application</em>.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_8.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_8.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_3.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_3.png" width="640" height="442" /></a> </p>  <p>Innan jag börjar utveckla min tjänst så vill jag ändra egenskaperna på projektet så Visual Studio förstår att det är AppFabric jag vill använda för test och inte den inbyggda webbservern. För att använda AppFabric så anger jag i projektets egenskaper att använda IIS – <em>Use Local IIS Web server. </em>Jag klickar också på <em>Create Virtual Directory</em> för att skapa den plats där min tjänst kommer exponeras.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_14.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_14.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_6.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_6.png" width="640" height="388" /></a> </p>  <p></p>  <p>Nu är jag redo att bygga min tjänst. Visual Studio skapade ett sekventiellt arbetsflöde åt mig när jag skapade projektet. För denna artikel räcker detta arbetsflöde bra. Vi kan se att det består av två <em>aktiviteter – </em>en aktivitet för att ta emot en förfråga och en aktivitet för att skicka svaret. Det är dessa två aktiviteter som utgör kontraktet för min tjänst. Namnet på tjänsteoperationen är <em>GetData</em>. För att se innehållet i meddelandet klickar jag på <em>View message…</em></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_18.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_18.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_8.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_8.png" width="488" height="480" /></a> </p>  <p>I dialogen <em>Content Definition</em> kan jag se att en variabel, med namn <em>data,</em> som är definierad i arbetsflödet tilldelas innehållet av meddelandet.</p>  <p></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_20.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_20.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_9.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_9.png" width="640" height="457" /></a> </p>  <p>För att se vilka variabler jag har till förfogande för vald aktivitet klickar jag på <em>Variables</em> i arbetsflödesdesignern. Jag ser då mycket riktigt att <em>data</em> är definierad och att den är av typen <em>System</em>.<em>Int32.</em></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_26.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_26.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_12.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_12.png" width="597" height="600" /></a> </p>  <p></p>  <p>För sakens skull tittar jag även på svarsmeddelandet genom att klicka på <em>View message… </em>på <em>SendResponse </em>aktiviteten.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_28.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_28.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_13.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_13.png" width="640" height="457" /></a> </p>  <p>Jag kan då se att svarsmeddelandet innehåller samma värde som skickas in som parameter i förfrågan till tjänsten (<em>data)</em> men skickas istället tillbaka som en sträng (System.String). Detta är fullt tillräckligt för en enkel “ping”-tjänst. Men jag vill göra en “ping”-tjänst deluxe… </p>  <p>Jag tänker mig en tjänst som multiplicerar inkommande värde med 1000. För att göra det drar jag ut <em>Assign</em>-aktiviteten från verktygslådan in i mitt arbetsflöde och lägger den mellan <em>Request </em>och <em>Response</em> aktiviteterna.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_30.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_30.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_14.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_14.png" width="256" height="358" /></a> </p>  <p>När jag gjort det får jag ett valideringsfel. Det beror i detta fall på att jag ännu inte har angivit något utryck i <em>Assign</em>-aktiviteten.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_32.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_32.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_15.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_15.png" width="488" height="480" /></a> </p>  <p>Det är variabeln <em>data</em> som jag vill multiplicera med sig själv så jag skriver “data” i fältet <em>To</em>. Jag noterar då två saker med <em>Assign-</em>aktiviteten; Det första är att jag får <em>IntelliSense</em> i fälten för utryck. Det andra jag noterar är att utryck endast kan anges med Visual Basic.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_34.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_34.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_16.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_16.png" width="488" height="480" /></a> </p>  <p>Jag känner mig nu nöjd med min <em>Workflow Service</em>. Arbetsflödet ser nu ut som följer. Förfrågan kommer in – inkommande värde multipliceras med 1000 – produkten av multipliceringen skickas tillbaka i svaret. </p>  <p></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_36.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_36.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_17.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_17.png" width="488" height="480" /></a> </p>  <p>Innan jag provkör min tjänst vill jag säkerställa mig om att tjänsten är satt som startsida. Visual Studio startar då WCF testklienten och refererar min tjänst automatiskt när jag sedan startar debuggern.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_38.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_38.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_18.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_18.png" width="426" height="312" /></a> </p>  <p>Dags att köra! =&gt; F5. WCF testklient startas och min tjänst refereras automatiskt. Jag anger “5” som parameter i förfrågan och får, som förväntat, “5000” till svar.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_42.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_42.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_20.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_20.png" width="640" height="405" /></a> </p>  <p>Men hur kan jag nu se att AppFabric har varit inblandat i allt detta?</p>  <p>Verktygen för att hantera AppFabric integreras med IIS Manager. Så jag startar IIS Manager och noterar att en ny sektion har lagts till i <em>Features </em>vyn för min applikation.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_46.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_46.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_22.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_22.png" width="640" height="276" /></a> </p>  <p></p>  <p>Genom att klicka på <em>AppFabric Dashboard</em> får jag en överblick av läget vad gäller tjänster och arbetsflöden. Jag ser att jag har ett arbetsflöde som har aktiverats och avslutats inom de senaste 24 timmarna.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_48.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_48.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_23.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedWindowsServerAppFabricochWorkf_D65E/image_thumb_23.png" width="640" height="167" /></a> </p>  <p>Detta var en överblick av Windows Server AppFabric och WCF Workflow Services. Jag hoppas med den att du nu har fått ytterligare lite inspiration och framöver överväger att använda Windows Workflow Foundation (WF) tillsammans med Windows Communication Foundation (WCF) och Windows Server AppFabric för att implementera dina tjänster. </p>  <p>Om du är riktigt sugen på WF/WCF/AppFabric och vill anta utmaningen att bli en WF-AppFabric-Ninja så har vi en kanonbra <a href="https://www.microsoft.com/downloads/details.aspx?FamilyID=dbe54610-44e2-412b-9d4b-17f47bdbde18&amp;displaylang=en">två dagars gör-det-själv utbildning att ladda ned här</a>. </p>]]></content:encoded>
    </item>
    <item>
      <title>Paging with "ActiveRecord for Azure" – The missing Skip()</title>
      <link>https://docs.microsoft.com/archive/blogs/chrislof/paging-with-activerecord-for-azure-the-missing-skip</link>
      <pubDate>Thu, 18 Mar 2010 02:55:05 GMT</pubDate>
      <dc:creator><![CDATA[Christofer Löf [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chrislof/2010/03/18/paging-with-activerecord-for-azure-the-missing-skip/</guid>
      <description><![CDATA[To get the first N of entities matching your query is really simple with the Data Services Client -...]]></description>
      <content:encoded><![CDATA[<p>To get the first <em>N</em> of entities matching your query is really simple with the Data Services Client - you just <a href="https://msdn.microsoft.com/en-us/library/dd894039.aspx">call the Take() method</a> on your query. But to get the next page of matches is a little more cumbersome since <a href="https://msdn.microsoft.com/en-us/library/dd135725.aspx">Skip() isn't supported</a>. The Azure Tables way of doing this is to <a href="https://code.msdn.microsoft.com/pagingtables">add the NextPartitionKey and NextRowKey HTTP-Headers to your request</a>. That also requires you to extract those headers from the first response in order to be able to send them with the next request. It's not hard to implement this but wouldn't it be easier to just use Skip()? My &quot;ActiveRecord for Azure&quot; sample brings this to the table.</p>  <p>First of - the ActiveRecord base class exposes a <em>Paged</em> method. Allowing you to easily get a paged list of the specific entity.</p>  <pre class="code">[<span style="color: #2b91af">Fact</span>]
<span style="color: blue">public void </span>it_returns_the_given_number_of_entities() {

    <span style="color: blue">var </span>pageSize = 5;

    <span style="color: blue">var </span>entities = <span style="color: #2b91af">FakeEntity</span>.Paged(pageSize);

    <span style="color: #2b91af">Assert</span>.Equal(pageSize, entities.Count());
}</pre>

<p><a href="https://11011.net/software/vspaste"></a>Second, The <em>PagedList</em> contains a <em>NextPageToken</em> property containing the <em>ContinuationToken</em> for the text page (if there’s one).</p>

<pre class="code">[<span style="color: #2b91af">Fact</span>]
<span style="color: blue">public void </span>it_returns_a_page_token_for_the_next_page()
{
    <span style="color: blue">var </span>pageSize = 5;

    <span style="color: blue">var </span>entities = <span style="color: #2b91af">FakeEntity</span>.Paged(pageSize);

    <span style="color: #2b91af">Assert</span>.Equal(<span style="color: #a31515">&quot;6@partition&quot;</span>, entities.NextPageToken.Token);
}</pre>

<p>Under the hood this is performed by my <em><a href="https://github.com/christoferlof/activerecordforazure/blob/master/src/ActiveRecordForAzure.Core/QueryableExtensions.cs">Skip method</a></em> implemented as a IQueryable extensions – so the same code works for your <a href="https://blogs.msdn.com/chrislof/archive/2010/01/25/stubs-with-activerecord-for-azure.aspx">unit tests</a> and for “real” <a href="https://msdn.microsoft.com/en-us/library/dd179374.aspx">DataServiceQueries</a>&#160;</p>

<pre class="code"><span style="color: blue">public static </span><span style="color: #2b91af">IPagedList</span>&lt;TEntity&gt; Paged(<span style="color: blue">int </span>pageSize, <span style="color: blue">string </span>pageToken) {
    <span style="color: blue">return </span><span style="color: #2b91af">ActiveRecordContext</span>.Current
        .CreateQuery&lt;TEntity&gt;()
        .Skip(pageToken)
        .Take(pageSize)
        .ToPagedList();
}</pre>
Using this in an application might look something like this 

<pre class="code"><span style="color: blue">public </span><span style="color: #2b91af">ActionResult </span>Index(<span style="color: blue">string </span>page) {

    <span style="color: blue">if</span>(<span style="color: blue">string</span>.IsNullOrEmpty(page))
        <span style="color: blue">return </span>View(<span style="color: #2b91af">Task</span>.Paged(PageSize)); 

    <span style="color: blue">return </span>View(<span style="color: #2b91af">Task</span>.Paged(PageSize, page));
}</pre>
The “ActiveRecord for Azure” sample code is available <a href="https://github.com/christoferlof/activerecordforazure">here</a>. A sample application using “ActiveRecord for Azure” is available <a href="https://cid-fda44bafd37fcedf.skydrive.live.com/self.aspx/blog/ar4a-ArTasks2.zip">here.</a>]]></content:encoded>
    </item>
    <item>
      <title>Mina Visual Studio anpassningar</title>
      <link>https://docs.microsoft.com/archive/blogs/chrislof/mina-visual-studio-anpassningar</link>
      <pubDate>Sun, 21 Feb 2010 07:15:51 GMT</pubDate>
      <dc:creator><![CDATA[Christofer Löf [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chrislof/2010/02/21/mina-visual-studio-anpassningar/</guid>
      <description><![CDATA[Väldigt ofta när jag kommer in i ett nytt projekt eller skall demonstrera något vid en presentation...]]></description>
      <content:encoded><![CDATA[<p>Väldigt ofta när jag kommer in i ett nytt projekt eller skall demonstrera något vid en presentation så reagerar alltid någon min svarta bakgrund i kodfiler i Visual Studio. Justeringen har jag gjort av den enkla anledningen att mina ögon tycker det är trevligare med ljus text på mörk bakgrund – framför allt om jag sitter länge och kodar.</p>  <p>Jag körde först med <a href="https://www.iunknown.com/2007/06/vibrant_ink_vis.html">John Lam’s Vibrant Ink port</a> men tyckte efter ett tag, precis som Rob Conery, att det temat har lite för hög kontrast. <a href="https://blog.wekeroad.com/blog/textmate-theme-for-visual-studio-take-2/">Rob’s uppdatering</a> tycker jag ger tydlig text som samtidigt är snäll mot ögonen. </p>  <p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="cs" border="0" alt="cs" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/MinaVisualStudioanpassningar_C178/image_5.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/MinaVisualStudioanpassningar_C178/image_5.png" width="387" height="278" /> </p>  <p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="xaml" border="0" alt="xaml" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/MinaVisualStudioanpassningar_C178/image_6.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/MinaVisualStudioanpassningar_C178/image_6.png" width="585" height="161" /> </p>  <p></p>  <p>För att importera ett tema väljer du alternativet <em>Import and Export setting</em> i <em>Tools</em>-menyn i Visual Studio. Kom ihåg att detta verktyg tillåter dig att importera och exportera mer eller mindre alla inställningar du kan göra i Visual Studio. Så innan du importerar någon annans inställningar kan det vara värt att exportera dina inställningar. Du kan också välja att bara importera eller exportera specifika inställningar, vilket gör att du kan importera t ex endast färger från ett “tema” du laddat ned.</p>  <p>En annan anpassning som jag också får frågor om är knapparna jag har för att byta profil snabbt. Med <em>profil</em> menar jag i praktiken <em>inställningar </em>för olika ändamål. Profilerna som jag har kallar jag “Code”, “Document” och “Present”. De representerar alla ett scenario som jag kan befinna mig i tillsammans med Visual Studio - Koda, dokumentera eller presentera.</p>  <p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/MinaVisualStudioanpassningar_C178/image_9.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/MinaVisualStudioanpassningar_C178/image_9.png" width="182" height="36" /> </p>  <p><em>Code</em> är det läge som jag använder i majoriteten av min tid i Visual Studio. När jag skall presentera något och visa kod med t ex en projektor så använder jag <em>Present </em>profilen vilken tar bort onödiga fönster och har större fontstorlek. <em>Document</em> är mer eller mindre den “vanliga” C# profilen som ger kod med svart text på vit bakgrund – vilket jag tycker lämpar sig bättre för dokument och blogginlägg.</p>  <p>Varje knapp ovan exekverar ett makro i Visual Studio som läser in inställningarna för aktuell profil.</p>  <pre class="code"><span style="color: blue">Private </span>RootFolder <span style="color: blue">As String </span>= <span style="color: #a31515">&quot;c:\users\chrislof\Documents\Visual Studio 10\Settings\&quot;</span></pre>
<a href="https://11011.net/software/vspaste"></a>

<pre class="code"><span style="color: blue">Public Sub </span>ImportPresentationSettings()
   ImportSettingsFile(<span style="color: #a31515">&quot;Presentation&quot;</span>)
<span style="color: blue">End Sub</span></pre>

<pre class="code"><span style="color: blue">Private Sub </span>ImportSettingsFile(<span style="color: blue">ByVal </span>FileName <span style="color: blue">As String</span>)
   FileName = System.IO.Path.Combine(RootFolder, FileName &amp; <span style="color: #a31515">&quot;.vssettings&quot;</span>)
   DTE.ExecuteCommand(<span style="color: #a31515">&quot;Tools.ImportandExportSettings&quot;</span>, <span style="color: #a31515">&quot;-import:&quot;&quot;&quot; </span>&amp; FileName &amp; <span style="color: #a31515">&quot;&quot;&quot;&quot;</span>)
<span style="color: blue">End Sub</span></pre>

<p><a href="https://11011.net/software/vspaste"></a><a href="https://blogs.msdn.com/saraford/archive/2008/12/05/did-you-know-you-can-create-toolbar-buttons-to-quickly-toggle-your-favorite-vs-settings-371.aspx">Sara Ford har beskrivit detta förfarande i sin Visual Studio Tips &amp; Tricks serie</a>.</p>

<p>Ovan anpassningar fungerar (numera) precis lika bra i VS2010 som i VS2008. Möjligheterna har som du förstår funnits ett bra tag men jag tycker att de är väl värda lite nytt ljus.</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Azure Guest OS och SDK versioner</title>
      <link>https://docs.microsoft.com/archive/blogs/chrislof/windows-azure-guest-os-och-sdk-versioner</link>
      <pubDate>Tue, 02 Feb 2010 12:49:51 GMT</pubDate>
      <dc:creator><![CDATA[Christofer Löf [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chrislof/2010/02/02/windows-azure-guest-os-och-sdk-versioner/</guid>
      <description><![CDATA[Idag släppte Azure teamet version 1.1 av SDK, Azure Tools och Guest OS. Detta innebär att du från...]]></description>
      <content:encoded><![CDATA[<p><a href="https://blogs.msdn.com/windowsazure/archive/2010/02/02/windows-azure-tools-and-sdk-1-1-released.aspx">Idag släppte Azure teamet version 1.1 av SDK, Azure Tools och Guest OS</a>. Detta innebär att du från och med nu behöver hålla lite koll på vilken version av SDK du använder när du bygger dina tjänster samt vilken version av Guest OS som du ämnar att köra dessa på.</p>  <p>På MSDN finns en redogörelse för de patchar som är applicerade på respektive Guest OS version samt information om vilka SDK versioner som är kompatibla med vilka Guest OS versioner.</p>  <p>Windows Azure Tools for Visual Studio v1.1 behöver du installera för att bygga Azure tjänster med Visual Studio 2010 RC.</p>  <p><a href="https://msdn.microsoft.com/en-us/library/ee924680(lightweight).aspx">Detaljerad information om SDK och Guest OS kompabilitet finner du här.</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Stubs with “ActiveRecord for Azure”</title>
      <link>https://docs.microsoft.com/archive/blogs/chrislof/stubs-with-activerecord-for-azure</link>
      <pubDate>Mon, 25 Jan 2010 13:02:19 GMT</pubDate>
      <dc:creator><![CDATA[Christofer Löf [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chrislof/2010/01/25/stubs-with-activerecord-for-azure/</guid>
      <description><![CDATA[In a previous post I showed how to do basic CRUD operations with my sample ActiveRecord...]]></description>
      <content:encoded><![CDATA[<p>In a previous post I showed how to do basic <a href="https://blogs.msdn.com/chrislof/archive/2009/12/19/cruding-with-activerecord-for-azure.aspx">CRUD operations</a> with my <a href="https://blogs.msdn.com/chrislof/archive/2009/12/16/introducing-activerecord-for-azure.aspx">sample ActiveRecord implementation</a> for Windows Azure Tables. The attentive reader probably noticed my use of ASP.NET MVC and static methods on the entity for operations like Find and Delete. Most of the times statics like this are bad when it comes to testability, because they're hard to stub out. But just like ASP.NET MVC - &quot;ActiveRecord for Azure&quot; was designed with testing in mind.</p>  <p>If we have a look on the test for the Create action, it first setups the Task entity for testing by calling its static Setup(int) method. By calling Setup it will use a local, in memory, repository and populate it with the given number of entities.</p>  <pre class="code">[<span style="color: #2b91af">Fact</span>]
<span style="color: blue">public void </span>it_creates_new_task() {

    <span style="color: #2b91af">Task</span>.Setup(0); <span style="color: green">//setup for test but don't create entities
    </span><span style="color: blue">var </span>controller = <span style="color: blue">new </span><span style="color: #2b91af">TasksController</span>();
    
    controller.Create(<span style="color: blue">new </span><span style="color: #2b91af">Task</span>());

    <span style="color: #2b91af">Assert</span>.Equal(1, <span style="color: #2b91af">Task</span>.All().Count());
}</pre>

<p>The Setup method also allows you to specify how the pre-populated entities will be initialized with data. In the example below the Task repository will be populated with one Task with a RowKey of &quot;1&quot; and a PartitionKey of &quot;AR4A&quot;.</p>

<pre class="code">[<span style="color: #2b91af">Fact</span>]
<span style="color: blue">public void </span>it_should_display_requested_task() {

    <span style="color: #2b91af">Task</span>.Setup(1)
        .With(x =&gt; x.RowKey).Returns(<span style="color: #a31515">&quot;1&quot;</span>)
        .With(x =&gt; x.PartitionKey).Returns(<span style="color: #a31515">&quot;AR4A&quot;</span>); <span style="color: green">//for now.. 

    </span><span style="color: blue">var </span>controller = <span style="color: blue">new </span><span style="color: #2b91af">TasksController</span>();
    <span style="color: blue">var </span>result = controller.Edit(<span style="color: #a31515">&quot;1&quot;</span>) <span style="color: blue">as </span><span style="color: #2b91af">ViewResult</span>;

    <span style="color: #2b91af">Assert</span>.Equal(<span style="color: #a31515">&quot;1&quot;</span>, ((<span style="color: #2b91af">Task</span>)result.ViewData.Model).RowKey);

}</pre>

<p>So the stubs support in &quot;ActiveRecord for Azure&quot; basically shows how to substitute the &quot;cloud aware&quot; DataServiceContext with an in-memory context, allowing you to unit test your applications without accessing Windows Azure Table Storage.</p>

<p>The above examples are available in the download below.</p>

<p><iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="https://cid-fda44bafd37fcedf.skydrive.live.com/embedicon.aspx/blog/ar4a-ArTasks2.zip" frameborder="0" marginwidth="0" scrolling="no"></iframe></p>

<p>The complete “ActiveRecord for Azure” sample source is available <a href="https://github.com/christoferlof/activerecordforazure">here</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>WCF, Data Services och RIA Services – Vi reder ut begreppen</title>
      <link>https://docs.microsoft.com/archive/blogs/chrislof/wcf-data-services-och-ria-services-vi-reder-ut-begreppen</link>
      <pubDate>Mon, 04 Jan 2010 13:23:00 GMT</pubDate>
      <dc:creator><![CDATA[Christofer Löf [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chrislof/2010/01/04/wcf-data-services-och-ria-services-vi-reder-ut-begreppen/</guid>
      <description><![CDATA[SOAP Services, WebHttp Services, Data Services, Workflow Services och RIA Services är olika...]]></description>
      <content:encoded><![CDATA[<p>SOAP Services, WebHttp Services, Data Services, Workflow Services och RIA Services är olika alternativ för att bygga tjänster med WCF. </p>  <p>När skall man använda vad? Varför bytte <i>ADO.NET Data Services</i> och <i>.NET RIA Services</i> namn till <a mce_href="https://msdn.microsoft.com/en-us/data/bb931106.aspx" href="https://msdn.microsoft.com/en-us/data/bb931106.aspx">WCF Data Services</a> respektive <a mce_href="https://msdn.microsoft.com/en-us/library/ee707344(VS.91).aspx" href="https://msdn.microsoft.com/en-us/library/ee707344(VS.91).aspx">WCF RIA Services</a>?</p>  <p><a mce_href="https://blogs.msdn.com/endpoint/archive/2010/01/04/wcf-data-services-ria-services-alignment-questions-and-answers.aspx" href="https://blogs.msdn.com/endpoint/archive/2010/01/04/wcf-data-services-ria-services-alignment-questions-and-answers.aspx">Produktgruppen reder ut begreppen här.</a></p>  <p><a mce_href="https://blogs.msdn.com/endpoint/archive/2010/01/04/wcf-data-services-ria-services-alignment-questions-and-answers.aspx" href="https://blogs.msdn.com/endpoint/archive/2010/01/04/wcf-data-services-ria-services-alignment-questions-and-answers.aspx"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WCF diagram" border="0" alt="WCF diagram" mce_src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/WCFDataServicesochRIAServicesVirederutbe_13AF7/WcfOverviewDiagram_18_3.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/WCFDataServicesochRIAServicesVirederutbe_13AF7/WcfOverviewDiagram_18_3.png" width="480" height="360" src="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/WCFDataServicesochRIAServicesVirederutbe_13AF7/WcfOverviewDiagram_18_3.png"></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Kom igång med Visual Studio 2010 Beta 2 och Windows Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/chrislof/kom-igng-med-visual-studio-2010-beta-2-och-windows-azure</link>
      <pubDate>Sun, 20 Dec 2009 02:12:00 GMT</pubDate>
      <dc:creator><![CDATA[Christofer Löf [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chrislof/2009/12/20/kom-igng-med-visual-studio-2010-beta-2-och-windows-azure/</guid>
      <description><![CDATA[Nu när julen kommer farandes brukar en hel del människor ta några dagar ledigt. Vad kan då passa...]]></description>
      <content:encoded><![CDATA[<p>Nu när julen kommer farandes brukar en hel del människor ta några dagar ledigt. Vad kan då passa bättre än att passa på att kanske lära sig något nytt?</p>  <p>Visual Studio 2010 Beta 2 släpptes som bekant i oktober månad. Vid den tidpunkten vad den senaste versionen av Windows Azure verktygen för Visual Studio den version som släpptes i juli. Detta gjorde att Visual Studio teamet valde att inte skicka med verktygen för Windows Azure i Visual Studio 2010 Beta 2 då de visste att det kommer en ny version i samband med Windows Azure releasen på PDC. Men det är inte så illa som det kanske låter. De såg istället till att det fanns ett enkelt sätt att installera Windows Azure verktygen när de väl är släppta.</p>  <p>När du väljer att skapa ett nytt projekt av typen <em>Windows Azure Cloud Service</em> så kommer du första gången att skickas till webbsidan för nedladdning och installation av <em>Visual Studio Tools for Windows Azure</em>. En helt respektabel lösning på det hela tycker jag. När Visual Studio 2010 släpps någon gång i vår så kan vi nog vara ganska säkra på att de har synkat releaserna. (<a href="https://haacked.com/archive/2009/11/17/asp.net-mvc-2-beta-released.aspx">Detta gäller också ASP.NET MVC 2 men är en annan historia</a>)</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_6.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="new cloud service dialog" border="0" alt="new cloud service dialog" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_2.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_2.png" width="420" height="248" /></a> </p>  <p>När jag har skapat mitt projekt får jag möjligheten att lägga till en eller flera sk <em>Roller. </em>En <em>Roll</em> är helt enkelt en viss typ av applikation som kan köras i Windows Azure. Några nyheter som vi kan se här är bland annat roller för WCF och ASP.NET MVC. Just nu kör jag på <a href="https://www.microsoft.com/express/future/default.aspx">Visual Web Developer 2010 Express</a> (gratisversionen av Visual Studio) vilket gör att jag inte får tillgång till den nya <em>F# Worker</em>-rollen. </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_10.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_10.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Create Cloud Service" border="0" alt="Create Cloud Service" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_4.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_4.png" width="420" height="267" /></a> </p>  <p>Nu när min molntjänst har skapats har jag fått två projekt i Visual Studio. Det ena projektet är definitionen av min molntjänst (CloudService11) – denna innehåller, bland en hel del annat,&#160; information om vilka roller som ingår och antalet instanser av dessa roller.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_14.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_14.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Cloud Service" border="0" alt="Cloud Service" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_6.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_6.png" width="266" height="383" /></a> </p>  <p></p>  <p></p>  <p></p>  <p></p>  <p></p>  <p>Med Visual Studio 2010 kommer också .NET Framework 4 (eller om man nu ser på det åt andra hållet). Som standard när jag skapar ett nytt projekt i Visual Studio 2010 så är det förvalt att projektet skall köras på just .NET Framework 4. Vad jag måste ha i åtanke här är att Windows Azure inte, än, stöder .NET Framework 4 utan där är det .NET Framework 3.5 SP1 som gäller. Jag måste alltså ändra vilket ramverk min molntjänst skall baseras på för att kunna publicera den till Windows Azure. Med någon av betalversionerna av Visual Studio 2010 kan jag välja detta direkt när projektet skapas men iom att jag nu gör <em>Express</em> får jag ändra detta i efterhand. Detta gör jag genom att högerklicka på mitt webbprojekt och välja <em>Properties. </em>I denna vy ser jag sedan till att <em>Target framework</em> är satt till <em>.NET Framework 3.5.</em></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_16.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_16.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Target Framework" border="0" alt="Target Framework" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_7.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_7.png" width="420" height="229" /></a> </p>  <p>Vad jag också brukar göra är att ändra antalet instanser av varje roll. Det är nämligen så att man måste ha minst två instanser av varje roll för att fastställda<a href="https://www.microsoft.com/windowsazure/pricing/#windows"> SLA:er skall gälla</a>. För att göra detta dubbelklickar jag på min roll <em>Hello World </em>och justerar därefter värdet på <em>Instance count</em> till 2. Vad som också kan vara värt att lägga märke till här är möjligheten att välja storlek på den virtuella maskin som min roll (webbapplikation i detta fall) kommer installeras och köras i. En <em>Small</em> är en burk med ca 2GB RAM och 1 processorkärna. <a href="https://msdn.microsoft.com/en-us/library/ee814754.aspx">För varje storlek dubblas kapaciteten, vilket gör att en ExtraLarge är på ca 16GB RAM och 8 processorkärnor</a>.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_20.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_20.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Rollkonfiguration" border="0" alt="Rollkonfiguration" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_9.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_9.png" width="420" height="229" /></a> </p>  <p>Jag har nu knåpat på min webbapplikation och vill prova den i Windows Azure. Jag skulle kunna publicera den till molnet och testa där men ett mycket snabbare sätt är att köra den i den lokala simuleringsmiljön <em>Windows Azure Simulation Environment</em>. Genom att starta debuggern (F5) startas också simuleringsmiljön och min molntjänst publiceras dit.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_22.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_22.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Windows Azure simulation environment" border="0" alt="Windows Azure simulation environment" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_10.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_10.png" width="420" height="109" /></a> </p>  <p>Genom att öppna <em>Development Fabric</em> kan jag nu se att jag har två instanser av min <em>Hello World</em> webbapplikation rullandes.</p>  <p></p>  <p></p>  <p></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_24.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_24.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Development Fabric" border="0" alt="Development Fabric" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_11.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_11.png" width="420" height="316" /></a> </p>  <p>Nu när jag känner mig nöjd med min molntjänst högerklickar jag på mitt molntjänstprojekt och väljer <em>Publish</em>. Visual Studio skapar då ett paket som är <a href="https://windows.azure.com/">redo att laddas upp till Windows Azure</a>.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_26.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_26.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_12.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/KomigngmedVisualStudio2010ochWindowsAzur_CDFE/image_thumb_12.png" width="251" height="108" /></a> </p>  <p>Lycka till i molnet och God Jul!</p>  <p>Mer läsning</p>  <ul>   <li><a href="https://www.microsoft.com/windowsazure/getstarted/">Getting Started</a></li>    <li><a href="https://blogs.msdn.com/johanl/archive/2009/09/10/kom-ig-ng-med-windows-azure-idag.aspx">Kom igång med Windows Azure idag!</a></li>    <li><a href="https://wadc.cloudapp.net/">Tävla och vinn i molnet – Windows Azure Developer Challange</a></li> </ul>]]></content:encoded>
    </item>
    <item>
      <title>CRUDing with “ActiveRecord for Azure”</title>
      <link>https://docs.microsoft.com/archive/blogs/chrislof/cruding-with-activerecord-for-azure</link>
      <pubDate>Sat, 19 Dec 2009 02:24:49 GMT</pubDate>
      <dc:creator><![CDATA[Christofer Löf [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chrislof/2009/12/19/cruding-with-activerecord-for-azure/</guid>
      <description><![CDATA[In my previous blog post I introduced you to my little experiment – a sample implementation of the...]]></description>
      <content:encoded><![CDATA[<p><a href="https://blogs.msdn.com/chrislof/archive/2009/12/16/introducing-activerecord-for-azure.aspx">In my previous blog post I introduced you to my little experiment</a> – a sample implementation of the ActiveRecord pattern for the Windows Azure Storage system which I call “ActiveRecord for Azure”. (It’s easier to refer to something it it has a name – right?). In this post I want to elaborate a little bit further on the features previously mentioned. Since most of us associate the ActiveRecord pattern with MVC style apps I’m going to show the Create, Read, Update and Delete (CRUD) support by implementing a simple Task List application using ASP.NET MVC.</p>  <h2>Wire it up</h2>  <p>First I’ve to set up the “ActiveRecord for Azure” environment – that’s; create tables, wire up configuration change handlers etc. I’ve put all this kind of logic into the <em>ActiveRecordEnvironment</em> class. All I have to do is to call its <em>Start-</em>method. Probably the best place to do this is in the RoleInstance startup event. To do that I just create a class which derives from <a href="https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.roleentrypoint.aspx">RoleEntryPoint</a> and overrides its <em>OnStart</em> –method.</p>  <pre class="code"><span style="color: blue">public class </span><span style="color: #2b91af">WebRole </span>: <span style="color: #2b91af">RoleEntryPoint
</span>{
    <span style="color: blue">public override bool </span>OnStart()
    {
        <span style="color: green">//start the ActiveRecord environment
        </span><span style="color: #2b91af">ActiveRecordEnvironment</span>.Start(<span style="color: blue">this</span>);

        <span style="color: blue">return base</span>.OnStart();
    }
}</pre>

<h2>The Model</h2>

<p>I’m now ready to implement my <em>Model</em>. Since it’s a Task List application I’m building the Model at least&#160; needs to have a <em>Task</em> entity. To store an entity in Windows Azure Tables it has to have three properties called <em><a href="https://msdn.microsoft.com/en-us/library/dd179338.aspx">RowKey, PartitionKey and Timestamp</a></em><em></em>.&#160; You could certainly write these yourself (or derive from <a href="https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.tableserviceentity.aspx">TableServiceEntity</a>) but you have to handle the generation and associations of RowKeys and PartitionKeys “manually”.&#160; The <em>ActiveRecord </em>base class takes care of this for me and also equips the entity with the CRUD operations.</p>

<pre class="code"><span style="color: blue">public class </span><span style="color: #2b91af">Task </span>: <span style="color: #2b91af">ActiveRecord</span>&lt;<span style="color: #2b91af">Task</span>&gt;
{
    [<span style="color: #2b91af">Required</span>]
    <span style="color: blue">public string </span>Title { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
    
    <span style="color: blue">public </span><span style="color: #2b91af">DateTime </span>Due { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }

    <span style="color: blue">public bool </span>Complete { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
}</pre>

<p>As you probably already recognized I’m using the validation attribute <em>Required</em> from the <a href="https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.aspx">System.ComponentModel.DataAnnotations</a> namespace to mark the <em>Title</em> property as mandatory. ASP.NET MVC 2 now knows how to handle these validation attributes. (No more validation logic scattered through out the app – yay!).</p>

<h2>The Controller<em>&#160;</em></h2>

<p>Listing all Tasks is as simple as calling the <em>All</em>-method on the Task class (provided by the <em>ActiveRecord</em> base class)</p>

<pre class="code"><span style="color: blue">public </span><span style="color: #2b91af">ActionResult </span>Index() {
    <span style="color: blue">return </span>View(<span style="color: #2b91af">Task</span>.All());
}</pre>

<p>As you can see in the below <em>Edit</em> Action Method the data access code is minimal. Allowing you to focus on the business problem while leveraging the performance of Windows Azure Table Storage. The “ActiveRecord for Azure” specific code rows are commented with “AR4A” – all other rows are just plain vanilla ASP.NET MVC.</p>

<pre class="code">[<span style="color: #2b91af">HttpPost</span>]
<span style="color: blue">public </span><span style="color: #2b91af">ActionResult </span>Edit(<span style="color: blue">string </span>id, <span style="color: #2b91af">Task </span>task) {
    <span style="color: blue">var </span>existingTask = <span style="color: #2b91af">Task</span>.Find(id); <span style="color: green">//AR4A

    </span><span style="color: blue">try </span>{
        UpdateModel(existingTask);
        existingTask.Save(); <span style="color: green">//AR4A

        </span><span style="color: blue">return </span>RedirectToAction(<span style="color: #a31515">&quot;Index&quot;</span>);
    }<span style="color: blue">catch </span>{
        <span style="color: blue">return </span>View(task);
    }
}</pre>

<p>To delete an entity I just call (you probably already figured this one out – didn’t you?) – Delete.</p>

<pre class="code">[<span style="color: #2b91af">HttpPost</span>]
<span style="color: blue">public </span><span style="color: #2b91af">ActionResult </span>Delete(<span style="color: blue">string </span>id) {
    <span style="color: #2b91af">Task</span>.Delete(id); <span style="color: green">//AR4A
    </span><span style="color: blue">return </span>RedirectToAction(<span style="color: #a31515">&quot;Index&quot;</span>);
}</pre>

<p>In the above example I called the static <em>Delete-</em>method and passed in the Id (RowId) of the <em>Task</em> to delete. I could also have called the Delete method on the specific Task instance to delete it.</p>

<h2>Wrapping it up</h2>

<p>So in just a few minutes I built myself a Task List application using Windows Azure and ASP.NET MVC 2. It’s so nice not having to spend hours on infrastructure code that in itself doesn’t provide any business value – isn’t it? </p>

<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/CRUDingwithActiveRecordforAzure_9127/image_2.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/CRUDingwithActiveRecordforAzure_9127/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/chrislof/WindowsLiveWriter/CRUDingwithActiveRecordforAzure_9127/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/chrislof/WindowsLiveWriter/CRUDingwithActiveRecordforAzure_9127/image_thumb.png" width="240" height="202" /></a> </p>

<p>You can download the full example below. <strong>Please remember – this comes as-is and should be considered example code only.</strong></p>
<iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="https://cid-fda44bafd37fcedf.skydrive.live.com/embedicon.aspx/blog/ar4a-ArTasks.zip" frameborder="0" marginwidth="0" scrolling="no"></iframe>]]></content:encoded>
    </item>
  </channel>
</rss>