Sonntag, 6. April 2008

BizTalk und Debugging

Nachdem ich am letzten Freitag meinen Blog gestartet habe, wird es Zeit den Blog mit etwas Leben zu füllen. Also hier ist die erste Kategorie von Informationen die künftig hier veröffentlich werden: BizTalk Server Best Practices.

Thema der ersten Ausgabe: BizTalk und Debugging

Wer kennt das nicht. Man programmiert eine komplexe NET Assembly. Dann startet man seinen ersten Testlauf und prompt taucht auch schon die erste Exception auf. Solange man sich im Debug-Modus des Visual Studios befindet und die zugehörige PDB (Program Database) Datei vorhanden ist, sollte man sehr schnell feststellen können, wo man im Programmcode ausgestiegen ist.

Beim BizTalk Server gibt es aber ein Problem. Alle BizTalk Artefakte und referenzierten NET Assemblies müssen mit einem Strong Name Key versehen und vor der Ausführung im Global Assembly Cache deployt werden. Somit steht zur Ausführungszeit keine PDB zur Verfügung. Den Ausstiegspunkt zu finden ist jetzt fast unmöglich. Natürlich kann man jede Menge Try-Catch Blöcke verwenden und die Ergebnisse mittels Logging wegschreiben. Dies ist im allgemeinen aber auch keine gute Lösung, da die Exception vorhersehbar sein muss, um überhaupt abgefangen werden zu können.

Also die Lösung für unser Problem ist: Die PDB-Dateien müssen zu den Assemblies in das GAC.

Der Lösungsweg:

Als erstes muss die Sichtweise auf das GAC innerhalb des Windows Explorers verändert werden (dies sollte allerdings nur temporär erfolgen). Dies erreicht man durch die Eingabe folgenden Befehls am Command-Prompt:

regsvr32.exe /u c:\windows\microsoft.net\framework\v2.0.50727\shfusion.dll

Jetzt hat man statt des GAC-Browsers die ursprüngliche Ordnerstruktur.

Als zweites macht man sich auf die Suche nach dem Ordner der die Assembly enthält. Der Ordnername entspricht dem Assemblynamen. Der gesuchte Ordner sollte ein Unterordner der Verzeichnisse GAC,GAC_32 oder GAC_MSIL sein.

Wenn man den entsprechenden Ordner gefunden hat, sollte man beachten das es noch weitere Unterverzeichnisse gibt. Diese setzen sich namentlich aus der Versionsnummer der Assembly und dem Strong Name Key zusammen. Als letzes sucht man also das entsprechende Verzeichnis und kann die Arbeit durch Verschieben der PDB in das GAC beenden.

Freitag, 4. April 2008

Zum Start meines Blogs

Ein paar Worte zum Start meines Blogs. Ich versuche mit diesem Blog praktische Erfahrungen aus den Themenbereichen BizTalk Server, WCF, (W)WF und SOA zu dokumentieren und der interessierten Entwicklergemeinde zur Verfügung zu stellen. Neben diesen Themen wird es auch Einblicke in die Bereiche Software Architekturen, Software Factories und DSL Tools geben.


Als Sprache für diesen Blog habe ich bewust deutsch gewählt, weil es schon genug englischsprachige Blogs zum Thememkomplex gibt. (Hier die Zusammenfassung: http://www.biztalkgurus.com/blogs/biztalksyn/) Ich möchte aber mit diesem Blog die deutschsprachige Entwicklergemeinde unterstützen.

Wer mehr über mich erfahren will. Hier ist der Link zu meinem Xing-Profil:
https://www.xing.com/profile/Oliver_Michalski