<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>SQL Server 2005 and .NET Development Blog - Architektur</title>
    <link>http://www.sqlserver2005.org/</link>
    <description>Tips &amp; Tricks zu SQL Server, SQL , .NET Entwicklung,...</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.0.3 - http://www.s9y.org/</generator>
    <pubDate>Fri, 24 Nov 2006 19:31:13 GMT</pubDate>

    <image>
        <url>http://www.sqlserver2005.org/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: SQL Server 2005 and .NET Development Blog - Architektur - Tips &amp; Tricks zu SQL Server, SQL , .NET Entwicklung,...</title>
        <link>http://www.sqlserver2005.org/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Metamodelle in der Softwarearchitektur I</title>
    <link>http://www.sqlserver2005.org/archives/7-Metamodelle-in-der-Softwarearchitektur-I.html</link>
            <category>Architektur</category>
    
    <comments>http://www.sqlserver2005.org/archives/7-Metamodelle-in-der-Softwarearchitektur-I.html#comments</comments>
    <wfw:comment>http://www.sqlserver2005.org/wfwcomment.php?cid=7</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.sqlserver2005.org/rss.php?version=2.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    

    <author>nospam@example.com (Werner Mairl)</author>
    <content:encoded>
    &lt;p&gt;Bin mir nicht sicher ob es die &amp;Uuml;berschrift wirklich trifft, klingt wirklich hochtrabend, aber was solls &lt;img src=&quot;http://www.sqlserver2005.org/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;p&gt;Um was gehts&lt;/p&gt;&lt;p&gt;Im laufe diverser Projekte in den letzten zwei Jahren, bei denen ich unter anderem typsisierte DataSets eingesetzt habe, haben sich einige Gedanken und Ideen entwickelt die ich hier im folgenden (etwas ungeordnet vielleicht) niederschreiben m&amp;ouml;chte.&lt;/p&gt;&lt;p&gt;Begonnen hat das Ganze damit, dass ich einfache typisierte DataSets eingesetzt habe um auf Zeileninhalte zuzugreifen.&lt;/p&gt;&lt;p&gt;Also aus&lt;/p&gt;&lt;p&gt;if (Convert.ToDateTime(Row[&amp;quot;Anfang&amp;quot;]))&amp;gt;=DateTime.Now.Date) .....&lt;/p&gt;&lt;p&gt;wurde&lt;/p&gt;&lt;p&gt;if (Row.Anfang&amp;gt;=DateTime.Now.Date)...&lt;/p&gt;&lt;p&gt;dies hat auf den ersten Blick mehrere&amp;#160;Vorteile:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;erh&amp;ouml;hte leserlichkeit des Codes&lt;/li&gt;&lt;li&gt;IntelliSense &amp;uuml;ber die zur Verf&amp;uuml;gung stehenden Spalten und damit weniger Schreibfehler bei der Spaltenbenennung&lt;/li&gt;&lt;li&gt;strenge Pr&amp;uuml;fung der Spaltenzugriffe bereits zur Compilierzeit&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Zus&amp;auml;tzlich ergeben sich noch ein paar strategische Vorteile in der Wartung und Anpassung der Applikation!&lt;/p&gt;&lt;p&gt;Grunds&amp;auml;tzlich ist es dann ja so, dass &amp;Auml;nderungen Am DataSet (eine Spalte existiert pl&amp;ouml;tzlich nicht mehr, oder &amp;auml;ndert den grundlegenden Datentyp) schon vom Compiler aufgeworfen werden, und damit die meisten Abh&amp;auml;ngigkeiten aufgedeckt und angepasst werden k&amp;ouml;nnen (mit dem Compiler!)&lt;/p&gt;&lt;p&gt;Grunds&amp;auml;tzlich arbeite ich bei typsisierten DataSets immer mit/&amp;uuml;ber XSD-Schemas.&lt;/p&gt;&lt;p&gt;Zwei Beispiele&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Beispiel 1&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Eine Anwendung verwendet ein serialisisertes typisiertes DataSet als Speicherformat (DataSet als mini-Access sozusagen)&lt;/p&gt;&lt;p&gt;Dabei wird das zu Grunde liegende XSD-File mit einem Hilfsprojekt erzeugt (&lt;/p&gt;&lt;p&gt;DataSet wird mit DataTables, Columns, Relations aufgebaut und mit WriteSchema(@&amp;quot;MyDataSet.xsd&amp;quot;) in ein XSD File umgewandelt!&lt;/p&gt;&lt;p&gt;Dieses XSDFile wird nun in ein VS.2005 Projekt aufgenommen welches daraus automatisch ein typisiertes DataSet erzeugt.&lt;/p&gt;&lt;p&gt;Sind nun f&amp;uuml;r eine neue Version der Anwendung &amp;Auml;nderungen am DataSet notwendig so gehe ich in das HIlfsprojekt und &amp;auml;ndere die XSD-Generierung entsprechend, f&amp;uuml;rhre Sie aus und Refreshe das nun frisch generierte XSD im Hauptprojekt (Run Custom Tool im VS.2005). Damit wird die neueste Version des typsisierten DataSets erzeugt und wenn ich anschlie&amp;szlig;end die gesamte Anwendung compiliere, schreit der schreit der Compiler sofort lautstark auf falls sich etwas grundlegendes ver&amp;auml;ndert haben sollte und ich kann entsprechend reagieren!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Beispiel 2&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Bei Datenbankanwendungen (meist SQL-Server) gehe ich folgendermassen vor!&lt;/p&gt;&lt;p&gt;Ich erzeuge und definiere Datenbank und Tabellenstruktur. Diese Datenbank stellt das sogenannte Referenzsystem dar.&lt;/p&gt;&lt;p&gt;Nun definiere ich ein DataSet (es umfasst meist einen Ausschnitt aus der Datenbank, ein Projekt enth&amp;auml;lt oft dutzende von unterschiedlichen DataSets) indem ich es mit Tabellen aus der Datenbank bef&amp;uuml;lle und die Beziehungen zwischen den Tabellen definiere.&lt;/p&gt;&lt;p&gt;Das Ergebnis wandle ich mit WriteSchema in ein XSD-File um welches nun in das VS.2005 Projekt eingebunden und wie im obigen Projekt verwendet wird.&lt;/p&gt;&lt;p&gt;Zur Laufzeit muss dann &amp;quot;nur&amp;quot; noch dieses DataSet mit DAten bef&amp;uuml;llt werden.&lt;/p&gt;&lt;p&gt;Sind jetzt &amp;Auml;nderungen an der Anwendung, an der Datenbank erforderlich so kann ich diese direkt auf der Referenzdatenbank machen!&lt;/p&gt;&lt;p&gt;Anschlie&amp;szlig;end lasse ich drauas wiederum das XSD-File generieren und voila, die ganze Anwendung wird vom Compiler automatisch gegen die neue Datenbankstruktur gepr&amp;uuml;ft.&lt;/p&gt;&lt;p&gt;Was das Ganze mit MetaModellen und Architktur zu tun hat ?&lt;/p&gt;&lt;p&gt;Naja hier wird im ersten Ansatz mal gezeigt wie man z.B. die MetaDaten der Datenbank mit dem Anwendungscode verkn&amp;uuml;pfen kann (typisiertes DataSet aus XSD)&lt;/p&gt;&lt;p&gt;und diesen Ansatz werden ich demn&amp;auml;chst noch weiterspinnen (und es wird ein langer Faden werden)&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 21 Nov 2006 09:16:28 +0100</pubDate>
    <guid isPermaLink="false">http://www.sqlserver2005.org/archives/7-guid.html</guid>
    
</item>
<item>
    <title>[blog] Einträge zum Thema Architektur</title>
    <link>http://www.sqlserver2005.org/archives/4-blog-Eintraege-zum-Thema-Architektur.html</link>
            <category>Architektur</category>
    
    <comments>http://www.sqlserver2005.org/archives/4-blog-Eintraege-zum-Thema-Architektur.html#comments</comments>
    <wfw:comment>http://www.sqlserver2005.org/wfwcomment.php?cid=4</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.sqlserver2005.org/rss.php?version=2.0&amp;type=comments&amp;cid=4</wfw:commentRss>
    

    <author>nospam@example.com (Werner Mairl)</author>
    <content:encoded>
    &lt;p&gt;Wieder ein bischen in diversen blogs gestöbert und folgende interessante EInträge gefunden&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://blogs.msdn.com/williamz/archive/2004/08/14/doing-soa-without-web-services-i-m-skeptical.aspx&quot; target=&quot;_blank&quot;&gt;Doing SOA without Web Services? I&#039;m skeptical.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://blogs.msdn.com/williamz/archive/2004/08/18/doing-soa-without-web-services-part-ii.aspx&quot; target=&quot;_blank&quot;&gt;Doing SOA without Web Services? Part II.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://blogs.msdn.com/nickmalik/archive/2006/11/20/can-your-software-be-too-functional.aspx&quot;&gt;Can your software be TOO functional?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p /&gt;&lt;p /&gt; 
    </content:encoded>

    <pubDate>Tue, 21 Nov 2006 06:45:35 +0100</pubDate>
    <guid isPermaLink="false">http://www.sqlserver2005.org/archives/4-guid.html</guid>
    
</item>

</channel>
</rss>