<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Mostly Technical Content</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/mtcmuc/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/mtcmuc/feed.xml</link>
    <description>Das Team-Blog des Microsoft Technology Center in München</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:25:58 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Als Frühbucher zur TechEd Europe 2013 - sparen Sie 300 US-Dollar Teilnahmegebühr</title>
      <link>https://docs.microsoft.com/archive/blogs/mtcmuc/als-frhbucher-zur-teched-europe-2013-sparen-sie-300-us-dollar-teilnahmegebhr</link>
      <pubDate>Tue, 12 Feb 2013 23:19:48 GMT</pubDate>
      <dc:creator><![CDATA[Gunnar-D]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mtcmuc/2013/02/12/als-frhbucher-zur-teched-europe-2013-sparen-sie-300-us-dollar-teilnahmegebhr/</guid>
      <description><![CDATA[http://www.msteched.com  Vom 25. bis 28. Juni 2013 ist es wieder soweit, die TechEd gibt ihr...]]></description>
      <content:encoded><![CDATA[<p><a href="http://www.msteched.com">http://www.msteched.com</a></p>  <p>Vom 25. bis 28. Juni 2013 ist es wieder soweit, die TechEd gibt ihr europäisches Gastspiel. Treffpunkt für Entwickler und IT Professionals im Microsoft-Umfeld ist im diesen Jahr die spanische Hauptstadt Madrid. Wie gewohnt bietet die wichtigste Technologiekonferenz von Microsoft jede Menge unterschiedlicher Lernmöglichkeiten und Hands-on Trainings, bei der Sie als Entwickler Ihr Fachwissen zu allen relevanten Microsoft-Technologien wie z. B. Office 365, Sharepoint oder Windows Phone, auf den neuesten Stand bringen können. Nutzen Sie darüber hinaus die Chance, brandneue Produkte detailliert kennenzulernen. Die Workshops und Vorträge gehen dabei weit über bloße Produktvorstellungen hinaus und liefern tieftechnische Details und Best Practices. Wer sich bis zum 22. März 2013 für eine Teilnahme entscheidet, kommt in den Genuss des Early-Bird-Tarfis und zahlt 1.695 US-Dollar statt regulär 1.995 US-Dollar.</p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 11 Beta Roadshow - jetzt anmelden!</title>
      <link>https://docs.microsoft.com/archive/blogs/mtcmuc/visual-studio-11-beta-roadshow-jetzt-anmelden</link>
      <pubDate>Wed, 21 Mar 2012 00:25:41 GMT</pubDate>
      <dc:creator><![CDATA[Gunnar-D]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mtcmuc/2012/03/21/visual-studio-11-beta-roadshow-jetzt-anmelden/</guid>
      <description><![CDATA[&#160;  Seit Ende Februar können Entwickler und Interessierte die Beta-Version von Visual Studio...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>Seit Ende Februar können Entwickler und Interessierte <a href="http://click.email.microsoftemail.com/?qs=2432a98c953e4a20bcadc53e4fff418302d2a48abbb3dbcaac0708affc8d0752b5c77a669d82d3fb">die Beta-Version von Visual Studio kostenlos ausprobieren</a> – und die Download-Zahlen zeigen, dass sehr fleißig getestet wird. Im April und Mai haben Sie die Gelegenheit, sich die Neuerungen und Verbesserungen der Entwicklungsumgebung genauer anzusehen – auf der kostenlosen <a href="http://click.email.microsoftemail.com/?qs=2432a98c953e4a2072556f7dc8974d7677f5f7afe72d18313630b0324fbbb5556203e81fa6813d93">Visual Studio 11 Beta Roadshow</a>!</p>  <p>Unter dem Motto &quot;<a href="http://click.email.microsoftemail.com/?qs=2432a98c953e4a20ca1b53f85de8abb8ac7b636aa1653e0a31b71914c8c283fbd3de1dfdf1bcf2e7">Visual Studio goes to Eleven</a>&quot; stellen dabei Experten wie Christian Binder, Patric Boscolo, Thomas Schissler oder Neno Loje wichtige Funktionen, sehenswerte Features und neue Möglichkeiten vor – sowohl für einzelne Entwickler wie auch für größere Entwicklungsteams. Auf der fünfstündigen Agenda stehen unter anderem Vorträge zur neuen IDE, zum Zusammenspiel von Team Foundation Server und Visual Studio sowie zu agilen Teams und ALM.</p>  <p>Die Tour macht bundesweit in vier Städten Halt – am 24. April in München, am 25. April in Frankfurt am Main, am 26. April in Karlsruhe und schließlich am 10. Mai in Hamburg. Die Anzahl der Plätze ist begrenzt – <a href="http://click.email.microsoftemail.com/?qs=2432a98c953e4a20461103486a3b6a87537faded2110f1c0ab798364e9153badae6c3b611b941673">eine schnelle Anmeldung</a> ist daher empfehlenswert.</p>  <p>&#160;</p>  <p>GunnarD</p>]]></content:encoded>
    </item>
    <item>
      <title>TechStudent Support Day</title>
      <link>https://docs.microsoft.com/archive/blogs/mtcmuc/techstudent-support-day</link>
      <pubDate>Mon, 19 Mar 2012 07:29:31 GMT</pubDate>
      <dc:creator><![CDATA[Gunnar-D]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mtcmuc/2012/03/19/techstudent-support-day/</guid>
      <description><![CDATA[Her mit Euren Fragen! Am 23.03. ist es wieder soweit: Der nächste TechStudent Support Day findet...]]></description>
      <content:encoded><![CDATA[<p>Her mit Euren Fragen! Am 23.03. ist e<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/3644.520x120_supportday_maerz_DE_V02_203D2760.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/3644.520x120_5F00_supportday_5F00_maerz_5F00_DE_5F00_V02_5F00_203D2760.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="520x120_supportday_maerz_DE_V02" border="0" alt="520x120_supportday_maerz_DE_V02" align="left" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/5314.520x120_supportday_maerz_DE_V02_thumb_337DDDFF.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/5314.520x120_5F00_supportday_5F00_maerz_5F00_DE_5F00_V02_5F00_thumb_5F00_337DDDFF.png" width="438" height="254" /></a>s wieder soweit: Der nächste TechStudent Support Day findet statt! Von 10-16 Uhr könnt Ihr unseren Kollegen von TechStudent all Eure Fragen zu Microsoft Technologien stellen. Egal ob zu Windows Phone, SQL Server oder Visual Studio – schreibt Eure Frage einfach auf die Wall der Fanpage unter <a href="http://on.fb.me/supportday">http://on.fb.me/supportday</a>, unsere Kollegen zusammen mit den Student Partnern antworten Euch.</p>  <p>&#160;</p>  <p>&#160;</p>  <p>GunnarD </p>]]></content:encoded>
    </item>
    <item>
      <title>Testsoftware für Private Cloud Szenarien herunterladen</title>
      <link>https://docs.microsoft.com/archive/blogs/mtcmuc/testsoftware-fr-private-cloud-szenarien-herunterladen</link>
      <pubDate>Mon, 26 Sep 2011 07:46:18 GMT</pubDate>
      <dc:creator><![CDATA[Gunnar-D]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mtcmuc/2011/09/26/testsoftware-fr-private-cloud-szenarien-herunterladen/</guid>
      <description><![CDATA[Eine &quot;Private Cloud&quot; ist eine Cloud, die im eigenen Rechenzentrum ausgeführt und...]]></description>
      <content:encoded><![CDATA[<p>Eine &quot;Private Cloud&quot; ist eine Cloud, die im eigenen Rechenzentrum ausgeführt und ausschließlich für Ihr Unternehmen genutzt wird. Bei einer Private Cloud auf Basis von Microsoft-Technologien ermöglichen dabei Windows Server 2008 R2 und Hyper-V die Virtualisierung von Servern, um Ressourcen bzw. Dienste bedarfsorientiert bereitzustellen. Zur Verwaltung kommen die bekannten Tools der System Center-Familie zum Einsatz. Auf dieser Seite <a href="http://technet.microsoft.com/de-de/cloud/erste-schritte-mit-der-private-cloud?ocid=otc-n-de-jtc--">http://technet.microsoft.com/de-de/cloud/erste-schritte-mit-der-private-cloud?ocid=otc-n-de-jtc--</a> finden Sie alles, was Sie für Ihre ersten Schritte mit der Private Cloud benötigen – Testversionen der relevanten Produkte, Anleitungsvideos, kostenlose Schulungsmöglichkeiten und Zertifizierungen bei Microsoft-Trainingspartnern.</p>  <p>Sie wollen gleich auf die relevante Software zugreifen und diese jetzt testen. Dann folgen Sie den Links ins TechNet Evaluierungscenter</p>  <p>•&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Windows Server 2008 R2 with SP1 <a href="http://technet.microsoft.com/evalcenter/dd459137.aspx?ocid=otc-n-de-jtc--EVAL_WS2008R2SP1">http://technet.microsoft.com/evalcenter/dd459137.aspx?ocid=otc-n-de-jtc--EVAL_WS2008R2SP1</a></p>  <p>•&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Hyper-V Server 2008 R2 SP1 <a href="http://technet.microsoft.com/evalcenter/dd776191.aspx?ocid=otc-n-de-jtc--EVAL_HVS2008R2SP1">http://technet.microsoft.com/evalcenter/dd776191.aspx?ocid=otc-n-de-jtc--EVAL_HVS2008R2SP1</a></p>  <p>•&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System Center Virtual Machine Manager 2008 R2 SP1 <a href="http://technet.microsoft.com/evalcenter/cc793138.aspx?ocid=otc-n-de-jtc--EVAL_SCVMM2008R2SP1">http://technet.microsoft.com/evalcenter/cc793138.aspx?ocid=otc-n-de-jtc--EVAL_SCVMM2008R2SP1</a></p>  <p>•&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System Center Virtual Machine Manager 2012 RC <a href="http://technet.microsoft.com/evalcenter/gg678609.aspx?ocid=otc-n-de-jtc--EVAL_SCVMM2012RC">http://technet.microsoft.com/evalcenter/gg678609.aspx?ocid=otc-n-de-jtc--EVAL_SCVMM2012RC</a></p>  <p>•&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System Center Operations Manager 2007 R2 <a href="http://technet.microsoft.com/evalcenter/bb738014.aspx?ocid=otc-n-de-jtc--EVAL_SCOM2007R2">http://technet.microsoft.com/evalcenter/bb738014.aspx?ocid=otc-n-de-jtc--EVAL_SCOM2007R2</a></p>  <p>•&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System Center Configuration Manager 2007 R3 <a href="http://technet.microsoft.com/evalcenter/bb736730.aspx?ocid=otc-n-de-jtc--EVAL_SCCM2007R3">http://technet.microsoft.com/evalcenter/bb736730.aspx?ocid=otc-n-de-jtc--EVAL_SCCM2007R3</a></p>  <p>•&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System Center Configuration Manager 2012 Beta 2 <a href="http://technet.microsoft.com/evalcenter/ff657840.aspx?ocid=otc-n-de-jtc--EVAL_SCCM2012BETA2">http://technet.microsoft.com/evalcenter/ff657840.aspx?ocid=otc-n-de-jtc--EVAL_SCCM2012BETA2</a></p>  <p>GunnarD</p>]]></content:encoded>
    </item>
    <item>
      <title>C++ Day in München</title>
      <link>https://docs.microsoft.com/archive/blogs/mtcmuc/c-day-in-mnchen</link>
      <pubDate>Mon, 19 Sep 2011 03:05:21 GMT</pubDate>
      <dc:creator><![CDATA[Gunnar-D]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mtcmuc/2011/09/19/c-day-in-mnchen/</guid>
      <description><![CDATA[Kommen Sie zum exklusiven Münchner C++ Day mit Starsprechern von Microsoft USA...]]></description>
      <content:encoded><![CDATA[<table border="0" cellspacing="0" cellpadding="0"><tbody>     <tr>       <td valign="top" width="703">         <p><b>Kommen Sie zum exklusiven Münchner C++ Day mit Starsprechern von Microsoft USA und Intel. Performance/Graphics/Windows/Parallel: Das Herbst-Ereignis für C++ Developer. </b><b>Begrenzte TN-Zahl, schnell anmelden!</b></p>          <p><a href="file:///C:\Users\steffenr\AppData\Local\Temp\WindowsLiveWriter1286139640\supfiles4164416\image4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/6740.clip_image001_32636E3E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/6740.clip_5F00_image001_5F00_32636E3E.png" width="244" height="88" /></a></p>          <p>Am 19. Oktober 2011 findet nachmittags im schicken <a href="http://www.mace-restaurant.de/kontakt">MACE Restaurant in München</a> der Münchner C++Day 2011 statt. Hier erfahren 50 C++ Developer exklusiv alles zu den Angeboten und Neuerungen von Microsoft und Intel im Bereich C++. </p>          <p><b>Die Teilnahme ist kostenlos aber es sind nur 50 Plätze verfügbar, also melden Sie sich umgehend an, um das Event nicht zu versäumen: </b><b><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032493900&amp;Culture=de-DE">Zur kostenlosen Anmeldung für den Münchner C++ Day 2011</a></b><b>. </b></p>          <h6>Unter anderem erwarten Sie die folgenden Sessions </h6>          <p><strong>Keynote: Visual Studio 11 and Windows – Powering the Next Wave of Innovation </strong><b>             <br /></b>Visual Studio C++ Program Manager Boris Jabes und Visual Studio Architect Jean-Pierre Duplessis stellen die neuesten Entwicklungen und Ausblicke für C++ in Visual Studio und auf der Microsoft-Plattform vor. Eine Session, die kein C++ Developer verpassen sollte. </p>          <p><strong>Effective C++ Programming with Visual Studio 11 Ultimate </strong><b>             <br /></b>Programmer productivity in the era of agile development is no longer something we can count with lines of code. Visual Studio brings together a slew of lifecycle management tools—from architecture analysis to unit testing—that dramatically improve the productivity of C++ developers everywhere. Come learn how the next version Visual Studio will help you embrace agile methodologies like never before!</p>          <p><strong>Unleash Parallel Performance with C++ in Visual Studio 11 </strong><b>             <br /></b>Parallelism is everywhere. The upcoming version of Visual C++ enables native developers to remain the kings of performance across all form-factors. With new compiler technology, we will show how every developer can take advantage of multi-core CPUs. With C++ AMP, we bring the cheap &amp; awesome power of GPUs to every C++ programmer. Finally, we bring it all together with enhancements to the debugging and profiling experiences across VS.</p>          <p><strong>Graphics &amp; Game development tools in Visual Studio 11 </strong><b>             <br /></b>Visual Studio 11 brings the most significant set of improvements for developing graphics-intensive apps in over a decade. Whether you are just getting started with 2D/3D games or a self-proclaimed “Guru”, there's something for you in this talk. We will walkthrough a slew of new tools integrated into Visual Studio that will make your life better.</p>          <h5>Hochkarätige Sprecher von Microsoft und Intel</h5>          <table border="0" cellspacing="0" cellpadding="0"><tbody>             <tr>               <td valign="top" width="133">                 <p><a href="file:///C:\Users\steffenr\AppData\Local\Temp\WindowsLiveWriter1286139640\supfiles4164416\Bev-Bachmayer5.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/6428.clip_image002_3E18B570.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/6428.clip_5F00_image002_5F00_3E18B570.jpg" width="144" height="144" /></a></p>               </td>                <td valign="top" width="508">                 <p><strong>Bev Bachmayer </strong><b>                     <br /><strong>Senior Software Engineer </strong>                      <br /><strong>Software and Solutions Group at Intel GmbH</strong></b></p>                  <p>Bev Bachmayer has worked in diverse software engineering, performance engineering and engineering management positions in the US and Europe during her 28 years at Intel. Her key area of interest is performance analysis and optimization of software on new computer architectures. Additionally, Bev supports increasing the number of professional females entering computer science/engineering programs worldwide through multiple projects. Bev holds a Bachelor's degree in Computer Science from the University of Oregon and an MBA from Portland State University. She is a member of the IEEE, ACM and the European Professional Women's Association (EPWN).</p>               </td>             </tr>              <tr>               <td valign="top" width="133">                 <p><a href="file:///C:\Users\steffenr\AppData\Local\Temp\WindowsLiveWriter1286139640\supfiles4164416\image9.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image003" border="0" alt="clip_image003" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/7827.clip_image003_3621130E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/7827.clip_5F00_image003_5F00_3621130E.png" width="144" height="144" /></a></p>               </td>                <td valign="top" width="508">                 <p><strong>Jean-Pierre Duplessis </strong><b>                     <br /><strong>Architect, Microsoft Visual Studio </strong>                      <br /><strong>Microsoft Corporation</strong></b></p>                  <p>Jean-Pierre Duplessis is an architect for Microsoft Visual Studio. His mission is to simplify and integrate the functions needed to make Visual Studio a key tool in the service of a new generation of software. Before working on the last four versions of Visual Studio, he was instrumental in the creation of Windows XP. “JP” as he is nicknamed is originally from Canada where he was CEO for ten years for a software company called JPSoft before joining Microsoft.</p>               </td>             </tr>              <tr>               <td valign="top" width="133">                 <p><a href="file:///C:\Users\steffenr\AppData\Local\Temp\WindowsLiveWriter1286139640\supfiles4164416\image14.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/7802.clip_image004_053E5BA3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/7802.clip_5F00_image004_5F00_053E5BA3.png" width="144" height="144" /></a></p>               </td>                <td valign="top" width="508">                 <p><strong>Boris Jabes </strong><b>                     <br /><strong>Senior Program Manager, Visual C++ Team, Microsoft Corporation</strong></b></p>                  <p>Boris Jabes is a senior program manager lead on the Visual C++ team where he is responsible for improving the IDE experience for C++ developers. Recently, he's been concentrating on making the IDE scale to multi-million line source bases. Before joining Microsoft, Boris obtained degrees from the University of Waterloo and Carnegie Mellon where he specialized in distributed systems and software engineering.</p>               </td>             </tr>           </tbody></table>          <p><b>Die Teilnahme ist kostenlos aber es sind nur 50 Plätze verfügbar, also melden Sie sich umgehend an, um das Event nicht zu versäumen: </b><b><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032493900&amp;Culture=de-DE">Zur Anmeldung für den Münchner C++ Day 2011</a></b><b>. </b></p>       </td>     </tr>   </tbody></table>]]></content:encoded>
    </item>
    <item>
      <title>Auslagerungsdatei unter Windows – wie macht man es richtig</title>
      <link>https://docs.microsoft.com/archive/blogs/mtcmuc/auslagerungsdatei-unter-windows-wie-macht-man-es-richtig</link>
      <pubDate>Tue, 09 Aug 2011 09:09:35 GMT</pubDate>
      <dc:creator><![CDATA[Michael Korp]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mtcmuc/2011/08/09/auslagerungsdatei-unter-windows-wie-macht-man-es-richtig/</guid>
      <description><![CDATA[Folgende Frage wurde an mich herangetragen: “Immer wieder thematisiert: Vor- und Nachteile der...]]></description>
      <content:encoded><![CDATA[<p>Folgende Frage wurde an mich herangetragen: “<em>Immer wieder thematisiert: Vor- und Nachteile der eigenen Partition für die Auslagerungsdatei (Swap) unter Microsoft Windows. Administratoren diskutieren seit den Zeiten von Windows NT 4.0 über die Swap-Partition, die ja auch bei Unix/Linux gern eingerichtet wird. Ist die Einrichtung einer speziellen Swap-Partition jetzt eine Legende oder bringt es wirklich etwas?” </em>Ergänzen kann man die Frage noch um die Diskussion der notwendigen Größe einer Auslagerungsdatei und ob man sie überhaupt benötigt, wenn man viel Arbeitsspeicher im System hat.</p>  <p>Vorneweg: DIE Antwort auf diese Frage werde ich hier nicht geben, aber hoffentlich ein paar wesentliche Gedanken zur eigenen Meinungsbildung.</p>  <p>Wenn man auf den Microsoft Support Seiten nach den Begriffen “pagefile large memory” sucht, findet man auf jeden Fall Berge von Treffern – an Lesestoff sollte also erst einmal kein Mangel sein. Aber zum Thema:</p>  <p>Wie jedes andere moderne Betriebssystem verwendet Windows eine virtuelle Speicherverwaltung. Der “scheinbar” verfügbare Arbeitsspeicher ist daher in der Regel merklich größer als der physisch in dem Rechner verbaute Speicher. Dazu lagert der Memory Manager bei Bedarf physische Speicherseiten aus dem Arbeitsspeicher auf die Platte aus, um den freigewordenen Speicher zur Erfüllung einer Anfrage nach Speicher zu verwenden. Wird der ausgelagerte Speicher von der entsprechenden Anwendung wieder benötigt, lagert das Betriebssystem diesen wieder ein und dafür bei Bedarf andere am längsten nicht benutzte Seiten wieder aus. Das ist der generelle bekannte Prozess. Auf der anderen Seite lagern moderne Memory Manager auch dann Speicherseiten in die Auslagerungsdatei aus, wenn noch gar kein Engpass besteht. Dies ist ein Hintergrundprozess, der dann läuft, wenn das System nicht ausgelastet ist. Die Leistungsfähigkeit des darunter liegenden (Festplatten) Speichers ist daher von untergeordneter Bedeutung. Sollte aber jetzt plötzlich Speicher benötigt werden, steht sehr schnell freier Speicher zur Verfügung, da er sowohl im RAM wie auch in der Auslagerungsdatei existiert und daher nur noch gelöscht (mit NULL beschrieben) werden muss.</p>  <p>Anders sieht es aus, wenn ein akuter Engpass besteht. Dann muss der Memory Manager die Speicherseiten suchen, die am ehesten ausgelagert werden können, diese in die Auslagerungsdatei schreiben, den Speicher löschen und dann der anfragenden Anwendung übergeben. Hier ist die Geschwindigkeit beim schreiben in die Auslagerungsdatei von entscheidender Bedeutung. Ähnliches gilt beim Einlagern – hier ist die Lesegeschwindigkeit entscheidend.</p>  <p>Ein grundlegender Artikel über die Zusammenhänge bietet <a href="http://support.microsoft.com/kb/2267427/" target="_blank">KB2267427</a>.</p>  <p>1. Frage: Braucht es überhaupt eine Auslagerungsdatei, wenn viel physischer Arbeitsspeicher im System vorhanden ist?</p>  <p>Einmal dient die Auslagerungsdatei als Erweiterung des installierten Arbeitsspeichers. Ist dort genügend vorhanden, bräuchte man im Prinzip keine Auslagerungsdatei. Server sollten auch so dimensioniert sein, dass das Auslagern möglichst vermieden wird oder aber eher sparsam vorkommt. Immerhin ist RAM in der Größenordnung von 800.000 Mal schneller als eine Festplatte. Aber die Auslagerungsdatei ist bei Windows auch notwendig, wenn man im Falle eines Systemabsturzes diesen analysieren will. Die Erstellung der Crash Dump Datei geht nur über die Auslagerungsdatei: <a href="http://support.microsoft.com/kb/254649/" target="_blank">KB254649</a>. Je nach Art des benötigten Dump kann man daher die Auslagerungsdatei auch deutlich kleiner dimensionieren, als der installierte Arbeitsspeicher. Bei sehr großen Servern entspricht dies auch der empfohlenen Vorgehensweise.</p>  <p>2. Frage: Empfiehlt sich eine eigene Swap Partition?</p>  <p>Bei Unix/Linux Systemen ist “Swap” ein eigener Partitionstyp. Im Prinzip handelt es sich hier um ein Raw Device, das direkt vom Memory Manager verwaltet wird. Windows verwendet dagegen die bekannte Auslagerungsdatei. Die Datei “Pagefile.sys” entspricht dabei dem Raw Device. Da die Datei immer auf einer formatierten Partition liegt, ist es daher prinzipiell erst einmal egal, wo diese liegt. Eine eigene Partition definiert hierbei die maximale Größe, da sie nicht beliebig vergrößert oder verkleinert werden kann. Aus Performance Sicht betrachtet, ist der Overhead des Dateisystems auf jeden Fall zu berücksichtigen – eine eigene Partition bringt keine Vorteile. Vermieden wird aber eine mögliche Fragmentierung, da es eigentlich nur diese eine Datei gibt (etwas vereinfacht betrachtet). Auf der anderen Seite fällt abe einer Fragmentgröße von etwa 64MB die Fragmentierung nicht mehr wesentlich ins Gewicht, weswegen auch der Windows Defragmentierer nicht das Ziel hat, 0% Fragmentierung zu erreichen. Hintergrund: Der Aufwand der erneuten Positionierung der Leseköpfe im Verhältnis zu gesamt benötigten Lesezeit wird sehr klein und kann daher meist vernachlässigt werden.</p>  <p>3. Frage: Auf welcher Platte bringe ich die Auslagerungsdatei sinnvoll unter?</p>  <p>Bezogen auf die Ausführungen von oben, sollte die <em><strong>Notwendigkeit</strong></em> der Nutzung der Auslagerungsdatei, also der Vorgang des benötigten Auslagerns zur Befriedigung der Nachfrage nach Speicher für Anwendungen möglichst vermieden werden oder aber begrenzt werden. Kann dies durch eine entsprechende Auslegung des Servers erreicht werden, sieht die Auslagerungsdatei im wesentlichen nur Hintergrundaktivitäten, weswegen die Platzierung relativ egal wäre. Ansonsten muss man nicht die Frage nach der eigenen Partition, sondern (aus Performance Sicht) die der eigenen Spindeln stellen. Nur so optimieret man die Leistung der Auslagerungsdatei. Aber: Selbst dann ist die schnellste Platte etwa 800.000 Mal langsamer als der langsamste Arbeitsspeicher…</p>  <p>4. Frage: Lohnt es sich eine SSD für die Auslagerungsdatei zu verwenden?</p>  <p>Eine SSD ist sicherlich erheblich schneller als eine Festplatte. Wenn sie 100x so schnell wie die Festplatte wäre, wäre sie aber immer noch etwa 8.000 Mal langsamer als Arbeitsspeicher… Entsprechende Kapazitäten mit hoher Geschwindigkeit kosten aber auch relativ viel Geld – zumindest im Vergleich zur klassischen Festplatte. Arbeitsspeicher dürfte dann im Verhältnis wieder teurer als die SSD sein, aber auch erheblich schneller. Der Gewinn an Systemleistung bei ausreichendem Arbeitsspeicher dürfte aber über alles betrachtet immer noch die preiswerteste Lösung sein (Kosten / Nutzen).</p>  <p>5. Frage: Wann betrifft mich das Problem eigentlich?</p>  <p>Einfach gesagt: Immer dann, wenn der Server mehr Arbeitsspeicher sinnvoll verwenden könnte. Beispiel: Ein Virtualisierungshost erlaubt ein Memory Overcommit. Sobald die virtuellen Maschinen ihren Arbeitsspeicher benötigen, muss der Host anfangen, auszulagern. Gegebenenfalls wird dabei die virtuelle Maschine angehalten oder der Host verweigert temporär weitere Dienste. Dies ist im wesentlichen der Grund, warum Hyper-V mit “Dynamic Memory” kein Overcommit, sondern eine dynamische Balancierung des verfügbaren Arbeitsspeichers zwischen den virtuellen Maschinen anbietet. Andere Serveranwendungen zwingen das System gegebenenfalls indirekt zum Auslagern. Solange Speicher vorhanden ist, nutzen sie zur Arbeit (meist als Cache) was sie kriegen können. Laufen gleichzeitig andere Dienste, die irgendwann einmal plötzlich mehr Speicher benötigen, gibt es einen Engpass, weil die andere Anwendung nichts von “Ihrem” Speicher wieder frei gibt. Dann wird Windows gezwungen, die Auslagerungsdatei zu Hilfe zu nehmen… Deswegen ist es zum Beispiel nicht empfehlenswert, neben dem SQL Server oder Exchange noch andere Dienste auf dem gleichen Server zu betreiben.</p>  <p>Fazit oder wie macht man es vermutlich richtig?</p>  <p>Wichtig ist erst einmal die Arbeitslast der jeweiligen Rechner zu kennen und die Notwendigkeit der Auslagerung zu erkennen. Dazu sollte man wissen, dass Windows, wenn es nicht untersagt wird, immer auslagert, wie auch oben beschrieben. Um einen Überblick darüber zu bekommen, ob es sich um Hintergrundaktivitäten oder eine Notwendigkeit für den Betrieb handelt, kann man die Informationen der Artikels <a href="http://support.microsoft.com/kb/2267427/" target="_blank">KB2267427</a> und <a href="http://support.microsoft.com/kb/2160852/" target="_blank">KB2160852</a> und die dort angeführten Leistungsindikatoren zur Beurteilung heranziehen. Dazu sollte man wissen, dass es Unterschiede zwischen 32-Bit (ältere Server, <a href="http://support.microsoft.com/kb/2160852/" target="_blank">KB2160852</a>) und 64-Bit (ab Windows Server 2003 möglich, ab Windows Server 2008 R2 nur noch verfügbar, <a href="http://support.microsoft.com/kb/889654/" target="_blank">KB889654</a>) gibt.</p>  <p>Als Grundregel sollte man erst einmal Windows die Kontrolle über die Auslagerungsdatei überlassen. Speziell bei sehr “großen” Servern kann dies aber nachteilig sein, siehe auch <a href="http://support.microsoft.com/kb/955635/" target="_blank">KB955635</a>. Hier sollte man dann selbst die Konfiguration vornehmen. Üblicherweise wird daher die Auslagerungsdatei sehr viel kleiner werden, als der installierte Arbeitsspeicher. Man darf dabei aber nicht vergessen, dass dies Auswirkungen auf die Diagnosemöglichkeiten bei Systemabstürzen hat (<a href="http://support.microsoft.com/kb/254649/" target="_blank">KB254649</a>).</p>  <p>Bei Virtualisierungshosts darf man nicht vergessen, dass auch die Hostpartition (das installierte Windows System) arbeiten muss. Wenn die virtuellen Maschinen den Host auslasten, kann daher die Parent Partition gezwungen sein, für den eigenen Bedarf auszulagern. Hier sollte dann die Kalkulation des Speicherbedarf des Host eine Grundlage für die Festlegung der Auslagerungsdatei liefern.</p>  <p>Am Ende bleibt noch zu bedenken, dass in der Auslagerungsdatei potentiell sensitive Daten lagern. Wer also den Host mittels Bitlocker schützt, muss auch darauf achten, dass die Partition mit der Auslagerungsdatei verschlüsselt ist. Die Option zum Löschen der Auslagerungsdatei hilft hier aus zwei Gründen nicht: Einmal verlangsamt sie jedes Herunterfahren (meist in nicht akzeptabler Weise), da die Auslagerungsdatei komplett mit NULL beschrieben wird und andererseits, weil das System ja auch nicht geordnet stehen bleiben kann, wobei die Auslagerungsdatei ihren vollständigen Inhalt behält.</p>]]></content:encoded>
    </item>
    <item>
      <title>MVC Music Store für Fortgeschrittene (Intro)</title>
      <link>https://docs.microsoft.com/archive/blogs/mtcmuc/mvc-music-store-fr-fortgeschrittene-intro</link>
      <pubDate>Fri, 24 Jun 2011 07:12:13 GMT</pubDate>
      <dc:creator><![CDATA[Jörg Jooss]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mtcmuc/2011/06/24/mvc-music-store-fr-fortgeschrittene-intro/</guid>
      <description><![CDATA[MVC Music Store ist eine Beispielanwendung und Tutorial von Jon Galloway zum Einstieg in die...]]></description>
      <content:encoded><![CDATA[<p><a href="http://mvcmusicstore.codeplex.com/">MVC Music Store</a> ist eine Beispielanwendung und Tutorial von <a href="http://weblogs.asp.net/jgalloway/">Jon Galloway</a> zum Einstieg in die Entwicklung von Web-Applikationen mit <a href="http://www.asp.net/mvc">ASP.NET MVC 3</a> (auf der CodePlex-Seite des Projekts findet man auch noch die Version 1 des Tutorials, das auf ASP.NET MVC 2 basiert).</p>  <p>Wie jedes andere jemals geschriebene Programm jenseits von <em>Hello, World!</em> lauern sowohl in dem Tutorial als auch in dem Anwendungscode einige Fallstricke, die <a href="http://code-inside.de/blog/2010/05/17/fr-absolute-asp-net-mvc-neulinge-mvc-music-store-warum-man-es-nicht-al-best-practices-verstehen-sollte/">kleinere</a> oder <a href="http://ayende.com/blog/4505/analyzing-the-mvc-music-store-data-access">größere</a> Schönheitskorrekturen erfordern. Dennoch bietet das Tutorial einen sehr brauchbaren und zudem völlig kostenlosen Einstieg in MVC 3. </p>  <p>Was mir an der Anwendung besonders gefällt: Sie bildet eine perfekte Ausgangsbasis zur Betrachtung einer Reihe spannender Fragestellungen, auf die man bei kleineren Beispielen so nicht stoßen würde oder die belanglos wären. Sprich, sie gibt genug Stoff her, um Theorie und Praxis hart kollidieren zu lassen. Zudem kann jeder Interessierte sich die fertige Anwendung herunterladen oder ihre Entwicklung Zeile für Zeile nachvollziehen kann. </p>  <p>Daher starte ich hier eine Blog-Serie rund um den MVC Music Store (in der aktuellen Version 3.0b) mit einer Reihe von Themen, die da anfangen, wo das Tutorial aufhört:</p>  <ul>   <li>Software-Entwurf </li>    <li>Testing </li>    <li>Deployment auf IIS mit Web Deploy </li>    <li>Deployment auf Windows Azure </li> </ul>  <p>Doch bevor ich mit diesen inhaltlichen Themen der Blog-Serie beginne, möchte ich erst einmal eine Reihe von Änderungen bzw. Bugfixes vorstellen, die ich der Anwendung bei meinem persönlichen Durchgang durch das Tutorial verpasst habe.</p>  <h4>Layout-Bug in allen Browsern</h4>  <p>Je nach Fenstergröße des Browsers und der Anzahl der Alben (z.B. beim Genre Classical) offenbart der Browse-View unter Store einen unschönen Layout-Fehler. Anstatt sich links neben dem Genre-Menu auszurichten, rutschen die Alben unter das Menu. Dies betrifft alle von mir getesteten Browser, d.h. Internet Explorer 9 (s.u.), Firefox 5 und Chrome 12.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/4186.clip_image001_4B294B97.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/4186.clip_5F00_image001_5F00_4B294B97.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/6153.clip_image001_thumb_2E5FB0B5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/6153.clip_5F00_image001_5F00_thumb_5F00_2E5FB0B5.png" width="547" height="334" /></a></p>  <p>Der Fix hierfür lehnt sich direkt an die erste Version des MVC Music Store an:</p>  <ol>   <li>Man entfernt in die Eigenschaft <font face="Consolas">float: left</font> für <font face="Consolas">#main</font> in Site.css. </li>    <li>Man umschließt in _Layout.cshtml das gesamte Markup unterhalb des Body mit einem zusätzlichen <font face="Consolas">&lt;div id=&quot;container&gt;&lt;/div&gt;</font>:       <br />      <pre style="line-height: normal; list-style-type: disc; font-family: ; background: white; color: "><font style="font-size: 9.8pt"><font face="Consolas"><span style="color: "><font color="#4f76ac">&lt;</font></span><span style="color: "><font color="#823125">body</font></span><span style="color: "><font color="#4f76ac">&gt;</font></span>
<font color="#000000">&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">&lt;</font></span><span style="color: "><font color="#823125">div</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#d75028">id</font></span><span style="color: "><font color="#0000ff">=</font></span><font color="#4f76ac"><span style="color: ">&quot;container&quot;</span><span style="color: ">&gt;</span></font>
<font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">&lt;</font></span><span style="color: "><font color="#823125">div</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#d75028">id</font></span><span style="color: "><font color="#0000ff">=</font></span><font color="#4f76ac"><span style="color: ">&quot;header&quot;</span><span style="color: ">&gt;</span></font>
</font><font face="Consolas"><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">&lt;/</font></span><span style="color: "><font color="#823125">div</font></span><span style="color: "><font color="#4f76ac">&gt;</font></span>
</font><font face="Consolas"><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">&lt;</font></span><span style="color: "><font color="#823125">div</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#d75028">id</font></span><span style="color: "><font color="#0000ff">=</font></span><font color="#4f76ac"><span style="color: ">&quot;main&quot;</span><span style="color: ">&gt;</span></font>
</font></font><font face="Consolas"><font style="font-size: 9.8pt"><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">&lt;/</font></span><span style="color: "><font color="#823125">div</font></span><span style="color: "><font color="#4f76ac">&gt;</font></span>
<font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">&lt;</font></span><span style="color: "><font color="#823125">div</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#d75028">id</font></span><span style="color: "><font color="#0000ff">=</font></span><font color="#4f76ac"><span style="color: ">&quot;footer&quot;</span><span style="color: ">&gt;</span></font>
<font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">&lt;/</font></span><span style="color: "><font color="#823125">div</font></span><span style="color: "><font color="#4f76ac">&gt;</font></span>
<font color="#000000">&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">&lt;/</font></span><span style="color: "><font color="#823125">div</font></span><span style="color: "><font color="#4f76ac">&gt;</font></span>
<span style="color: "><font color="#4f76ac">&lt;/</font></span><span style="color: "><font color="#823125">body</font></span><span style="color: "><font color="#4f76ac">&gt;</font></span></font></font></pre>
  </li>
</ol>

<p>Die CSS-Definition für <font face="Consolas">#container</font> existiert bereits in Site.css, sie wurde scheinbar nur vergessen.</p>

<h4>Alben anlegen und ändern (S.62 ff)</h4>

<p>Als deutschsprachiger Nutzer des Tutorials wird man unweigerlich über den folgenden Fehler stolpern: Versucht man bei einem vorhandenen oder neu anzulegenden Album den Preis anzugeben, verwirft die client-seitige JavaScript-Validierung die Eingabe, obwohl diese syntaktisch korrekt ist…</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/1854.clip_image002_65598EEE.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/1854.clip_5F00_image002_5F00_65598EEE.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/1447.clip_image002_thumb_3C6E79E5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/1447.clip_5F00_image002_5F00_thumb_5F00_3C6E79E5.png" width="539" height="305" /></a></p>

<p>… aber nur für den Fall, dass man als Anwender das deutsche Zahlenformat verwendet. Tatsächlich erwartet das jQuery Validation-Plugin out-of-the-box aber das amerikanisch-englische Zahlenformat, welches jedoch anstelle eines Kommas den Punkt als Dezimaltrennzeichen verwendet. Gibt man daher &quot;9.99&quot; anstatt &quot;9.99&quot; ein, so folgt nun eine serverseitige Fehlermeldung… </p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/5670.clip_image003_08C60D87.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/5670.clip_5F00_image003_5F00_08C60D87.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/6131.clip_image003_thumb_6B70B5BC.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/6131.clip_5F00_image003_5F00_thumb_5F00_6B70B5BC.png" width="542" height="302" /></a></p>

<p>… wenn man auf seinem Entwicklungsrechner die deutschen Kultureinstellungen in den Regional Settings von Windows gesetzt hat. Dieser Fehler rührt daher, dass der <a href="http://msdn.microsoft.com/de-de/library/system.web.mvc.defaultmodelbinder.aspx">DefaultModelBinder</a> von ASP.NET MVC 3 den String &quot;9.99&quot; anhand der aktuellen Kultureinstellungen (entnommen aus <a href="http://msdn.microsoft.com/de-de/library/system.threading.thread.currentculture.aspx">Thread.CurrentCulture</a>) zu parsen versucht… aber nun eben anhand des deutschen Zahlenformats. </p>

<p>Der einfachste Fix hierfür ist das Festsetzen der Kultureinstellungen für die Applikation in web.config: </p>

<pre style="line-height: normal; list-style-type: disc; font-family: ; background: white; color: "><font face="Consolas"><span style="color: "><font color="#4f76ac"><font style="font-size: 9.8pt">&#160; &lt;</font></font></span><font style="font-size: 9.8pt"><span style="color: "><font color="#823125">system.web</font></span><span style="color: "><font color="#4f76ac">&gt;</font></span>
<span style="color: "><font color="#4f76ac">&#160;&#160;&#160; </font></span></font></font><font face="Consolas"><font style="font-size: 9.8pt"><font color="#000000"> 
</font><span style="color: "><font color="#4f76ac">&#160;&#160;&#160; &lt;</font></span><span style="color: "><font color="#823125">globalization</font></span><span style="color: "><font color="#4f76ac">&#160;</font></span><span style="color: "><font color="#d75028">culture</font></span><span style="color: "><font color="#4f76ac">=</font></span><font color="#000000">&quot;</font><span style="color: "><font color="#4f76ac">en-US</font></span><font color="#000000">&quot;</font><span style="color: "><font color="#4f76ac"> /&gt;</font></span>
<span style="color: "><font color="#4f76ac">&#160;&#160;&#160; </font></span><span style="color: "><font color="#4f76ac">&#160;&#160;&#160; </font></span>
<span style="color: "><font color="#4f76ac">&#160; &lt;/</font></span><span style="color: "><font color="#823125">system.web</font></span><span style="color: "><font color="#4f76ac">&gt;</font></span>
</font></font></pre>

<p><strong>Dies ist natürlich nur ein Hack,</strong> aber zumindest kann man dann (unter Nutzung des amerikanisch-englischen Formats) Alben anlegen und ändern. Ich komme auf eine bessere Lösung später zurück.</p>

<p>Geschafft? Fast… denn ein Klick auf Save führt nun zu einem <a href="http://en.wikipedia.org/wiki/Screen_of_death">YSOD</a>:</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/8206.clip_image004_50C419A3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/8206.clip_5F00_image004_5F00_50C419A3.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/3326.clip_image004_thumb_4B458332.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/3326.clip_5F00_image004_5F00_thumb_5F00_4B458332.png" width="547" height="359" /></a></p>

<p>Dieser Fehler tritt auf, weil in der Edit-Action des <font face="Consolas">StoreManagerController</font> der Model Binder eine Album-Instanz erzeugt, ohne die Eigenschaft AlbumId (den Primary Key) zu setzen – diese wird nämlich explizit vom Model Binding per Attribut ausgeschlossen:</p>

<pre style="line-height: normal; list-style-type: disc; font-family: ; background: white; color: "><font face="Consolas"><font color="#000000"><font style="font-size: 9.8pt">[</font></font><font style="font-size: 9.8pt"><span style="color: "><font color="#2b91af">Bind</font></span><font color="#000000">(Exclude = </font><span style="color: "><font color="#823125">&quot;AlbumId&quot;</font></span></font></font><font style="font-size: 9.8pt"><font face="Consolas"><font color="#000000">)]
</font><span style="color: "><font color="#4f76ac">public</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#4f76ac">class</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#2b91af">Album</font></span>
</font><font face="Consolas"><font color="#000000">{
</font></font></font><font face="Consolas"><font style="font-size: 9.8pt"><font color="#000000">}</font></font></font></pre>

<p>Das vom Entity Framework 4.1. generierte UPDATE-Statement scheitert also letztendlich an dem implizit generierten WHERE AlbumId = 0. Den Primary Key eines Objekts von der Datenbindung auszuschließen macht durchaus Sinn, weswegen ich die Edit-Action entsprechend der vorherigen Version des MVC Music Store implementiert habe:</p>

<pre style="line-height: normal; list-style-type: disc; font-family: ; background: white; color: "><font face="Consolas"><font color="#000000"><font style="font-size: 9.8pt">[</font></font><font style="font-size: 9.8pt"><span style="color: "><font color="#2b91af">HttpPost</font></span><font color="#000000">]</font><br /><span style="color: "><font color="#4f76ac">public</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#2b91af">ActionResult</font></span><font color="#000000"> Edit(</font><span style="color: "><font color="#4f76ac">int</font></span><font color="#000000"> id, </font><span style="color: "><font color="#2b91af">FormCollection</font></span></font></font><font style="font-size: 9.8pt"><font face="Consolas"><font color="#000000"> form)<br />{<br />&#160;&#160;&#160; </font><span style="color: "><font color="#2b91af">Album</font></span></font><font face="Consolas"><font color="#000000"> album = db.Albums.Find(id);<br />&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">if</font></span></font><font face="Consolas"><font color="#000000"> (TryUpdateModel(album))<br />&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; db.SaveChanges();<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">return</font></span><font color="#000000"> RedirectToAction(</font><span style="color: "><font color="#823125">&quot;Index&quot;</font></span></font><font face="Consolas"><font color="#000000">);<br />&#160;&#160;&#160; }<br />&#160;&#160;&#160; ViewBag.GenreId = </font><span style="color: "><font color="#4f76ac">new</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#2b91af">SelectList</font></span><font color="#000000">(<br />        db.Genres, </font><span style="color: "><font color="#823125">&quot;GenreId&quot;</font></span><font color="#000000">, </font><span style="color: "><font color="#823125">&quot;Name&quot;</font></span></font><font face="Consolas"><font color="#000000">, album.GenreId);<br />&#160;&#160;&#160; ViewBag.ArtistId = </font><span style="color: "><font color="#4f76ac">new</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#2b91af">SelectList</font></span><font color="#000000">(<br />        db.Artists, </font><span style="color: "><font color="#823125">&quot;ArtistId&quot;</font></span><font color="#000000">, </font><span style="color: "><font color="#823125">&quot;Name&quot;</font></span></font></font><font face="Consolas"><font style="font-size: 9.8pt"><font color="#000000">, album.ArtistId);<br />&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">return</font></span><font color="#000000"> View(album);<br />}</font></font></font><br /></pre>

<p>Anstatt den Model Binder das Objekt zu erzeugen und es dem <font face="Consolas">DbContext</font> unterzuschieben, lade und binde ich das Album hier explizit. Den <font face="Consolas">FormCollection</font>-Parameter benötigt die Methode nicht wirklich. Er dient nur dazu, die Überladung des Methodenbezeichners Edit zuzulassen, da GET- und POST-Action sonst dieselbe Methodensignatur hätten, was nicht funktioniert.</p>

<h4>Don’t Just Try (S.116)</h4>

<p>Der CheckoutController verwendet ein etwas befremdliches Kontrukt und ruft <font face="Consolas">TryUpdateModel()</font> auf, ohne den Rückgabewert zu prüfen. Da der anschließende Teil der Methode sowieso innerhalb eines try-Blocks ausgeführt wird, verwende ich stattdessen <font face="Consolas">UpdateModel()</font> in dem try-Block. Ferner kann man sich das Auslesen des Promo-Codes aus den Formular-Daten sparen, diesen Job kann der Model Binder erledigen.</p>

<p><font color="#ff0000">[Nachtrag vom 10.07.]&#160; <br /></font>Ich habe die Methode nochmal geändert und lasse nun auch die <font face="Consolas">Order</font>-Instanz vom Model Binder erstellen, da die vorherige Fassung für Unit Tests mehr Aufwand hinsichtlich Test Doubles erfordert. Die Methode ist in dieser Hinsicht noch nicht perfekt, aber dazu kommen wir noch <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/2308.wlEmoticon-winkingsmile_42A454BE.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/2308.wlEmoticon_2D00_winkingsmile_5F00_42A454BE.png" />. </p>

<pre style="line-height: normal; list-style-type: disc; font-family: ; background: white; color: "><font face="Consolas"><font color="#000000"><font style="font-size: 9.8pt">[</font></font><font style="font-size: 9.8pt"><span style="color: "><font color="#2b91af">HttpPost</font></span><font color="#000000">]</font><br /><span style="color: "><font color="#4f76ac">public</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#2b91af">ActionResult</font></span><font color="#000000"> AddressAndPayment(</font><span style="color: "><font color="#4f76ac">string</font></span><font color="#000000"> promoCode, </font><span style="color: "><font color="#2b91af">Order</font></span></font></font><font style="font-size: 9.8pt"><font face="Consolas"><font color="#000000"> order)<br />{<br />&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">if</font></span></font><font face="Consolas"><font color="#000000"> (!ModelState.IsValid)<br />&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">return</font></span></font><font face="Consolas"><font color="#000000"> View(order);<br />&#160;&#160;&#160; }<br />&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">try</font></span><br /></font><font face="Consolas"><font color="#000000">&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">if</font></span><font color="#000000"> (!</font><span style="color: "><font color="#2b91af">String</font></span><font color="#000000">.Equals(promoCode, PromoCode, </font><span style="color: "><font color="#2b91af">StringComparison</font></span></font><font face="Consolas"><font color="#000000">.OrdinalIgnoreCase))<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">return</font></span></font><font face="Consolas"><font color="#000000"> View(order);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">else</font></span><br /></font><font face="Consolas"><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; order.UserName = User.Identity.Name;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; order.OrderDate = </font><span style="color: "><font color="#2b91af">DateTime</font></span></font><font face="Consolas"><font color="#000000">.Now;<br /> <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#509610">// Save order</font></span><br /></font><font face="Consolas"><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; storeDB.Orders.Add(order);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; storeDB.SaveChanges();<br /> <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#509610">// Process the order</font></span><br /><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">var</font></span><font color="#000000"> cart = </font><span style="color: "><font color="#2b91af">ShoppingCart</font></span></font><font face="Consolas"><font color="#000000">.GetCart(HttpContext);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cart.CreateOrder(order);<br /> <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">return</font></span><font color="#000000"> RedirectToAction(</font><span style="color: "><font color="#823125">&quot;Complete&quot;</font></span><font color="#000000">, </font><span style="color: "><font color="#4f76ac">new</font></span></font><font face="Consolas"><font color="#000000"> { id = order.OrderId });<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />&#160;&#160;&#160; }<br />&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">catch</font></span><br /></font></font><font face="Consolas"><font style="font-size: 9.8pt"><font color="#000000">&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#509610">// Invalid - redisplay with errors</font></span><br /><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">return</font></span><font color="#000000"> View(order);<br />&#160;&#160;&#160; }<br />}</font></font></font></pre>

<pre style="line-height: normal; list-style-type: disc; font-family: ; background: white"><font face="Consolas"><font color="#000000"><font style="font-size: 9.8pt"><strike>[</strike></font></font><font style="font-size: 9.8pt"><strike><span style="color: "><font color="#2b91af">HttpPost</font></span><font color="#000000">]</font><br /><span style="color: "><font color="#4f76ac">public</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#2b91af">ActionResult</font></span><font color="#000000"> AddressAndPayment(</font><span style="color: "><font color="#4f76ac">string</font></span></strike></font></font><font style="font-size: 9.8pt"><font face="Consolas"><strike><font color="#000000"> promoCode)<br />{<br />&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">var</font></span><font color="#000000"> order = </font><span style="color: "><font color="#4f76ac">new</font></span><font color="#000000">&#160;</font><span style="color: "><font color="#2b91af">Order</font></span></strike></font><font face="Consolas"><strike><font color="#000000">();<br />&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">try</font></span><br /></strike></font><font face="Consolas"><strike><font color="#000000">&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; UpdateModel(order);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">if</font></span><font color="#000000"> (!</font><span style="color: "><font color="#2b91af">String</font></span><font color="#000000">.Equals(promoCode, PromoCode, </font><span style="color: "><font color="#2b91af">StringComparison</font></span></strike></font><font face="Consolas"><strike><font color="#000000">.OrdinalIgnoreCase))<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">return</font></span></strike></font><font face="Consolas"><strike><font color="#000000"> View(order);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">else</font></span><br /></strike></font><font face="Consolas"><strike><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; order.UserName = User.Identity.Name;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; order.OrderDate = </font><span style="color: "><font color="#2b91af">DateTime</font></span></strike></font><font face="Consolas"><strike><font color="#000000">.Now;<br /> <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#509610">// Save order</font></span><br /></strike></font><font face="Consolas"><strike><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; storeDB.Orders.Add(order);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; storeDB.SaveChanges();<br /> <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#509610">// Process the order</font></span><br /><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">var</font></span><font color="#000000"> cart = </font><span style="color: "><font color="#2b91af">ShoppingCart</font></span></strike></font><font face="Consolas"><strike><font color="#000000">.GetCart(HttpContext);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cart.CreateOrder(order);<br /> <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">return</font></span><font color="#000000"> RedirectToAction(</font><span style="color: "><font color="#823125">&quot;Complete&quot;</font></span><font color="#000000">, </font><span style="color: "><font color="#4f76ac">new</font></span></strike></font><font face="Consolas"><strike><font color="#000000"> { id = order.OrderId });<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br />&#160;&#160;&#160; }<br />&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">catch</font></span><br /></strike></font></font><font face="Consolas"><font style="font-size: 9.8pt"><strike><font color="#000000">&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#509610">// Invalid - redisplay with errors</font></span><br /><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><span style="color: "><font color="#4f76ac">return</font></span></strike><font color="#000000"><strike> View(order);<br />&#160;&#160;&#160; }<br />}</strike></font></font></font><br /></pre>

<p>So viel zu den echten Bugs, im nächsten Teil beschreibe ich dann einige rein stilistische Änderungen.</p>]]></content:encoded>
    </item>
    <item>
      <title>Features für die nächste Version von SQL Server Connectivity bestimmen</title>
      <link>https://docs.microsoft.com/archive/blogs/mtcmuc/features-fr-die-nchste-version-von-sql-server-connectivity-bestimmen</link>
      <pubDate>Thu, 26 May 2011 07:00:55 GMT</pubDate>
      <dc:creator><![CDATA[Gunnar-D]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mtcmuc/2011/05/26/features-fr-die-nchste-version-von-sql-server-connectivity-bestimmen/</guid>
      <description><![CDATA[Das SQL Server Connectivity Team ist für die Technologien der Datenbankanbindung und der...]]></description>
      <content:encoded><![CDATA[<p>Das SQL Server Connectivity Team ist für die Technologien der Datenbankanbindung und der Unterstützung von Entwicklern an den SQL Server verantwortlich. Weiterhin gehören Technologien wie ODBC, SQLClient (ADO.Net), JDBC, and PHP zu den Verantwortlichkeiten des Teams.</p>  <p>In einer Umfrage interessiert sich das Team dafür, welche Feature sich die Entwickler für das nächste Release wünschen und geben Euch die Möglichkeit auf einer englischsprachigen Webseite direkt Features vorzuschlagen.</p>  <p>Die Umfrage ist unter dem Link <a title="http://mssqlconn.uservoice.com/forums/113295-feature-feedback" href="http://mssqlconn.uservoice.com/forums/113295-feature-feedback">http://mssqlconn.uservoice.com/forums/113295-feature-feedback</a> erreichbar.</p>  <p>GunnarD</p>]]></content:encoded>
    </item>
    <item>
      <title>Enterprise Library für Silverlight 4 = Enterprise Library 5.0 Silverlight Integration Pack</title>
      <link>https://docs.microsoft.com/archive/blogs/mtcmuc/enterprise-library-fr-silverlight-4-enterprise-library-5-0-silverlight-integration-pack</link>
      <pubDate>Thu, 26 May 2011 00:35:51 GMT</pubDate>
      <dc:creator><![CDATA[Gunnar-D]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mtcmuc/2011/05/26/enterprise-library-fr-silverlight-4-enterprise-library-5-0-silverlight-integration-pack/</guid>
      <description><![CDATA[&#160;  Seit Mitte des Monats gibt es eine RTW Version von verschiedenen häufig genutzten Teilen der...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>Seit Mitte des Monats gibt es eine RTW Version von verschiedenen häufig genutzten Teilen der Enterprise Library 5 auch für die Silverlight CoreCLR. </p>  <p>Die Enterprise Library wird gerade für viele “Line of Business” Applikationen in den Bereich der Querschnittsfunktionen eingesetzt. Durch eine Umfrage hat man ein Featureset der Enterprise Library ermittelt, dass sich vielen Entwickler auch für die Silverlight Plattform wünschen.</p>  <p>Die Features sieht man in der folgenden Abbildung.</p>  <p>&#160;</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/4024.clip_image001_653D3433.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/4024.clip_5F00_image001_5F00_653D3433.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/07/54/metablogapi/8750.clip_image001_thumb_09EE4BAB.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-07-54-metablogapi/8750.clip_5F00_image001_5F00_thumb_5F00_09EE4BAB.jpg" width="597" height="553" /></a></p>  <p>Die Silverlight Version kann man hier herunterladen <a href="http://msdn.microsoft.com/entlib">http://msdn.microsoft.com/entlib</a>.</p>  <p>GunnarD</p>]]></content:encoded>
    </item>
    <item>
      <title>TechDay rund um den Internet Explorer 9</title>
      <link>https://docs.microsoft.com/archive/blogs/mtcmuc/techday-rund-um-den-internet-explorer-9</link>
      <pubDate>Wed, 11 May 2011 10:18:29 GMT</pubDate>
      <dc:creator><![CDATA[Michael Korp]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mtcmuc/2011/05/11/techday-rund-um-den-internet-explorer-9/</guid>
      <description><![CDATA[Nachdem ich nun schon verschiedene Veranstaltungen rund um “unser neuer Client” gemacht habe, was...]]></description>
      <content:encoded><![CDATA[<p>Nachdem ich nun schon verschiedene Veranstaltungen rund um “unser neuer Client” gemacht habe, was eigentlich immer Windows 7 mit aktuellem Office und auch aktuellem Internet Explorer bedeutete, gibt es jetzt ergänzend einen eigenen TechDay rund um den IE9: <a href="http://www.techday.ms/ie9firestarter/agenda.aspx" target="_blank">TechDay Online - IE9 Firestarter</a>.</p>  <p>Warum könnte der wichtig sein? Relativ einfach: Viele Anwendungen wandern in die Cloud und damit in den Browser. Die vielfach noch verwendeten älteren Browser sind einfach nicht mehr sicher genug oder erfüllen nicht die gestellten Anforderungen – man denke nur an HTML 5. Auf der anderen Seite verhalten sich moderne Browser häufig etwas anderes als die gewohnten älteren, was wiederum zu Kompatibilitätsproblemen führt.</p>  <p>Der <a href="http://www.techday.ms/ie9firestarter/default.aspx" target="_blank">TechDay</a> hilft dabei, die Unterschiede zu verstehen und bei allem, was man benötigt, den Rollout zu bestreiten und Anwendungen kompatibel zu gestalten.</p>  <p>Nur muss man sich beeilen – in einer Woche ist es schon soweit und der TechDay läuft an. Er findet online statt und ist wie gewohnt kostenlos.</p>]]></content:encoded>
    </item>
  </channel>
</rss>