<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://yellow-rainbird.de/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" 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/"><channel><title>Rainbird´s Blog : Deployment</title><link>http://yellow-rainbird.de/blogs/rainbird/archive/tags/Deployment/default.aspx</link><description>Ordnungsbegriffe: Deployment</description><dc:language /><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Dienste einer n-Tier Anwendung in eine klare Hierarchie bringen</title><link>http://yellow-rainbird.de/blogs/rainbird/archive/2008/11/11/dienste-einer-n-tier-anwendung-in-eine-klare-hierarchie-bringen.aspx</link><pubDate>Tue, 11 Nov 2008 20:23:00 GMT</pubDate><guid isPermaLink="false">ca972313-08a2-482d-9df4-47656efefef6:52</guid><dc:creator>Rainbird</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yellow-rainbird.de/blogs/rainbird/rsscomments.aspx?PostID=52</wfw:commentRss><comments>http://yellow-rainbird.de/blogs/rainbird/archive/2008/11/11/dienste-einer-n-tier-anwendung-in-eine-klare-hierarchie-bringen.aspx#comments</comments><description>&lt;p&gt;Auf der guide to C# Live! Winter Edition hatten wir einige Diskussionen über die Architektur von Business&lt;br /&gt;Anwendungen (&lt;em&gt;Ganz ähnlich übrigens auch auf mycsharp.de in folgendem Beitrag:&lt;br /&gt;&lt;/em&gt;&lt;a href="http://www.mycsharp.de/wbb2/thread.php?threadid=61812"&gt;&lt;em&gt;http://www.mycsharp.de/wbb2/thread.php?threadid=61812&lt;/em&gt;&lt;/a&gt;). Den von mir vorgestellte Ansatz, die einzelnen &lt;br /&gt;Dienste in Kategorieen einzuteilen und diese in einer Hierarchie anzuordnen, war manchen nicht ganz &lt;br /&gt;verständlich gewesen. Der Bitte, das Ganze doch mal aufzuzeichnen, bin ich nun nachgekommen.&lt;br /&gt;Folgende Skizze kann&amp;nbsp;hoffentlich Abhilfe schaffen und helfen, den Ansatz besser zu verstehen:&lt;/p&gt;
&lt;p&gt;&lt;img height="552" alt="Skizze hierarchischer Geschäftsdienste" src="http://yellow-rainbird.de/photos/allgemein/images/51/original.aspx" width="640" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Eine Dienste haben gar keine Pfeilspitzen abbekommen. Das liegt daran, dass in der Skizze keine Clients &lt;br /&gt;und auch keine Stapelverarbeitungsdienste (z.B. Rechnungsdruck) enthalten sind.&lt;/em&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;br /&gt;Man kann sehr schön sehen, wie viele Abhängigkeiten es zwangsläufig gibt. Die Hierarchie gibt vor, dass&lt;br /&gt;Dienste nur andere Dienste konsumieren dürfen, wenn diese über ihnen angebordnet sind. Niemals dürfen&lt;br /&gt;Dienste andere Dienste konsumieren, die darunter oder auf gleicher Ebene angeordnet sind.&lt;br /&gt;Diese Hierarchie muss allerdings vom Entwickler-Team auch so eingehalten werden. Es ist ein Konzept&lt;br /&gt;bzw. eine Konvention. In einem drei bis vier Mann Team habe ich sehr gute Erfahrungen mit diesem Modell&lt;br /&gt;gemacht. In größeren Teams ist da, denke ich, die Qualitätssicherungs-Abteilung gefordert. Damit alle auch &lt;br /&gt;nach der Selben Hierarchie entwickeln, sollte diese unbedingt Dokumentiert werden (z.B. wie oben). &lt;br /&gt;&amp;nbsp;&lt;br /&gt;Ein Aspekt ist auf der Skizze allerings nicht abgebildet. Und zwar die Kommunikation nach außen. Wenn&lt;br /&gt;ein Dienst externe Dienste (also z.B. einer Fremd-Applikation) konsumieren soll, muss dies immer entkoppelt&lt;br /&gt;passieren. Das größe Problem dabei ist, Dinge wie Mandantenverwaltung, Sitzungen, Sicherheit und Locking&lt;br /&gt;mit der externen Anwendung auf einen Nenner zu bekommen. Portal-Adapter-Paarungen zwischen internem &lt;br /&gt;und externem Dienst können dabei für die Entkopplung und ggf. erforderliches Schnittstellen-Mapping sorgen.&lt;br /&gt;Ein generischer Weg wäre z.B. der BizTalk Server.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Wenn man SOA ernsthaft umsetzen möchte, muss es sogar so sein, dass alle Dienste theoretisch &lt;br /&gt;austauschbar sind. Das würde bedeuten, dass jeder Dienst auch eigene Kontrakte für alles, was er konsumiert. &lt;br /&gt;Ohne Bus-System geht dann natürlich nichts mehr. Der Entwicklungs- und Testaufwand vervielfacht sich, &lt;br /&gt;wenn die komplette Kommunikation über ein Bus-System laufen soll.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Aber auch ohne Bus-System bringt der Hierarchische-Ansatz eine Menge. Die Abhängigkeiten werden auf ein&lt;br /&gt;Mindestmaß reduziert und folgen klaren Regeln. Dienste lassen sich gut testen, da man für einen Test den &lt;br /&gt;Zugriff auf höher liegende Dienste auch auf einen Dummy-Dienst umleiten kann. Die Lösung ist in sich klar&lt;br /&gt;strukturiert und die Kommunikation zwischen den Diensten funktioniert über explizite Schnittstellen. Die&lt;br /&gt;Entwicklungsarbeit im Team lässt sich gut Aufteilen und parallele Entwicklung von Diensten ist - insofern&lt;br /&gt;man Contract-First durchzieht - auch kein Problem. Die Entwicklung solcher Dienste ist einfach und nicht an&lt;br /&gt;komplexe Container-Modelle oder Vererbungsbäume gebunden. Die Einarbeitungszweit für neue Entwickler ist&lt;br /&gt;minimal - vorausgesetzt die Infrastrukturdienste (oben gelb dargestellt) stehen schon und es wurde eine intuitive &lt;br /&gt;API für die Infrastruktur geschaffen (z.B. generischen Service-Locator, Microkernel, Statische Hilfsklasse für&lt;br /&gt;den Sicherheitsdienst und das Locking).&amp;nbsp; &lt;/p&gt;&lt;img src="http://yellow-rainbird.de/aggbug.aspx?PostID=52" width="1" height="1"&gt;</description><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/Architektur/default.aspx">Architektur</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/Komponenten/default.aspx">Komponenten</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/Remoting/default.aspx">Remoting</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/n-Tier/default.aspx">n-Tier</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/SOA/default.aspx">SOA</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Diagnosewerkzeug für VSTO Deployment-Probleme</title><link>http://yellow-rainbird.de/blogs/rainbird/archive/2008/03/18/diagnosewerkzeug-f-252-r-vsto-deployment-probleme.aspx</link><pubDate>Tue, 18 Mar 2008 20:23:00 GMT</pubDate><guid isPermaLink="false">ca972313-08a2-482d-9df4-47656efefef6:22</guid><dc:creator>Rainbird</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://yellow-rainbird.de/blogs/rainbird/rsscomments.aspx?PostID=22</wfw:commentRss><comments>http://yellow-rainbird.de/blogs/rainbird/archive/2008/03/18/diagnosewerkzeug-f-252-r-vsto-deployment-probleme.aspx#comments</comments><description>&lt;p&gt;Ich bin heute ziemlich lange an einem Problem mit einem &lt;a class="" title="VSTO" href="http://yellow-rainbird.de/forums/p/22/24.aspx#24" target="_blank"&gt;VSTO&lt;/a&gt; Word Add-In gesessen. Trotz korrket installierter&amp;nbsp;&lt;a class="" title="VSTO" href="http://yellow-rainbird.de/forums/p/22/24.aspx#24" target="_blank"&gt;VSTO&lt;/a&gt; 2005 SE Runtime und Primary Interop Assemblies für Office 2003 wollte das Word Add-In einfach nicht laufen. Ein anderes&amp;nbsp;&lt;a class="" title="VSTO" href="http://yellow-rainbird.de/forums/p/22/24.aspx#24" target="_blank"&gt;VSTO&lt;/a&gt; Add-In in Outlook hingegen lief ohne Probleme.&lt;/p&gt;
&lt;p&gt;Nach langer Suche in TechNet und MSDN habe ich irgendwann ein kleines Werkzeug mit dem schönen Namen &lt;a class="" title="Microsoft PSS VSTO 2005 Client TroubleShooter" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c9fb6a54-8069-4918-a6f9-e744928dfac3&amp;amp;DisplayLang=en" target="_blank"&gt;Microsoft PSS VSTO 2005 Client TroubleShooter&lt;/a&gt; gefunden. Der TroubleShooter prüft, ob alle DLLs, die&amp;nbsp;&lt;a class="" title="VSTO" href="http://yellow-rainbird.de/forums/p/22/24.aspx#24" target="_blank"&gt;VSTO&lt;/a&gt; Add-Ins benötigen in der richtigen Version installiert sind und zeigt das Ganze in einer übersichtlichen Liste an. Zusätzlich werden noch bestimmte Einstellungen aufgeführt.&lt;/p&gt;
&lt;p&gt;&lt;img height="1" alt="" src="http://yellow-rainbird.de/photos/allgemein/images/23/original.aspx" width="1" border="0" /&gt;&lt;img height="480" alt="Screenshot" src="http://yellow-rainbird.de/photos/allgemein/images/23/original.aspx" width="570" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;In meinem Fall hatte Word eine Datei mit dem Namen &lt;font face="courier new,courier"&gt;_msaccess.exe.config&lt;/font&gt; als Konifurationsdatei für das VSTO Add-In herangezogen. Das war eine ziemlich alte Konfigurationsdatei, die ich einmal für ein .NET 1.1 Assembly angelegt hatte, die via COM-Interop von Microsoft Access aufgerufen worden war.&amp;nbsp;Die Konfiguration hatte damals die Verwendung von .NET Framework Version 1.1 erzwungen.&amp;nbsp;Bei Access hatte der vorangestellte Unterstrich erfolgreich verhindert, dass die CLR diese Datei als Konfigurationsdatei verwendet. Dass Word diese Datei automatisch angezogen hat, verwundert mich sehr.&amp;nbsp;Ich hätte es verstanden, wenn die Datei winword.exe.config geheißen hätte.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Der&amp;nbsp;TroubleShooter hatte die alte&amp;nbsp;Anwendungs-Konfigurationsdatei&amp;nbsp;in seiner Liste aufgeführt und mich so auf die Fehlerursache aufmerksam gemacht. Nach dem löschen der&amp;nbsp;&lt;font face="Courier New"&gt;_msaccess.exe.config&lt;/font&gt;&amp;nbsp; hatte das &lt;a class="" title="VSTO" href="http://yellow-rainbird.de/forums/p/22/24.aspx#24" target="_blank"&gt;VSTO&lt;/a&gt;&amp;nbsp;Word Add-In sofort funktioniert. &lt;/p&gt;
&lt;p&gt;Da&amp;nbsp;&lt;a class="" title="VSTO" href="http://yellow-rainbird.de/forums/p/22/24.aspx#24" target="_blank"&gt;VSTO&lt;/a&gt; Add-Ins nicht sagen, wenn ihnen irgendwas wehtut, sondern einfach garnichts machen, sollte man vor dem Ausrollen&amp;nbsp;eines&amp;nbsp;Add-Ins auf Produktiv-Maschinen den TroubleShooter zur&amp;nbsp;Hand nehmen und überprüfen, ob&amp;nbsp;die Konfiguration und die installierten&amp;nbsp;Pakete in Ordnung sind.&amp;nbsp;&lt;/p&gt;&lt;img src="http://yellow-rainbird.de/aggbug.aspx?PostID=22" width="1" height="1"&gt;</description><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/Add-In/default.aspx">Add-In</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/Office/default.aspx">Office</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/Word/default.aspx">Word</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://yellow-rainbird.de/blogs/rainbird/archive/tags/Konfiguration/default.aspx">Konfiguration</category></item></channel></rss>