<?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>Martin Vollmer`s Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/martinv/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/martinv/feed.xml</link>
    <description>Computerzeugs</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:23:06 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Eine kleine Geschichte der Transaktionen (4. Meine Transaktions-App)</title>
      <link>https://docs.microsoft.com/archive/blogs/martinv/eine-kleine-geschichte-der-transaktionen-4-meine-transaktions-app</link>
      <pubDate>Thu, 04 Apr 2013 06:09:00 GMT</pubDate>
      <dc:creator><![CDATA[Vollmix]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/martinv/2013/04/04/eine-kleine-geschichte-der-transaktionen-4-meine-transaktions-app/</guid>
      <description><![CDATA[Meine Transaktions-Test-Applikation ist &uuml;ber die Jahre gewachsen, weil ich immer weitere...]]></description>
      <content:encoded><![CDATA[<p>Meine Transaktions-Test-Applikation ist &uuml;ber die Jahre gewachsen, weil ich immer weitere M&ouml;glichkeiten, wie man Transaktionen programmieren kann eingebaut habe. Angefangen habe ich damit, weil ich testen wollte wie sich die neue .NET Welt im Vergleich zur alten COM+ Welt im Sinne von Performance verh&auml;lt. Datengrundlage ist eine sehr einfache Datenbank, die mein noch einfacheres Modell einer Bank darstellen soll.</p>
<p align="center">&nbsp;</p>
<p>&nbsp;</p>
<table style="width: 395px;" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="156"><strong></strong>
<p align="center"><strong>NameOfAccount </strong></p>
<strong></strong></td>
<td valign="top" width="99"><strong></strong>
<p align="center"><strong>AccountNo </strong></p>
<strong></strong></td>
<td valign="top" width="138"><strong></strong>
<p align="center"><strong>AccountBalance</strong></p>
<strong></strong></td>
</tr>
<tr>
<td valign="top" width="156"><strong></strong>
<p align="center"><strong>Martin</strong></p>
<strong></strong></td>
<td valign="top" width="99"><strong></strong>
<p align="center"><strong>1</strong></p>
<strong></strong></td>
<td valign="top" width="138"><strong></strong>
<p align="center"><strong>100416</strong></p>
<strong></strong></td>
</tr>
<tr>
<td valign="top" width="156"><strong></strong>
<p align="center"><strong>Andreas </strong></p>
<strong></strong></td>
<td valign="top" width="99"><strong></strong>
<p align="center"><strong>2</strong></p>
<strong></strong></td>
<td valign="top" width="138"><strong></strong>
<p align="center"><strong>100340</strong></p>
<strong></strong></td>
</tr>
<tr>
<td valign="top" width="156"><strong></strong>
<p align="center"><strong>Klaus </strong></p>
<strong></strong></td>
<td valign="top" width="99"><strong></strong>
<p align="center"><strong>3</strong></p>
<strong></strong></td>
<td valign="top" width="138"><strong></strong>
<p align="center"><strong>99580</strong></p>
<strong></strong></td>
</tr>
</tbody>
</table>
<p>Also wir haben Personen, die eine Kontonummer haben und einen gewissen Betrag an Geld auf dem Konto. F&uuml;r eine &Uuml;berweisung (Transaktion) ist es also notwendig zwei Updates auf die Tabelle auszuf&uuml;hren. Die Erste um den Betrag bei einem Konto abzuziehen und die Zweite um denselben Betrag bei dem anderen Konto gutzuschreiben. Das Ganze muss eine Transaktion sein, denn wenn nach dem &ldquo;Abbuchen&rdquo; was schiefgeht und der Update mit der &ldquo;Gutschrift&rdquo; nicht mehr ausgef&uuml;hrt wird ist die Kohle weg. Oder besser gesagt die Bank hat es, aber das ist ja fast dasselbe <img class="wlEmoticon wlEmoticon-smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0842.wlEmoticon-smile_22749112.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0842.wlEmoticon_2D00_smile_5F00_22749112.png" alt="Smiley" />.</p>
<p>Genutzt wird in allen F&auml;llen im Prinzip eine Stored Procedure, die beide Updates ausf&uuml;hrt. F&uuml;r die Fall Nr.4 wird eine Stored Procedure verwendet die in T-SQL den Transaktionskontext direkt in der DB angelegt.</p>
<p><strong>Noch ein Hinweis. Es geht hier nicht um die Performance des SQL Servers, sondern es geht um den Overhead den Datenbankzugriffstechnologien und die verschiedenen Aufrufarten beim Benutzen von Transaktionen erzeugen!</strong></p>
<p>&nbsp;</p>
<p>Als n&auml;chstes eine kurze Beschreibung der verwendeten technischen Komponenten um die Transaktion &uuml;ber die beiden Datenbankupdates auszuf&uuml;hren.</p>
<ol><ol>
<li><strong>C++ OLE DB ATL COM+ Komponente</strong> <br />In der Zeit vor .NET, ja die gab es wirklich, war C++ in Kombination mit OLE DB Templates in ATL (Active Template Library) so ziemlich die &ldquo;schnellste&rdquo; Datenbankzugriffstechnologie. F&uuml;r den Transaktionskontext wird COM+ als Container benutzt. Da es sich auch um eine Serverprozess-Komponente handelt, wird der Transaktionskontext &uuml;ber den DTC (Distributed Transaction Coordinator) bereitgestellt. Im folgenden Bild ist die Konfiguration im COM+ Explorer abgebildet. Der Client ist ein .NET Client der also &uuml;ber COM-InterOp die in einer COM+ Applikation &ldquo;gehostedete&rdquo; COM-Komponente aufruft. <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3513.image_36F9E090.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3513.image_5F00_36F9E090.png"><img style="display: inline;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/6131.image_thumb_7C9E6AAE.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/6131.image_5F00_thumb_5F00_7C9E6AAE.png" alt="image" width="230" height="346" /></a>&nbsp; <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0842.image_1F12F96A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0842.image_5F00_1F12F96A.png"><img style="display: inline;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8284.image_thumb_0BF1CCBE.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8284.image_5F00_thumb_5F00_0BF1CCBE.png" alt="image" width="260" height="345" /></a> </li>
<li><strong>.NET Serviced Component also COM+ Komponente in C# .NET geschrieben mit COM+ Transaktionskontext <br /></strong>Im Namespace System.EnterpriseServices wurden in .NET die Services von COM+ f&uuml;r die .NET Welt zug&auml;nglich gemacht. Diese Komponente ist also im Prinzip dasselbe wie in 1. nur jetzt mit .NET als Serviced Component implementiert. Also in C# und .NET entwickelt, aber in einem COM+ Container (Application) gehosted. Der Client ist derselbe .NET Client wie bei 1. der also in diesem Fall &uuml;ber COM-InterOp die in einer COM+ Application &ldquo;gehostedete&rdquo; .NET-Komponente aufruft. </li>
</ol></ol>
<p>&nbsp;</p>
<ol><ol>
<li><strong>.NET Serviced Component also COM+ Komponente in C# .NET geschrieben mit ADO.NET Transaktionskontext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /></strong>Dasselbe Prinzip wie bei 2. bis auf den Unterschied, dass der Transaktionskontext nicht &uuml;ber COM+ bzw. den DTC bereitgestellt wird, sondern &uuml;ber die API welche &uuml;ber ADO.NET verf&uuml;gbar ist. </li>
</ol></ol>
<p>&nbsp;</p>
<ol><ol>
<li><strong>.NET Serviced Component also COM+ Komponente in C# .NET geschrieben mit Transaktionskontext in Stored Procedure <br /></strong>Im Prinzip auch wieder wie 2. und 3. nur das der Transaktionskontext direkt in der DB innerhalb der Stored Procedure erstellt wird. </li>
</ol></ol>
<p>&nbsp;</p>
<ol><ol>
<li><strong>ASMX Web Service der die .NET Komponente aus 4. benutzt. <br /></strong>Vor .NET 2.0, also als es WCF (Windows Communication Foundation) usw. noch nicht gab war SMAX aus dem ASP.NET Namespace die g&auml;ngigste Methode Web Services zu implementieren, die somit auch im IIS gehosted werden. Der Web Service benutzt die Komponente aus 4. die in COM+ liegt und eine Stored Procedure f&uuml;r die Transaction verwendet. </li>
</ol></ol>
<p>&nbsp;</p>
<ol><ol>
<li><strong>WCF Komponente &ldquo;hosted&rdquo; im IIS (auto-enlist) aufgerufen &uuml;ber HTTP Web Service <br /></strong>Hier kommt zum ersten Mal WCF zu Einsatz, also auch kein COM+ mehr irgendwie beteiligt. Der Namespace in .NET WCF f&uuml;r Transaktionen hei&szlig;t : System.ServiceModel gesteuert wir das Verhalten hier &uuml;ber Attribute gesteuert z.B. wird das Isolation Level so eingestellt: <br /><span style="font-family: Courier New;">[ServiceBehavior(TransactionIsolationLevel = System.Transactions.IsolationLevel.Serializable ]</span> <br />Der Aufruf geht &uuml;ber HTTP und die Komponente wird im IIS bereitgestellt. </li>
<li><strong>WCF Komponente &ldquo;hosted&rdquo; in eigenem Prozess aufgerufen &uuml;ber TCP Web Service <br /></strong>Jetzt wird nicht der IIS benutzt sondern eine eigene klein App, die den Web Service &uuml;ber TCP bereitstellt. Damit wird der Web Service nat&uuml;rlich &uuml;ber TCP aufgerufen, wobei nicht der XML Serializer benutzt wird sondern ein Binary Serializer. </li>
</ol></ol>
<p>&nbsp;</p>
<ol><ol>
<li><strong>WCF Komponente &ldquo;hosted&rdquo; in IIS &uuml;ber WAS Hosting aufgerufen &uuml;ber TCP Web Service <br /></strong>Dieselbe Komponente wie bei 7. jetzt aber mit WAS Hosting&nbsp; (Windows Activation Services) im IIS, Dies erlaubt es die Komponente im IIS zu hosten und per TCP aufzurufen, was wie bei 7. den XML Serializer vermeidet. </li>
</ol></ol>
<p>&nbsp;</p>
<ol><ol>
<li><strong>WCF Komponente mit Entity Framework als OO Mapper <span style="text-decoration: underline;">ohne</span> Stored Procedure WAS Hosting TCP Web Service <br /></strong>In diesem Fall wird das Entity Framework so eingesetzt, wie man es typischerweise ohne besondere weitere Programmierung tun w&uuml;rde. Das heisst es wird dem Framework &uuml;berlassen die entsprechenden SQL Statements zusammenzubauen und auszuf&uuml;hren. Dies bedeutet nat&uuml;rlich einen Nachteil gegen&uuml;ber der Verwendung&nbsp; von einer Stored Procedure, die vorkompiliert im SQL Server bereitgestellt ist. </li>
</ol></ol>
<p>&nbsp;</p>
<ol><ol>
<li><strong>WCF Komponente mit Entity Framework als OO Mapper <span style="text-decoration: underline;">mit</span> Stored Procedure WAS Hosting TCP Web Service&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /></strong>Im zweiten Beispiel mit dem Entity Framework wird jetzt ebenfalls die Stored Procedure verwendet, um zu sehen welchen Overhead das Entity Framework als OO Mapper dann noch erzeugt.&nbsp; </li>
</ol></ol>
<p>&nbsp;</p>
<h1 align="center">Die Ergebnisse:</h1>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0358.Transactions_11603D62.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0358.Transactions_5F00_11603D62.png"><img style="display: inline;" title="Transactions" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4064.Transactions_thumb_5770FA75.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4064.Transactions_5F00_thumb_5F00_5770FA75.png" alt="Transactions" width="376" height="370" /></a></p>
<p align="center">&nbsp;</p>
<h2>Erl&auml;uterungen zu den Ergebnissen:</h2>
<p>Als erstes m&ouml;chte ich anmerken, dass in den ersten Versionen von .NET also 1.0.und 2.0 die C++ ATL Variante schneller war als .NET in COM+. Das hat sich deutlich ge&auml;ndert. Man sieht also, dass die .NET DB Provider im Sinne von Performance deutlich besser sind als die &ldquo;alte&rdquo; OLE DB Welt. Weiterhin ist wie zu erwarten Nummer 3 schneller als Nummer 2, da der Transaktionskontext nicht global &uuml;ber den DTC bereitgestellt werden muss sondern nur vom Client zur DB &uuml;ber ADO.NET aufgebaut werden muss. Die Nummer 4 ist dann logischerweise noch etwas flotter unterwegs, da der Transaktionskontext direkt im SQL Server f&uuml;r eine Stored Procedure erstellt wird.</p>
<p>Jetzt kommen wir zu den Web Service Technologien, wobei nat&uuml;rlich sofort ins Auge sticht wie schlecht die ASMX Web Service Implementierung im Vergleich zu WCF abschneidet. Erwartungsgem&auml;&szlig; ist auch so, dass die Verwendung von TCP als Protokoll und den Binary Serializer eine deutliche Verbessrung gegen&uuml;ber der Verwendung von HTTP und dem XML Serializer bringt. Man sieht auch dass man den IIS als Host nutzt und mit TCP und WAS Hosting arbeitet, die Vorteile vom IIS nutzen kann ohne hier Nachteile in der Performance zu bekommen, sogar im Gegenteil.</p>
<p>Die Verwendung des Entity Framework macht den Zugriff auf die Datenbank zwar komfortabel, aber man bezahlt einen Preis daf&uuml;r. Aber auch hier kann man f&uuml;r immer wieder kehrende Aufgaben Stored Procedures verwenden, um die Performance deutlich zu verbessern.</p>
<p>Viele Gr&uuml;&szlig;e</p>
<p>Euer Martin</p>]]></content:encoded>
    </item>
    <item>
      <title>Eine kleine Geschichte der Transaktionen (3. Applikationsserver)</title>
      <link>https://docs.microsoft.com/archive/blogs/martinv/eine-kleine-geschichte-der-transaktionen-3-applikationsserver</link>
      <pubDate>Tue, 22 Jan 2013 00:29:45 GMT</pubDate>
      <dc:creator><![CDATA[Vollmix]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/martinv/2013/01/22/eine-kleine-geschichte-der-transaktionen-3-applikationsserver/</guid>
      <description><![CDATA[Vor den Applikationsservern wurden Dienste, die später in Applikationsservern zusammengefasst wurden...]]></description>
      <content:encoded><![CDATA[<p>Vor den Applikationsservern wurden Dienste, die später in Applikationsservern zusammengefasst wurden als <strong>Middleware</strong> bezeichnet. Im Falle von Transaktionen als Service sind die prominentesten Produkte CICS ( Customer Information Control System) von IBM, Tuxedo von Oracle bzw. früher BEA und der MTS (Microsoft Transaction Server). Diese Systeme wurden als <strong>Transaktionsmonitor</strong> bezeichnet, nicht zu verwechseln mit einem Transaktionsmanager, der lediglich den transaktionellen Kontext bereitstellt. Solche Middleware gab es zunächst auf Mainframes für sogenannte OLTP-Anwendungen (Online Transaction Processing).</p>  <p>Jetzt muss ich wohl definieren was man denn unter einem Applikationsserver oder auch Anwendungsserver versteht. Dazu kurz Wikipedia konsultiert und dort findet man folgende Definition: <em>“Ein Anwendungsserver (engl. application server) ist im Allgemeinen ein Server in einem Computernetzwerk, auf dem Anwendungsprogramme ausgeführt werden. Im engeren Sinne bezeichnet der Begriff eine Software, die spezielle Dienste zur Verfügung stellt, wie beispielsweise <strong>Transaktionen</strong>, Authentifizierung oder den Zugriff auf Verzeichnisdienste und Datenbanken über definierte Schnittstellen.”</em></p>  <p>Damit ist auch schon erklärt warum ich die Anwendungsserver in einer eigenen Folge meiner Blogreihe erklären möchte. Denn üblicherweise bietet ein Applikationsserver auch eine Schnittstelle um Transaktionen für die Anwendung auf einer höheren Abstraktionsebene zur Verfügung zu stellen. </p>  <p>Im Falle von Microsoft war das erste Release eines “Application Servers” das Windows NT 4.0 Option Pack, welches als Ergänzung zum Windows NT Server 4.0 kostenlos heruntergeladen werden konnte. Es war dann aber so , dass der Markt dies nicht so wahrgenommen hat,&#160; weil dies eben nicht als “Application Server” vermarktet und beworben wurde. Wenn man damals von Application Servern redete, haben die meisten Leute an IBM WebSphere, BEA bzw. Oracle Weblogic, JBOSS usw. gedacht. Also war eigentlich fast automatisch J2EE&#160; oder heute nur JEE bezeichnet (Java Enterprise Edition) im Spiel. </p>  <p>Aber zurück zur Microsoft bzw. Windows Plattform. Teil des Windows NT 4.0 Option Packs war auch der “Microsoft Transaction Server” (MTS), der das erste Mal Transaktionsdienste auf der Windows Plattform zur Verfügung stellte. Mit Windows 2000 war dies dann alles Bestandteil von COM+ in Kombination mit dem “Internet Information Server” (IIS) war dann ein Application Server komplett in Windows mitgeliefert.</p>  <p>Mit dem Applikationsserver änderte sich auch die gängige Architektur einer Business Anwendung. Bis dahin war Client-Server oder auch 2-Tier Architektur das vorherrschende Architekturmodell. Mit dem Einzug der Applikationsserver änderte sich dies zum 3-Tier Modell, wobei der “Middle-Tier” die Geschäftslogik implementiert in Komponenten für den Applikationsserver, darstellt. Ein Bild aus dieser Zeit, welches dies vereinfacht darstellt:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8750.image_340D370B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8750.image_5F00_340D370B.png"><img title="image" style="margin-right: auto; margin-left: auto; float: none; display: block;" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/5516.image_thumb_6A2EAF5A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/5516.image_5F00_thumb_5F00_6A2EAF5A.png" width="487" height="286" /></a></p>  <p>Diese Unterteilung hat sich im Prinzip bis heute nicht geändert. Allerdings haben sich natürlich die Technologien und die Kommunikationsmechanismen zwischen den einzelnen Schichten verändert. Früher war hier CORBA, Java RMI und COM+ sowie später .NET Remoting im Spiel. Aber da es sich um proprietäre Protokolle handelt, war es sehr schwierig hier plattformübergreifende Lösungen zu bauen. Erst mit SOAP und den damit verbundenen Web Services hat sich dies so geändert, dass man relativ einfach z.B. einen .NET Client für eine JEE Anwendung implementieren kann.</p>  <p>Hier noch ein Schaubild aus dem noch aktuellen .NET Application Architecture Guide (2nd Edition):</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0652.image_4F15E04C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0652.image_5F00_4F15E04C.png"><img title="image" style="margin-right: auto; margin-left: auto; float: none; display: block;" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0333.image_thumb_7A7A0146.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0333.image_5F00_thumb_5F00_7A7A0146.png" width="518" height="520" /></a></p>  <p>Wobei hier der “Middle Tier” nochmal in Service Layer, Business Layer und Data Layer unterteilt. wird. Aber auch in .NET wird eigentlich nie von einem Application Server gesprochen, obwohl alle Services von COM+ auch in .NET verfügbar sind und mit Windows Workflow Foundation (WF) und Windows Communication Foundation (WCF) noch weitere Services dazugekommen sind. Nichtsdestotrotz hat .NET in Kombination mit dem Windows Server also auch dem Internet Information Server alle Services eines Application Servers. Seit einigen Windows Server Versionen, gibt es im Server Setup auch die Möglichkeit die Server Rolle festzulegen und hier taucht dann auch offiziell der Begriff Application Server auf. Hier ein Screenshot von Windows Server 2008 R2:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4442.image_5CB87687.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4442.image_5F00_5CB87687.png"><img title="image" style="margin-right: auto; margin-left: auto; float: none; display: block;" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4540.image_thumb_374E8319.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4540.image_5F00_thumb_5F00_374E8319.png" width="526" height="386" /></a></p>  <p>Bevor ich dann im nächsten Blogpost meine bescheidenen Ergebnisse beim Testen der Transaktionsmethoden auf der Windows Plattform präsentieren möchte, will ich doch auch auf die offiziellen Tests des Transaktionsdurchsatzes einer Datenbank in Kombination mit einem Transaktionssystem hinweisen. Das <a href="http://www.tpc.org" target="_blank">Transaction Processing Council</a> gibt solche Tests vor, die dann Datenbankhersteller in Zusammenarbeit mit Hardwareherstellern durchführen und die Ergebnisse dann dort zur Veröffentlichung einreichen können. Wenn es um Datenbaken geht sind eigentlich nur 2 Tests erwähnenswert.</p>  <p>1. <strong>TPC-C</strong> ist der ältere Test wo es auch viele Einreichungen gibt. Interessant finde ich hier, dass man keinen einzigen Java Application Server in der Spalte TP Monitor findet. (Ausnahme: Websphere Enterprise Edition 3, aber wenn man im Test nachschaut wurde dann doch <a href="http://encyclopedia2.thefreedictionary.com/Encina" target="_blank">Encina</a> verwendet. Also der TP Monitor auf Unix den IBM gekauft hat und daraus dann CICS entwickelt hat). Dagegen findet man sehr oft COM+ !! Sogar bei Tests von IBM und Oracle. Das treibt mich zu der Schlussfolgerung, dass wenn es um Performance geht, COM+ nicht so schlecht sein kann <img class="wlEmoticon wlEmoticon-smile" alt="Smiley" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4861.wlEmoticon-smile_4E99878A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4861.wlEmoticon_2D00_smile_5F00_4E99878A.png" />.</p>  <p>2. <strong>TPC-E</strong> ist ein neuerer Test, wo Microsoft SQL Server auch an der Spitze steht, was allerdings keine große Kunst ist, da es bis heute keine Einreichung eines anderen Datenbankherstellers zu diesem Test gibt. Microsoft hat sich entschlossen diesen Test zu verwenden, da er realistischer heutige Szenarien modelliert, als dies mit TPC-C der Fall ist. Wenn die Unterschiede genau interessieren kann das <a href="http://www.sqlmag.com/article/benchmarks/sql-server-holds-record-for-tpc-e-database-benchmark-96943" target="_blank">hie</a>r nachlesen.</p>  <p>&#160;</p>  <p>Viele Grüße</p>  <p>Euer Martin</p>]]></content:encoded>
    </item>
    <item>
      <title>Eine kleine Geschichte der Transaktionen (2. Datenbankzugriff )</title>
      <link>https://docs.microsoft.com/archive/blogs/martinv/eine-kleine-geschichte-der-transaktionen-2-datenbankzugriff</link>
      <pubDate>Wed, 16 Jan 2013 06:46:00 GMT</pubDate>
      <dc:creator><![CDATA[Vollmix]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/martinv/2013/01/16/eine-kleine-geschichte-der-transaktionen-2-datenbankzugriff/</guid>
      <description><![CDATA[In diesem Blogpost m&ouml;chte ich kurz die M&ouml;glichkeiten des Datenbankzugriffs in der...]]></description>
      <content:encoded><![CDATA[<p>In diesem Blogpost m&ouml;chte ich kurz die M&ouml;glichkeiten des Datenbankzugriffs in der chronologischen Reihenfolge ihres Erscheinens vorstellen, wobei ich mich im Wesentlichen auf den SQL Server konzentriere.</p>
<p>Als Microsoft 1989 die erste Version des SQL Servers ver&ouml;ffentlichte gab es nur eine Programmierschnittstelle die auch als &ldquo;Call-Level&rdquo; API bezeichnete <a href="http://msdn.microsoft.com/en-us/library/aa298003(v=sql.80).aspx" target="_blank"><strong>DB-Library</strong>.</a> Diese beinhaltete ca. 150 Funktionen f&uuml;r MS-DOS und OS/2 Konsole sowie f&uuml;r OS/2 und Windows GUI Applikationen. Au&szlig;erdem gab es noch <a href="http://msdn.microsoft.com/en-us/library/aa225189(SQL.80).aspx" target="_blank"><strong>Embedded SQL for C</strong></a> oder die Kurzform ESQL for C. Dabei handelt es sich um einen Precompiler der es erm&ouml;glichte SQL Statements direkt im Source Code zu verwenden. F&uuml;r andere Datenbanksysteme von anderen Herstellern gab es nat&uuml;rlich auch &auml;hnliche APIs, aber eben jede API speziell f&uuml;r eine Datenbank.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0640.IC433473_7B7818B5.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0640.IC433473_5F00_7B7818B5.jpg"><img style="margin-right: auto; margin-left: auto; float: none; display: block;" title="IC433473" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3771.IC433473_thumb_6541FD63.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3771.IC433473_5F00_thumb_5F00_6541FD63.jpg" alt="IC433473" width="480" height="78" /></a></p>
<p>1992 kam mit <strong>Open Database Connectivity kurz ODBC</strong> die erste Schnittstelle auf den Markt, wo man versucht hat die darunter liegende Datenbank zu abstrahieren. Es sollte damit m&ouml;glich sein Programme zu schreiben die mit unterschiedlichen Datenbanksystemen arbeiten konnten. Dabei gab es noch die Unterscheidung ob der ODBC Zugriff &uuml;ber die propriet&auml;re Datenbank API erfolgt oder &uuml;ber einen nativen ODBC Treiber. Au&szlig;erdem gab es noch verschiedene Level ODBC Treibern, wobei das Level den Umfang der unterst&uuml;tzten Funktionen angibt. Die Level waren mit Core, Level 1 und Level 2 bezeichnet. ODBC wird auch heute noch in vielen Applikationen ausgiebig genutzt.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3276.IC433474_5220D0B7.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3276.IC433474_5F00_5220D0B7.jpg"><img style="margin-right: auto; margin-left: auto; float: none; display: block;" title="IC433474" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/6406.IC433474_thumb_7EC98A90.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/6406.IC433474_5F00_thumb_5F00_7EC98A90.jpg" alt="IC433474" width="483" height="151" /></a></p>
<p>Als dann COM mit Visual Basic immer popul&auml;rer wurde gab es eine Objektschicht &uuml;ber ODBC um auf Datenbanken zugreifen zu k&ouml;nnen. Da war zun&auml;chst Data <strong>Access Objects (DAO)</strong> und dann etwas sp&auml;ter <strong>Remote Data Objects (RDO). </strong></p>
<p>Die n&auml;chste Entwicklung war mit<strong> OLE DB</strong> eine Objektorientierte COM basierte Basistechnologie, die ODBC vollst&auml;ndig ersetzt. Auch gab es die M&ouml;glichkeit die OLE DB auf Basis der propriet&auml;ren DB API zu implementieren oder einen nativen OLE DB Provider zu entwickeln. OLE DB war aber nur f&uuml;r Programmiersprachen ausgelegt, welche &uuml;ber Pointer verf&uuml;gten also Wesentlichen C und C++, damit waren aber VB uns alle Scriptsprachen in Internetanwendungen ausgenommen. Dazu wurden dann die <strong>ActiveX Data Objects (ADO)</strong> entwickelt. F&uuml;r C++ gab es in der <strong>Active Template Library (ATL) OLE DB Templates</strong>, die es dem C++ Programmierer etwas einfacher machten mit OLE DB auf Datenbanken zuzugreifen. Diese Methode des Datenbankzugriffs ist die &auml;lteste die in meine Sample verwendet wird, weil dies auch die schnellste Zugriffstechnologie war bevor .NET auf den Markt kam. Etwas sp&auml;ter wurde noch ein OLE DB Provider f&uuml;r ODBC fertiggestellt, womit man dann auch Zugriff auf alle ODBC Datenquellen mit ADO oder OLE DB bekommen konnte. Im folgenden Bild ist auch noch <strong>ADO Multi-Dimensional (ADOMD)</strong> eingezeichnet, dabei handelt es sich um eine ADO Erweiterung f&uuml;r den Analysis Server den &ldquo;Data Warehouse&rdquo; Server im SQL Server. Heute sind diese Technologien und Komponenten zusammengefasst in den <a href="http://msdn.microsoft.com/en-us/library/aa968814(VS.85).aspx">Microsoft Data Access Components (MDAC) oder den Windows Data Access Components (WDAC)</a>, und sind Teil des Windows SDK.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/7077.IC433477_28C988B9.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/7077.IC433477_5F00_28C988B9.jpg"><img style="margin-right: auto; margin-left: auto; float: none; display: block;" title="IC433477" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/5811.IC433477_thumb_7C4058D2.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/5811.IC433477_5F00_thumb_5F00_7C4058D2.jpg" alt="IC433477" width="489" height="222" /></a></p>
<p>Als dann .NET im Jahre 2000 das Licht der Welt erblickte, war es wieder Zeit f&uuml;r eine neue .NET basierte Zugrifftechnologie. ADO.NET benutzt als Datenbankzugriffsschicht einen .NET Framework Provider. Microsoft lieferte einen nativen Provider f&uuml;r den SQL Server, sowie weitere Provider f&uuml;r OLE DB und ODBC. ADO.NET war so designed, dass man mit dieser Technologie konsequent auf Snapshots gesetzt hat, um so datenbankschonende Applikationen zu forcieren. Die Phiolosophie ist die. Datenbankverbindung so sp&auml;t wie m&ouml;glich &ouml;ffnen, das SQL Statement abzusetzen und dann die Verbindung so fr&uuml;h wie m&ouml;glich wieder zu schlie&szlig;en. Ge&ouml;ffnete Verbindungen verbleiben in einem &ldquo;Connection Pool&rdquo; und k&ouml;nnen so wiederverwendet werden ohne eine neue &ldquo;teure&rdquo; Verbindung zu &ouml;ffnen.</p>
<p>ADO.NET hat dann nat&uuml;rlich auch Weiterentwicklungen erfahren und es gab auch einige Erweiterungen. Mit der Spracherweiterung <strong>Language Integrated Query (LINQ)</strong> gab es auch eine Implementierung f&uuml;r den SQL Server LINQ2SQL.&nbsp; Dies war wenn man so will der erste Ansatz f&uuml;r einen objektrelationalen Mapper f&uuml;r .NET. Genau dies stellt dann das <strong>Entity Framework</strong> dar, der intern wieder einen <strong>Entity Data Provider,</strong> der auf dem ADO.NET Data Provider aufsetzt, benutzt um alle Features nutzen zu k&ouml;nnen.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3757.IC433480_7F060DC5.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3757.IC433480_5F00_7F060DC5.jpg"><img style="margin-right: auto; margin-left: auto; float: none; display: block;" title="IC433480" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/5808.IC433480_thumb_248F8B27.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/5808.IC433480_5F00_thumb_5F00_248F8B27.jpg" alt="IC433480" width="490" height="239" /></a></p>
<p>Mit der immer mehr voranschreitenden Nutzen der &ldquo;Cloud&rdquo; wurden auch andere Technologien immer wichtiger. Hier ist in erster Linie<strong> Representational State Transfer (REST)</strong> zu nennen. Im .NET Framework wurde&nbsp; die Windows Communication Foundation (WCF). Um die WCF Data Services (vorher bekannt als ADO.NET Data Services und Code Name &ldquo;Astoria&rdquo;) erweitert, um es einfach zu machen RESTful Services in .NET zu entwickeln.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3833.IC433481_5BF59C55.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3833.IC433481_5F00_5BF59C55.jpg"><img style="margin-right: auto; margin-left: auto; float: none; display: block;" title="IC433481" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/1682.IC433481_thumb_219A2674.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/1682.IC433481_5F00_thumb_5F00_219A2674.jpg" alt="IC433481" width="503" height="216" /></a></p>
<p>F&uuml;r die Zukunft wird wohl das REST basierte Open Data Protocol oder kurz OData immer wichtiger. Siehe auch <a href="http://www.odata.org">http://www.odata.org</a> .</p>
<p>Microsoft investiert in die Zukunft im Bereich Entity Framework und WCF Data Services. F&uuml;r weitere Informationen hierzu gibt es diese beiden Links :</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/ee720194.aspx" target="_blank">Entity Framework Futures</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ee720182.aspx" target="_blank">Data Servcies Futures</a></li>
</ul>
<p>Wer das Ganze noch ausf&uuml;hrlicher behandelt haben m&ouml;chte kann dies in mit folgenden <a href="http://msdn.microsoft.com/en-us/library/ee730343.aspx" target="_blank">MSDN Artikel</a> haben <img class="wlEmoticon wlEmoticon-smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8623.wlEmoticon-smile_608BA70F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8623.wlEmoticon_2D00_smile_5F00_608BA70F.png" alt="Smiley" />. <br />Dort wird auch noch ausf&uuml;hrlich auf die Analysis Services eingegangen, die ich hier nicht mit abgehandelt habe.</p>
<p>Sch&ouml;ne Gr&uuml;&szlig;e</p>
<p>- Martin</p>]]></content:encoded>
    </item>
    <item>
      <title>Eine kleine Geschichte der Transaktionen (1. Grundlagen )</title>
      <link>https://docs.microsoft.com/archive/blogs/martinv/eine-kleine-geschichte-der-transaktionen-1-grundlagen</link>
      <pubDate>Fri, 04 Jan 2013 04:04:28 GMT</pubDate>
      <dc:creator><![CDATA[Vollmix]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/martinv/2013/01/04/eine-kleine-geschichte-der-transaktionen-1-grundlagen/</guid>
      <description><![CDATA[Zur Einführung sollte ich wohl zuerst definieren was man eigentlich unter einer Transaktion in der...]]></description>
      <content:encoded><![CDATA[<p>Zur Einführung sollte ich wohl zuerst definieren was man eigentlich unter einer Transaktion in der bunten Welt des Programmierens und der Datenbanken versteht. Hierzu schnell in <a href="http://de.wikipedia.org/wiki/SQL#Transaktion.2C_Commit_und_Rollback" target="_blank">Wikipedia</a> nachgeschaut und die Erklärung, die man dort findet, ist wie folgt:</p>  <p><em>“Eine Transaktion bezeichnet eine Menge von Datenbankänderungen, die zusammen ausgeführt werden (müssen). So ist beispielsweise die Buchung (als Transaktion) eines Geldbetrags durch zwei atomare Datenbankoperationen „Abbuchen des Geldbetrages von Konto A“ und „Buchung des Geldbetrages auf Konto B“ gekennzeichnet. Kann die vollständige Abarbeitung der elementaren Datenbankoperationen der Transaktion nicht durchgeführt werden (z. B. aufgrund eines Fehlers), müssen alle durchgeführten Änderungen an dem Datenbestand auf den Ausgangszustand zurückgesetzt werden.</em> </p>  <p><em>Der Vorgang, der alle Änderungen einer Transaktion zurücksetzt, wird als Rollback bezeichnet. Der Begriff Commit bezeichnet das Ausführen einer Transaktion. Transaktionen sind eine Möglichkeit, die Konsistenz des Datenbestandes zu sichern. Im Beispiel der doppelten Kontenführung wird durch das Verhindern von ungültigen Teilbuchungen eine ausgeglichene Kontobilanz gewährleistet.”</em></p>  <p>Man könnte also auch sagen, dass man mehrere Operationen zu einer atomaren Ausführung zusammenfassen kann, damit entweder alle Änderungen bzw. Operationen durchgeführt werden oder gar keine. Das bedeutet, dass bei einem Rollback zwischenzeitlich durchgeführte Änderungen wieder rückgängig gemacht werden müssen.</p>  <p>Was oft auch benutzt wird ist der Begriff <strong>ACID</strong>, wobei hier nicht irgendwelche bewusstseinserweiternde Stoffe gemeint sind, sondern ACID als Abkürzung für:</p>  <ul>   <li><strong>Atomicity</strong> - eine Transaktion wird entweder &quot;comitted&quot; oder &quot;aborted&quot;. Wenn eine Transaktion ein Commit ausführt, bleiben alle ihre Änderungen erhalten; Wenn eine Transaktion abgebrochen wird, werden alle Änderungen rückgängig gemacht. </li>    <li><strong>Consistency - </strong>eine Transaktion ist eine korrekte Transformation des Systemstatus; Sie stellt sicher, dass das System in einem konsistenten Zustand bleibt. Beispielsweise wenn man in einer doppelt verknüpften Liste ein Element hinzufügt, werden alle vier vorwärts- und Rückwärts-Zeiger aktualisiert.</li>    <li><strong>Isolation</strong> - gleichzeitige Transaktionen sind isoliert von den Updates der anderen unvollständigen Transaktionen; Diese Updates stellen keinen konsistenten Zustand dar. Diese Eigenschaft wird oft Serialisierbarkeit genannt. Zum Beispiel wenn eine zweite Transaktion auf die doppelt verknüpfte Liste aus dem vorigen Consistency Beispiel zugreift, sieht entweder den Zustand vor den Änderungen, oder den Zustand nachdem alle Änderungen durchgeführt sind, also niemals einen Zustand dazwischen.</li>    <li><strong>Durability</strong> - sobald eine Transaktion ein Commit ausgeführt hat, bleibt der Zustand bestehen, auch wenn es Systemausfälle geben sollte. </li> </ul>  <p>&#160;</p>  <p>In manchen Anwendungsfällen wird aber nicht der volle “Schutz” einer Transaktion benötigt. Dafür gibt es im SQL Standard verschiedene Einstellungen um verschiedene Isolation Level zu definieren.</p>  <table style="border-width: 1px; border-style: solid; width: 100%; text-align: center; border-right-color: rgb(192, 192, 192); border-bottom-color: rgb(192, 192, 192);"><tbody>     <tr style="text-align: center; font-weight: bold;">       <td>Isolation Level</td>        <td>Dirty Read</td>        <td>Nonrepepeadable Read</td>        <td>Phantom Rows</td>     </tr>      <tr>       <td>Read uncommitted</td>        <td style="color: green;">Yes</td>        <td style="color: green;">Yes</td>        <td style="color: green;">Yes</td>     </tr>      <tr>       <td>Read Comitted</td>        <td style="color: red;">No</td>        <td style="color: green;">Yes</td>        <td style="color: green;">Yes</td>     </tr>      <tr>       <td>Repeadable Read</td>        <td style="color: red;">No</td>        <td style="color: red;">No</td>        <td style="color: green;">Yes</td>     </tr>      <tr>       <td>Serializable</td>        <td style="color: red;">No</td>        <td style="color: red;">No</td>        <td style="color: red;">No</td>     </tr>   </tbody></table>  <p>So jetzt muss ich natürlich noch erklären was die Begriffe Dirty Read, Nonrepeadable Read und Phantom Rows bedeuten.</p>  <p><strong>Dirty Read</strong> - Wenn eine Transaktion „uncommitted“ Änderungen einer anderen Transaktion lesen kann.</p>  <p><strong>Nonrepeadable Read</strong> - Wenn von Transaktion A bereits gelesene Daten von Transaktion B modifiziert werden, bevor Transaktion A abgeschlossen ist.</p>  <p><strong>Phantom Rows</strong> - Wenn Transaktion A das Resultat einer Abfrage auswertet und dann Transaktion B eine Zeile einfügt, welche die Kriterien erfüllt, um in das Resultat der Abfrage von Transaktion A zu gehören, bevor Transaktion A abgeschlossen ist.</p>  <p>Der Ausdruck kommt daher, wenn Transaktion A die Abfrage ein zweites mal ausführen würde, wäre eine neue Zeile wie ein Phantom im Resultat aufgetaucht.</p>  <p>So das war es fürs Erste. In der nächsten Folge möchte ich mich dann mit APIs auseinandersetzen, die es dem Entwickler ermöglichen Transaktionen in eigenen Anwendungen zu verwenden.</p>  <p>Bis demnächst Euer Martin</p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 2012–Team Foundation Server Deployment auf Windows Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/martinv/visual-studio-2012team-foundation-server-deployment-auf-windows-azure</link>
      <pubDate>Tue, 18 Dec 2012 04:02:10 GMT</pubDate>
      <dc:creator><![CDATA[Vollmix]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/martinv/2012/12/18/visual-studio-2012team-foundation-server-deployment-auf-windows-azure/</guid>
      <description><![CDATA[&#160;  Im Screencast wird gezeigt, wie Visual Studio 2012 mit Team Foundation Server benutzt werden...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>Im Screencast wird gezeigt, wie Visual Studio 2012 mit Team Foundation Server benutzt werden kann um direkt Windows Azure Applikationen mit dem Build Server in TFS zu erstellen und durch eine spezielle, bereits mitgelieferte „Build-Rule“ auf Windows Azure deployed werden kann. Außerdem wird gezeigt, wie die lokale Entwicklung von Cloud Services in der Windows Azure Emulationsumgebung inklusive Debugging durchgeführt wird.</p> <iframe height="281" src="http://player.vimeo.com/video/46226875?badge=0" frameborder="0" width="500" mozallowfullscreen="mozallowfullscreen" webkitallowfullscreen="webkitallowfullscreen" allowfullscreen="allowfullscreen"></iframe>   <p><a href="https://vimeo.com/46226875">Visual Studio 2012&#160; - Team Foundation Server Deployment zu Azure | Microsoft</a> from <a href="https://vimeo.com/visualstudio11">Visual Studio [Microsoft]</a> on <a href="https://vimeo.com">Vimeo</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Azure WebRole oder WorkerRole remote Debuggen</title>
      <link>https://docs.microsoft.com/archive/blogs/martinv/windows-azure-webrole-oder-workerrole-remote-debuggen</link>
      <pubDate>Tue, 18 Dec 2012 02:02:00 GMT</pubDate>
      <dc:creator><![CDATA[Vollmix]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/martinv/2012/12/18/windows-azure-webrole-oder-workerrole-remote-debuggen/</guid>
      <description><![CDATA[Wenn man f&uuml;r Microsoft Windows Azure Cloud Dienste entwickelt, kommt man doch relativ bald in...]]></description>
      <content:encoded><![CDATA[<p>Wenn man f&uuml;r Microsoft Windows Azure Cloud Dienste entwickelt, kommt man doch relativ bald in die Situation, wo man sich w&uuml;nscht die Applikation auch in der wirklichen Laufzeitumgebung von Windows Azure debuggen zu k&ouml;nnen. Nat&uuml;rlich ist es ein sehr gro&szlig;er Vorteil von Windows Azure, dass man mit dem Azure SDK und Visual Studio eine lokale Emulation der Windows Azure Laufzeitumgebung zur Verf&uuml;gung hat, aber das bleibt halt eine Emulation. Manchmal verh&auml;lt sich die &bdquo;echte&ldquo; Umgebung halt doch etwas anders, oder ich m&ouml;chte wirklich mehrere Instanzen parallel debuggen, was so in der lokalen Umgebung auch nicht m&ouml;glich ist. Zun&auml;chst hier die Liste der Vorrausetzungen, die ich erf&uuml;llen muss um das Ganze Szenario nachvollziehen zu k&ouml;nnen. Wichtig an der Stelle ist zu erw&auml;hnen, dass dies alles kostenfrei m&ouml;glich ist.</p>
<p>1. Man braucht nat&uuml;rlich einen Azure Account &uuml;ber den man seine Cloud Services anlegen, verwalten und deployen kann. Es reicht auch ein Windows Azure Test Account den man sich auf der Windows <a href="http://www.windowsazure.com/de-de/">Azure Webseite</a> holen kann.</p>
<p>2. Eine Visual Studio Version mindestens Visual Studio 2010 oder Visual Studio 2012, es reicht auch die Express Version oder Visual Studio Web Developer 2010.</p>
<p>3. Das entsprechende Azure SDK das man im Windows Azure Develoer Center herunterladen kann. Wenn Visual Studio 2010 verwendet wird sollte man noch APS.NET MVC 4 nachinstallieren.</p>
<p>Im Weiteren verwende ich Visual Studio 2012 sowie die Applikation aus dem Tutorial: &bdquo;.<a href="http://www.windowsazure.com/en-us/develop/net/tutorials/multi-tier-application/">NET Multi-Tier Application Using Service Bus Queues</a>&ldquo;. Dort wird auch nochmal beschrieben wie man die Tools und das SDK installiert.</p>
<p>Wenn man also diese App lokal mit ServiceBus fertig hat dann sind folgende Schritte notwendig um das Debuggen in der Cloud zu erm&ouml;glichen.</p>
<p>1. Im neuen Management Portal einen neuen Cloud Service anlegen:&nbsp;&nbsp; <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0728.Cloud-Debug-Screenshot-01_766B60A2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0728.Cloud_2D00_Debug_2D00_Screenshot_2D00_01_5F00_766B60A2.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-01" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3443.Cloud-Debug-Screenshot-01_thumb_6D9B5856.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3443.Cloud_2D00_Debug_2D00_Screenshot_2D00_01_5F00_thumb_5F00_6D9B5856.png" alt="Cloud-Debug-Screenshot-01" width="640" height="333" /></a></p>
<p>2. Namen des Dienstes angeben und das Datacenter ausw&auml;hlen wo der Cloud Dienst betrieben werden soll.&nbsp;&nbsp; <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4201.Cloud-Debug-Screenshot-02_4C3BB2BA.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4201.Cloud_2D00_Debug_2D00_Screenshot_2D00_02_5F00_4C3BB2BA.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-02" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/5773.Cloud-Debug-Screenshot-02_thumb_6B122698.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/5773.Cloud_2D00_Debug_2D00_Screenshot_2D00_02_5F00_thumb_5F00_6B122698.png" alt="Cloud-Debug-Screenshot-02" width="735" height="590" /></a></p>
<p>3. Um den Netzwerkzugriff f&uuml;r das Remote Debuggen zu erm&ouml;glichen, ist es notwendig Windows Azure Connect zu verwenden, wenn man auf den doch gr&ouml;&szlig;eren Aufwand f&uuml;r eine Virtuelle VPN Umgebung vermeiden m&ouml;chte. Windows Azure Connect wird leider im Moment vom neuen Management Portal (noch) nicht unterst&uuml;tzt. Also muss man auf die Vorg&auml;ngerversion des Portals umschalten:&nbsp;&nbsp; <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8814.Cloud-Debug-Screenshot-03_70ECCA31.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8814.Cloud_2D00_Debug_2D00_Screenshot_2D00_03_5F00_70ECCA31.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-03" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0486.Cloud-Debug-Screenshot-03_thumb_1AECC85A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0486.Cloud_2D00_Debug_2D00_Screenshot_2D00_03_5F00_thumb_5F00_1AECC85A.png" alt="Cloud-Debug-Screenshot-03" width="339" height="609" /></a></p>
<p>4. Im alten Management Portal dann auf Verbinden klicken um Windows Azure Connect anzuschalten:&nbsp;&nbsp; <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3515.Cloud-Debug-Screenshot-04_20C76BF3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3515.Cloud_2D00_Debug_2D00_Screenshot_2D00_04_5F00_20C76BF3.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-04" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4760.Cloud-Debug-Screenshot-04_thumb_5F4CB999.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4760.Cloud_2D00_Debug_2D00_Screenshot_2D00_04_5F00_thumb_5F00_5F4CB999.png" alt="Cloud-Debug-Screenshot-04" width="640" height="370" /></a></p>
<p>5. Auf der dann angezeigten Seite findet man die Ressourcen rund um Windows Azure Connect. Der n&auml;chste Schritt zum Verwenden von Windows Azure Connect ist. Den Windows Azure Account unter Verbinden im Men&uuml; links auszuw&auml;hlen und dann das Aktivierungstoken herunterladen. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8080.Cloud-Debug-Screenshot-05_248510C3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8080.Cloud_2D00_Debug_2D00_Screenshot_2D00_05_5F00_248510C3.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-05" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/1537.Cloud-Debug-Screenshot-05_thumb_3C3C4829.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/1537.Cloud_2D00_Debug_2D00_Screenshot_2D00_05_5F00_thumb_5F00_3C3C4829.png" alt="Cloud-Debug-Screenshot-05" width="420" height="306" /></a></p>
<p>6. In der folgenden Box dann auf &bdquo;Token in Zwischenablage kopieren&ldquo; klicken und dann mit Ok beenden. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4667.Cloud-Debug-Screenshot-06_53F37F8F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4667.Cloud_2D00_Debug_2D00_Screenshot_2D00_06_5F00_53F37F8F.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-06" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0044.Cloud-Debug-Screenshot-06_thumb_59CE2328.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0044.Cloud_2D00_Debug_2D00_Screenshot_2D00_06_5F00_thumb_5F00_59CE2328.png" alt="Cloud-Debug-Screenshot-06" width="635" height="284" /></a></p>
<p>7. Das Aktivierungstoken muss man dann noch in die Konfiguration der zu debuggenden Rolle &uuml;bernehmen. Dazu in Visual Studio bei den Rollen mit rechtem Mausklick auf die Rolle in den Properties bzw. Eigenschaften unter Virtual Network das Aktivierungstoken &uuml;bernehmen. Dies erzeugt die n&ouml;tigen Eintr&auml;ge in der Datei ServiceDefinition.csdef. Hier kann man auch weitere Einstellungen f&uuml;r die Rollen vornehmen, aber f&uuml;r mein Beispiel reichen die Default Einstellungen. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3175.Cloud-Debug-Screenshot-07_4D5FFFFF.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3175.Cloud_2D00_Debug_2D00_Screenshot_2D00_07_5F00_4D5FFFFF.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-07" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8372.Cloud-Debug-Screenshot-07_thumb_0C51809B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8372.Cloud_2D00_Debug_2D00_Screenshot_2D00_07_5F00_thumb_5F00_0C51809B.png" alt="Cloud-Debug-Screenshot-07" width="804" height="256" /></a></p>
<p>8. Jetzt kann man das Package direkt von Visual Studio aus ver&ouml;ffentlichen. Dazu bei den Rollen auf Publish bzw. Ver&ouml;ffentlichen klicken. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/5807.Cloud-Debug-Screenshot-08_2B27F479.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/5807.Cloud_2D00_Debug_2D00_Screenshot_2D00_08_5F00_2B27F479.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-08" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/5722.Cloud-Debug-Screenshot-08_thumb_0315455A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/5722.Cloud_2D00_Debug_2D00_Screenshot_2D00_08_5F00_thumb_5F00_0315455A.png" alt="Cloud-Debug-Screenshot-08" width="573" height="337" /></a></p>
<p>9. Wenn man dies das erste Mal macht muss man zun&auml;chst &uuml;ber den Link &bdquo;Sign In&ldquo; mit seinem Microsoft Account eine Datei mit &bdquo;Publish Settings&ldquo; herunterladen und diese dann &uuml;ber den Import Button in Visual Studio &uuml;bernehmen. Dann einen Storage Account anlegen und nach M&ouml;glichkeit dieselbe Region f&uuml;r alle Komponenten verwenden. Also auch Northern Europe. Dann unter Cloud Service den im Portal angelegten Dienst ausw&auml;hlen. Build Configuration ist klar, muss nat&uuml;rlich Debug sein. Dann unbedingt Remote Desktop f&uuml;r die Rollen einschalten, da wir die Remote Debugging Komponenten von Visual Studio auf die VMs bekommen m&uuml;ssen. Also mit Settings einen Account zum Remote Access auf die VMs einrichten. Wenn man dann auf Next klickt bekommt man nochmals eine &Uuml;bersicht aller Settings und kann mit Publish das Apllikationspaket zu Azure hochladen. Bis die Applikation dann bereit ist kann es schon einige Minuten dauern. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8030.Cloud-Debug-Screenshot-10_73FE667F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8030.Cloud_2D00_Debug_2D00_Screenshot_2D00_10_5F00_73FE667F.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-10" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/1588.Cloud-Debug-Screenshot-10_thumb_31AB4E3C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/1588.Cloud_2D00_Debug_2D00_Screenshot_2D00_10_5F00_thumb_5F00_31AB4E3C.png" alt="Cloud-Debug-Screenshot-10" width="820" height="556" /></a></p>
<p>10. Um Connect mit der VM-Rolle zu verwenden, m&uuml;ssen Sie die Connect Endpoint-Software auf dem Computer, der zum Erstellen des VM-Image verwendet wird, &uuml;ber den folgenden Link installieren: <a href="http://waconnect.blob.core.windows.net/client/latest/x64/wacendpointpackagefull.exe">http://waconnect.blob.core.windows.net/client/latest/x64/wacendpointpackagefull.exe</a> . Oder man klickt im alten Portal einfach auf &bdquo;Lokalen Endpunkt installieren&ldquo; klicken. Damit wird dann gleich das richtige Token mit&uuml;bergeben. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8015.Cloud-Debug-Screenshot-11_0C415ACE.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8015.Cloud_2D00_Debug_2D00_Screenshot_2D00_11_5F00_0C415ACE.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-11" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/7444.Cloud-Debug-Screenshot-11_thumb_15BA1944.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/7444.Cloud_2D00_Debug_2D00_Screenshot_2D00_11_5F00_thumb_5F00_15BA1944.png" alt="Cloud-Debug-Screenshot-11" width="729" height="359" /></a></p>
<p>11. Im folgenden Dialog dann den Link kopieren und im Browser eingeben und die Software installieren. Nach der Installation erscheint das Connect Symbol in der Taskleiste und nach einigen Sekunden zeigt das Symbol auch an dass man mit Windows Azure Connect verbunden ist. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4380.Cloud-Debug-Screenshot-12_2C2CB7CB.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4380.Cloud_2D00_Debug_2D00_Screenshot_2D00_12_5F00_2C2CB7CB.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-12" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/2148.Cloud-Debug-Screenshot-12_thumb_46F8DDD7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/2148.Cloud_2D00_Debug_2D00_Screenshot_2D00_12_5F00_thumb_5F00_46F8DDD7.png" alt="Cloud-Debug-Screenshot-12" width="637" height="286" /></a></p>
<p>12. Jetzt muss man noch eine Servergruppe anlegen um die Verbindung zu erm&ouml;glichen. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8400.Cloud-Debug-Screenshot-15_09F4AC45.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8400.Cloud_2D00_Debug_2D00_Screenshot_2D00_15_5F00_09F4AC45.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-15" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0160.Cloud-Debug-Screenshot-15_thumb_24549F5C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0160.Cloud_2D00_Debug_2D00_Screenshot_2D00_15_5F00_thumb_5F00_24549F5C.png" alt="Cloud-Debug-Screenshot-15" width="713" height="332" /></a></p>
<p>13. Im nachfolgenden Dialog die lokale Maschine ausw&auml;hlen und die entsprechende Rolle asuw&auml;hlen zu der man die Verbindung erm&ouml;glichen m&ouml;chte. Die Check Box nicht vergessen damit man die Verbindung auch zul&auml;sst. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0552.Cloud-Debug-Screenshot-13_4DE86A8F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0552.Cloud_2D00_Debug_2D00_Screenshot_2D00_13_5F00_4DE86A8F.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-13" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0552.Cloud-Debug-Screenshot-13_thumb_4CA3D1B0.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0552.Cloud_2D00_Debug_2D00_Screenshot_2D00_13_5F00_thumb_5F00_4CA3D1B0.png" alt="Cloud-Debug-Screenshot-13" width="705" height="477" /></a></p>
<p>14. Wenn dies erfolgreich abgeschlossen wurde muss man noch im Windows Azure Connect Client auf &bdquo;Richtlinie aktuakisieren&ldquo; klicken, damit die &Auml;nderungen von Azure &uuml;bernommen werden. Nach einigen Minuten kann man dann den Netzwerkzugriff auf die VM z.B. mittels ping testen. Wenn dies funktioniert hat man Windows Azure Connect erfolgreich eingerichtet. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/1134.Cloud-Debug-Screenshot-14_2B442C14.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/1134.Cloud_2D00_Debug_2D00_Screenshot_2D00_14_5F00_2B442C14.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-14" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3617.Cloud-Debug-Screenshot-14_thumb_311ECFAD.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3617.Cloud_2D00_Debug_2D00_Screenshot_2D00_14_5F00_thumb_5F00_311ECFAD.png" alt="Cloud-Debug-Screenshot-14" width="674" height="345" /></a></p>
<p>15. Zum weiteren Vorgehen ist es einfacher wieder in das neue Management von Windows Azure zu wechseln. Dazu in der Statuszeile auf den Link &bdquo;Zum neuen Portal&ldquo; klicken. Dann den entsprechenden Clouddienst anklicken. Auf &bdquo;Wird bereitgestellt&ldquo; klicken, da wir in die Staging Umgebung deployed haben. Dann in der oberen Zeile auf Instanzen klicken. Die Worker Rolle anklicken und dann in der Statuszeile auf verbinden klicken. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/7802.Cloud-Debug-Screenshot-16_36F97346.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/7802.Cloud_2D00_Debug_2D00_Screenshot_2D00_16_5F00_36F97346.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-16" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4353.Cloud-Debug-Screenshot-16_thumb_608D3E79.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4353.Cloud_2D00_Debug_2D00_Screenshot_2D00_16_5F00_thumb_5F00_608D3E79.png" alt="Cloud-Debug-Screenshot-16" width="640" height="269" /></a></p>
<p>16. Die RDP auf dem lokalen PC z.B. auf dem Desktop abspeichern. Danach mit rechter Maustaste anklicken und Context Men&uuml; dann &bdquo;Edit&ldquo; bzw. &bdquo;Bearbeiten&ldquo; ausw&auml;hlen. Dann denn Reiter Local Resources anklicken und auf den More Button klicken. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4353.Cloud-Debug-Screenshot-17_13E901D6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4353.Cloud_2D00_Debug_2D00_Screenshot_2D00_17_5F00_13E901D6.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-17" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8463.Cloud-Debug-Screenshot-17_thumb_598D8BF4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8463.Cloud_2D00_Debug_2D00_Screenshot_2D00_17_5F00_thumb_5F00_598D8BF4.png" alt="Cloud-Debug-Screenshot-17" width="419" height="483" /></a></p>
<p>17. Dann hier den Zugriff auf die lokale Platte erm&ouml;glichen, damit man die Remote Debugging Komponenten auf die VM der Worker Role kopieren kann. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/6406.Cloud-Debug-Screenshot-18_7144C35A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/6406.Cloud_2D00_Debug_2D00_Screenshot_2D00_18_5F00_7144C35A.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-18" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4331.Cloud-Debug-Screenshot-18_thumb_08FBFAC1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4331.Cloud_2D00_Debug_2D00_Screenshot_2D00_18_5F00_thumb_5F00_08FBFAC1.png" alt="Cloud-Debug-Screenshot-18" width="421" height="388" /></a></p>
<p>18. Dann mit &bdquo;Connect&ldquo; die Remote Desktop Verbindung starten und mit den im Schritt 9 angelegten Account anmelden . In der Virtuellen Maschine dann den Explorer starten und &uuml;ber die eingebundene lokale Platte zu den Remote Debug Komponenten von Visual Studio navigieren. Diese befinden sich bei einer Standardinstallation im Verzeichnis: <em>C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Remote Debugger </em>Dort gibt es dann zumindest zwei Unterverzeichnisse X86 und x64. Am einfachsten ist es das Verzeichnis x64 auf die VM zu kopieren. Dann auf der virtuellen Maschine das Verzeichnis &ouml;ffnen und die Datei msvsmon.exe lokalisieren und diese dann starten. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4338.Cloud-Debug-Screenshot-20_35A4B49A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4338.Cloud_2D00_Debug_2D00_Screenshot_2D00_20_5F00_35A4B49A.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-20" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/7140.Cloud-Debug-Screenshot-20_thumb_1F026653.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/7140.Cloud_2D00_Debug_2D00_Screenshot_2D00_20_5F00_thumb_5F00_1F026653.png" alt="Cloud-Debug-Screenshot-20" width="715" height="759" /></a></p>
<p>19. Beim ersten Start wird folgende Dialogbox angezeigt. Damit wird die Firewall automatisch f&uuml;r das Remote Debuggen konfiguriert. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8623.Cloud-Debug-Screenshot-21_643ABD7C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8623.Cloud_2D00_Debug_2D00_Screenshot_2D00_21_5F00_643ABD7C.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-21" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4810.Cloud-Debug-Screenshot-21_thumb_6A156115.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4810.Cloud_2D00_Debug_2D00_Screenshot_2D00_21_5F00_thumb_5F00_6A156115.png" alt="Cloud-Debug-Screenshot-21" width="427" height="448" /></a></p>
<p>20. Dass die Virtuelle Maschine zum Debuggen bereit ist sieht man an dem anschlie&szlig;end angezeigten Fenster, wo dann steht, dass auf eingehende Verbindungen gewartet wird. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/5074.Cloud-Debug-Screenshot-22_5AFE823B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/5074.Cloud_2D00_Debug_2D00_Screenshot_2D00_22_5F00_5AFE823B.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-22" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0020.Cloud-Debug-Screenshot-22_thumb_41967F01.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0020.Cloud_2D00_Debug_2D00_Screenshot_2D00_22_5F00_thumb_5F00_41967F01.png" alt="Cloud-Debug-Screenshot-22" width="628" height="202" /></a></p>
<p>21. Jetzt zur&uuml;ck zu Visual Studio wo man jetzt im Debug Men&uuml; unter &bdquo;Attach to Process&ldquo; den Dialog startet, um den Debugger mit dem Remote Debugger zu verbinden. Dazu den Rechnernamen der VM mit :portnummer eingeben also z.B.: RD0015D520D9D:4016 eingebe, dann muss man sich wiederum mit seinem Account anmelden und dann in der Prozessliste den Prozess WaWorkerHost.exe ausw&auml;hlen und auf Attach klicken. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0020.Cloud-Debug-Screenshot-23_133CF954.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0020.Cloud_2D00_Debug_2D00_Screenshot_2D00_23_5F00_133CF954.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-23" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/7853.Cloud-Debug-Screenshot-23_thumb_06CED62B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/7853.Cloud_2D00_Debug_2D00_Screenshot_2D00_23_5F00_thumb_5F00_06CED62B.png" alt="Cloud-Debug-Screenshot-23" width="872" height="589" /></a></p>
<p>22. In Visual Studio z.B. die Source Datei WorkerRole.cs im Projekt OrderProcessingRole &ouml;ffnen und einen Breakpoint setzen. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3005.Cloud-Debug-Screenshot-24_3781DDD6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3005.Cloud_2D00_Debug_2D00_Screenshot_2D00_24_5F00_3781DDD6.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-24" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0272.Cloud-Debug-Screenshot-24_thumb_4F39153C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/0272.Cloud_2D00_Debug_2D00_Screenshot_2D00_24_5F00_thumb_5F00_4F39153C.png" alt="Cloud-Debug-Screenshot-24" width="663" height="649" /></a></p>
<p>23. Dann im Management Portal auf Dashboard klicken und die SiteURL im rechten Bereich anklicken damit die Site im Browser gestartet wird. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/7115.Cloud-Debug-Screenshot-25_2DD96FA0.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/7115.Cloud_2D00_Debug_2D00_Screenshot_2D00_25_5F00_2DD96FA0.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-25" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/2620.Cloud-Debug-Screenshot-25_thumb_5A822979.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/2620.Cloud_2D00_Debug_2D00_Screenshot_2D00_25_5F00_thumb_5F00_5A822979.png" alt="Cloud-Debug-Screenshot-25" width="640" height="181" /></a></p>
<p>24. Dann in der App eine Eingabe machen und auf Create klicken, dann sollte nach einigen Sekunden der Debugger am vorher gesetzten Breakpoint anhalten. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4073.Cloud-Debug-Screenshot-26_46F4C9D8.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/4073.Cloud_2D00_Debug_2D00_Screenshot_2D00_26_5F00_46F4C9D8.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-26" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8270.Cloud-Debug-Screenshot-26_thumb_4CCF6D71.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/8270.Cloud_2D00_Debug_2D00_Screenshot_2D00_26_5F00_thumb_5F00_4CCF6D71.png" alt="Cloud-Debug-Screenshot-26" width="481" height="450" /></a></p>
<p>25. Im Visual Studio Debugger kann man, wie sonst auch, auf die Variablen und alle Debugging Features zugreifen. <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3480.Cloud-Debug-Screenshot-27_3DB88E97.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/3480.Cloud_2D00_Debug_2D00_Screenshot_2D00_27_5F00_3DB88E97.png"><img style="display: inline;" title="Cloud-Debug-Screenshot-27" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/5047.Cloud-Debug-Screenshot-27_thumb_6A614870.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-50-metablogapi/5047.Cloud_2D00_Debug_2D00_Screenshot_2D00_27_5F00_thumb_5F00_6A614870.png" alt="Cloud-Debug-Screenshot-27" width="643" height="644" /></a></p>
<p>BINGO!</p>]]></content:encoded>
    </item>
    <item>
      <title>Sharepoint jetzt noch einfacher zu haben bzw. installieren II</title>
      <link>https://docs.microsoft.com/archive/blogs/martinv/sharepoint-jetzt-noch-einfacher-zu-haben-bzw-installieren-ii</link>
      <pubDate>Mon, 15 Nov 2010 08:36:54 GMT</pubDate>
      <dc:creator><![CDATA[Vollmix]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/martinv/2010/11/15/sharepoint-jetzt-noch-einfacher-zu-haben-bzw-installieren-ii/</guid>
      <description><![CDATA[Wenn ein Entwickler sich mit er Entwicklung von Applikationen auf Basis von Sharepoint Server 2010...]]></description>
      <content:encoded><![CDATA[<p>Wenn ein Entwickler sich mit er Entwicklung von Applikationen auf Basis von Sharepoint Server 2010 oder Sharepoint Foundation beschäftigen wollte, musste er sich erst mal mit einer etwas aufwendigen Installation herumschlagen. Immerhin gibt es seit Sharepoint 2010 die Möglichkeit Sharepoint auch auf einem Client OS also Microsoft Vista SP2 und Windows 7 zu installieren sofern es sich um eine 64Bit Version handelt. Aber auch diese Möglichkeit war relativ aufwendig, da man die einige Dinge manuell vorbereiten musste. Das Vorgehen war <a href="http://msdn.microsoft.com/en-us/library/ee554869(office.14).aspx">hier</a> exakt beschrieben. Dies gehört jetzt der Vergangenheit an den seit kurzem gibt es das <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=54dc2eef-e9ea-4c7b-9470-ec5cb58414de">Sharepoint Easy Setup Script</a>. Damit wird alles vollautomatisiert auf der Zielmaschine oder sogar in eine “Virtual Harddisk” (VHD) installiert.</p>  <p>Das <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=54dc2eef-e9ea-4c7b-9470-ec5cb58414de">Sharepoint Easy Setup Script</a> einfach herunterladen und die Instruktionen beachten. Wenn man anpassen möchte welche zusätzlichen Tools installiert werden sollen, dann kann man dies in der Datei <strong>..\SharePoint2010EasySetup\Labs\EasySetup\Source\config.xml</strong> anpassen.</p>  <p>Noch ein kleiner Tipp. Falls man die Installation auf einem HyperV Image von Windows 7 64Bit ausführen möchte gehen die Downloads der Installationsdateien schief. ein einfacher Workaround ist das Script auf einer Windows 7 Maschine bis zur Beendigung der Downloads ausführen und dann abbrechen. Dann kann man das Ganze Verzeichnis in ein ISO Image packen und dann an die HyperV Maschine mounten und das Script dort erneut ausführen und Bingo, man hat Sharepoint Foundation auf dem HyperV Image von Windows 7 (64Bit) installiert und konfiguriert.</p>]]></content:encoded>
    </item>
    <item>
      <title>Sharepoint jetzt noch einfacher zu haben bzw. zu installieren I.</title>
      <link>https://docs.microsoft.com/archive/blogs/martinv/sharepoint-jetzt-noch-einfacher-zu-haben-bzw-zu-installieren-i</link>
      <pubDate>Mon, 15 Nov 2010 08:11:00 GMT</pubDate>
      <dc:creator><![CDATA[Vollmix]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/martinv/2010/11/15/sharepoint-jetzt-noch-einfacher-zu-haben-bzw-zu-installieren-i/</guid>
      <description><![CDATA[Das Installieren von Sharepoint Server 2010 oder auch von Sharepoint Foundation 2010 war bislang...]]></description>
      <content:encoded><![CDATA[<p>Das Installieren von Sharepoint Server 2010 oder auch von Sharepoint Foundation 2010 war bislang nicht die einfachste Erfahrung die man machen konnte. Um diese &ldquo;Experience&rdquo; dramatisch zu verbessern gibt es neue Wege Sharepoint auf einer Maschine zu installieren. Im ersten Fall ist die Zielmaschine ist ein <br /><br /><strong>Windows Server 2008&nbsp; (64bit) oder Windows Server 2008 R2 (64bit)</strong></p>
<p>seit einiger Zeit gibt es n&auml;mlich Windows Sharepoint Foundation im <a href="http://www.microsoft.com/web/downloads/platform.aspx">Web Platform Installer 2.0</a> zum Download und zwar so dass gleich alles installiert und konfiguriert wird. Also einfach den <a href="http://www.microsoft.com/web/downloads/platform.aspx">Web Platform Installer 2.0</a> runterladen, dann die Management Console des Internet Information Servers starten.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/3487.image_2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-70-50-metablogapi/3487.image_5F00_2.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/2728.image_thumb.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-70-50-metablogapi/2728.image_5F00_thumb.png" alt="image" width="542" height="421" border="0" /></a></p>
<p>Hier links eine beliebige neue Website oder auch die Default Web Site ausw&auml;hlen und dann links unten auf &ldquo;Anwendung &uuml;ber Katalog installieren&rdquo; klicken.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/7028.image_4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-70-50-metablogapi/7028.image_5F00_4.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/6457.image_thumb_1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-70-50-metablogapi/6457.image_5F00_thumb_5F00_1.png" alt="image" width="540" height="476" border="0" /></a></p>
<p>Dann Optionen anklicken damit man dort die Enterprise Features mitangezeigt bekommt Siehe n&auml;chstes Bild:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/1258.image_6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-70-50-metablogapi/1258.image_5F00_6.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/8688.image_thumb_2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-70-50-metablogapi/8688.image_5F00_thumb_5F00_2.png" alt="image" width="493" height="336" border="0" /></a></p>
<p>Nach dem Klick auf Ok wird dann auch Sharepoint bei den Enterprise Downloads angezeigt:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/0184.image_8.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-70-50-metablogapi/0184.image_5F00_8.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/50/metablogapi/4401.image_thumb_3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-70-50-metablogapi/4401.image_5F00_thumb_5F00_3.png" alt="image" width="496" height="377" border="0" /></a></p>
<p>Zum Schluss noch ein beherzter Klick auf &ldquo;Installieren&rdquo; und los geht es &hellip;.</p>
<p>Viele Gr&uuml;&szlig;e</p>
<p>Martin Vollmer</p>]]></content:encoded>
    </item>
    <item>
      <title>“anspruchsvollere” Sharepoint Anpassungen mit XSLT</title>
      <link>https://docs.microsoft.com/archive/blogs/martinv/anspruchsvollere-sharepoint-anpassungen-mit-xslt</link>
      <pubDate>Thu, 11 Nov 2010 07:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Vollmix]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/martinv/2010/11/11/anspruchsvollere-sharepoint-anpassungen-mit-xslt/</guid>
      <description><![CDATA[Sharepoint lässt sich auf vielfältige Weisen anpassen und erweitern. Leider sind aber in vielen...]]></description>
      <content:encoded><![CDATA[<p>Sharepoint lässt sich auf vielfältige Weisen anpassen und erweitern. Leider sind aber in vielen Szenarien Erweiterungen und Anpassungen durch selbstentwickelte Komponenten oder Sites nicht möglich. Dazu gehören auch die Cloud Szenarien die aktuell über die “Business Productivity Online Suite” kurz BPOS verfügbar sind. Auch in den meisten Hosting Angeboten sind die Möglichkeiten stark eingeschränkt. Also was bleibt noch, um anspruchsvollere oder besser gesagt coole Anpassungen vornehmen zu können. Der Sharepoint Designer und Zugriff auf die Sharepoint Objekte in XSLT. Wie sowas gemacht werden kann zeigt ein Webcast den Antje Kadgiehn dankenswerterweise für uns aufgenommen hat. Es wird dazu auch noch weitere Webcasts geben, damit auf die Möglichkeiten die man auf diese Weise hat bekannter werden. Also wenn das interessant kling öfter mal hier oder auf <a href="http://www.MyMSDN.de">www.MyMSDN.de</a> unter Webcasts vorbeischauen. Hier der Link zum Webcast : <a title="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032470469" href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032470469">http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032470469</a>&#160;</p>  <p>Viele Grüße</p>  <p>Martin </p>]]></content:encoded>
    </item>
    <item>
      <title>Integration mit den Business Connectivity Services in Sharepoint 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/martinv/integration-mit-den-business-connectivity-services-in-sharepoint-2010</link>
      <pubDate>Tue, 09 Nov 2010 03:54:31 GMT</pubDate>
      <dc:creator><![CDATA[Vollmix]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/martinv/2010/11/09/integration-mit-den-business-connectivity-services-in-sharepoint-2010/</guid>
      <description><![CDATA[Wie bekommt man am besten Daten aus Fremd- oder Alt-Systemen in die Sharepoint Umgebung. Die Antwort...]]></description>
      <content:encoded><![CDATA[<p>Wie bekommt man am besten Daten aus Fremd- oder Alt-Systemen in die Sharepoint Umgebung. Die Antwort sind die Business Connectivity Services. Über den Sharepoint Designer lassen sich External Content Types anlegen, die dann über eine Datenbankanbindung, über Web Services oder über eine selbstentwickelte .NET Komponente (BDC Model) befüllt werden. In den meisten Beispielen, die im Web zu finden sind , wird direkt auf eine Datenbank zugegriffen, was aber wohl im echten Leben eher nicht der Fall sein dürfte. Deswegen habe ich einen Webcast aufgenommen, der sich mit den anderen beiden möglichen Datenquellen Web Services und selbstentwickelte .NET Komponente beschäftigt. Die verwendete WebService Applikation steht übrigens auch zur Verfügung, da ich diese mal anhand den Konzepten wie unsere Consulting Abteilung in einem Kundenprojekt Services implementiert hat, auf Basis der Northwind Demo Datenbank erstellt habe. Zu finden ist die komplette App unter:</p>  <p><strong>Komplettes Projekt mit WCF Services nach Microsoft Consulting Services      <br /></strong><a title="http://www.microsoft.com/germany/msdn/knowhow/VisualStudioTemplateProjekte/templates.mspx" href="http://www.microsoft.com/germany/msdn/knowhow/VisualStudioTemplateProjekte/templates.mspx">http://www.microsoft.com/germany/msdn/knowhow/VisualStudioTemplateProjekte/templates.mspx</a>&#160;</p>  <p>Als zweites wird im Webcast gezeigt, wie man eine beliebige Datenquelle, die irgendwie mit .NET Code zugreifbar ist, angebunden werden kann. Zu guter Letzt natürlich der Link zum Webcast auf MSDN: </p>  <p><a title="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032468935" href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032468935">http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032468935</a></p>  <p>Viele Grüße</p>  <p>Martin Vollmer</p>]]></content:encoded>
    </item>
  </channel>
</rss>