KategorienStatic PagesBlog Administration |
Tuesday, November 28. 2006ODBC Schema API in .Net 2.0Im Rahmen der Entwicklung des Q4bis DataServer 2005 (die 2005er Version wird bei uns entwickelt und gewartet) haben wir uns natürlcih des öfteren mit dem Thema Metadaten-Gewinnung auf den verschiedenen Plattformen auseinander setzen müssen. Durch den Umstieg von .Net 1.1 auf .Net 2.0 haben sich speziell im Bereich ODBC einige neue/einfachere Möglichketen aufgetan um an die gesuchten Daten zu gelangen.
Continue reading "ODBC Schema API in .Net 2.0" Tuesday, November 28. 2006LINQ to XSD Overview DocumentMicrosoft hat letzte Nacht ein neues Paper zum Thema LINQ herausgegeben. Habe mich im letzten Jahr hin und wieder "theoretisch" mit dem Thema LINQ auseinandergesetzt, aber die meisten bisherigen Publikationen haben sich auf den Zugriff auf Objektmodelle konzentriert. Meine Überlegung war schon damals, als Objektmodell ein generiertes/typisiertes DataSet vorzulegen und damit den Konsum eines typisierten DataSets auf ein neues Niveau zu heben.
Continue reading "LINQ to XSD Overview Document" Sunday, November 26. 2006
SubVersion unter Windows einrichten Posted by Werner Mairl
in .NET at
10:55
Comments (0) Trackbacks (0) SubVersion unter Windows einrichtenWir verwenden seit über einem halben Jahr SubVersion für die Quellcodeverwaltung (vorher SourceSafe bzw. SourceOffsite). Grundsätzlich sind wir sehr begeistert davon - TortoiseSvn als Client ist wirklich eine helle Freude - aber heute musste ich wieder mal die Repositories auf einen anderen Fileserver verschieben und natürlich habe ich die dafür notwendigen Kommandozeilenparameter wieder erst mühsam zusammensuchen müssen (meine Schuld ich hätte sie beim letzten Aufsetzen auch besser dokumentieren können) Einige Interessante Artikel darüber habe ich unter folgenden Links gefunden:
Continue reading "SubVersion unter Windows einrichten" Sunday, November 26. 2006
Goodies auf research.microsoft.com Posted by Werner Mairl
in .NET at
10:00
Comments (0) Trackbacks (0) Goodies auf research.microsoft.comHeute habe ich etwas auf research.micrsosoft.com gestöbert, und dabei das eine oder andere wirklich interessante Codeschnipsel gefunden. Continue reading "Goodies auf research.microsoft.com"Saturday, November 25. 2006
Einige interessante SQL-Server ... Posted by Werner Mairl
in SQL Server at
10:58
Comments (0) Trackbacks (0) Einige interessante SQL-Server Artikel...
... habe ich hier gefunden!
Friday, November 24. 2006
Traue keiner Vermutung...speziell ... Posted by Werner Mairl
in .NET at
16:17
Comments (0) Trackbacks (0) Traue keiner Vermutung...speziell wenn es um die Performance gehtEin alter Grundatz lautet: ohne vorher detailierte Messungen durchgeführt zu haben.Continue reading "Traue keiner Vermutung...speziell wenn es um die Performance geht" Thursday, November 23. 2006iSCSIeinen iSCSI Software Initiator by Microsoft habe ich gefunden bzw. die dazu passende Homepage. Muss ich mir bei gelegenheit mal genauer anschauen, ob es für unser "Virtuelles Labor" den einen oder anderen Vorteil bringt. Thursday, November 23. 2006Code ReviewDie größten Lerneffekte erziele ich meist beim Studium fremder (möglicht guter) Projekte. Heute habe ich wieder eine aktuelle Version eines solchen gefunden, unter: CLR Managed Debugger (mdbg) Sample es handelt sich hierbei um einen Debugger für .Net geschrieben in .Net. (100%Quellcode vorhanden) Der Quellcode deckte einige besonders interssante und ansonsten auch sehr aufwendige Kapitel ab:
Wednesday, November 22. 2006"Graph Layout Engine" gefunden bei MicrosoftHabe heute die Homepage von Microsoft Research entdeckt (und auch gleich RSS abonniert) Dorthin gekommen bin ich auf den Spuren einer Layout Engine Resümee: Engine scheint auf den ersten Blick recht interessant und auch leistungsfähig, mit Beispiel, aber leider OHNE Quellcode der Engine selber! (bei Gelegenheit sollte ich mal eine Reflector-Analyse wagen) Tuesday, November 21. 2006
Intellisense Hilfe für eigene ... Posted by Andreas Schindler
in .NET at
14:09
Comments (0) Trackbacks (0) Intellisense Hilfe für eigene Funktionen und Parameter in VS2005VS 2005 erlaubt es auf einfache art eine Dokumentation fon Prozeduren / Funktionen und deren parametern zu erstellen die auch im intllisense berücksichtigt werden: Continue reading "Intellisense Hilfe für eigene Funktionen und Parameter in VS2005"Tuesday, November 21. 2006VS.2005 Code SnippetsDetails zu Code Snippets in VS.2005 (c#) habe ich hier entdeckt (irgendwie hab ich die richtigen Shortcuts nie im Kopf) Tuesday, November 21. 2006
Metamodelle in der Softwarearchitektur I Posted by Werner Mairl
in Architektur at
09:16
Comments (0) Trackbacks (0) Metamodelle in der Softwarearchitektur IBin mir nicht sicher ob es die Überschrift wirklich trifft, klingt wirklich hochtrabend, aber was solls Um was gehts 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öchte. Begonnen hat das Ganze damit, dass ich einfache typisierte DataSets eingesetzt habe um auf Zeileninhalte zuzugreifen. Also aus if (Convert.ToDateTime(Row["Anfang"]))>=DateTime.Now.Date) ..... wurde if (Row.Anfang>=DateTime.Now.Date)... dies hat auf den ersten Blick mehrere Vorteile:
Zusätzlich ergeben sich noch ein paar strategische Vorteile in der Wartung und Anpassung der Applikation! Grundsätzlich ist es dann ja so, dass Änderungen Am DataSet (eine Spalte existiert plötzlich nicht mehr, oder ändert den grundlegenden Datentyp) schon vom Compiler aufgeworfen werden, und damit die meisten Abhängigkeiten aufgedeckt und angepasst werden können (mit dem Compiler!) Grundsätzlich arbeite ich bei typsisierten DataSets immer mit/über XSD-Schemas. Zwei Beispiele Beispiel 1 Eine Anwendung verwendet ein serialisisertes typisiertes DataSet als Speicherformat (DataSet als mini-Access sozusagen) Dabei wird das zu Grunde liegende XSD-File mit einem Hilfsprojekt erzeugt ( DataSet wird mit DataTables, Columns, Relations aufgebaut und mit WriteSchema(@"MyDataSet.xsd") in ein XSD File umgewandelt! Dieses XSDFile wird nun in ein VS.2005 Projekt aufgenommen welches daraus automatisch ein typisiertes DataSet erzeugt. Sind nun für eine neue Version der Anwendung Änderungen am DataSet notwendig so gehe ich in das HIlfsprojekt und ändere die XSD-Generierung entsprechend, fü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ßend die gesamte Anwendung compiliere, schreit der schreit der Compiler sofort lautstark auf falls sich etwas grundlegendes verändert haben sollte und ich kann entsprechend reagieren! Beispiel 2 Bei Datenbankanwendungen (meist SQL-Server) gehe ich folgendermassen vor! Ich erzeuge und definiere Datenbank und Tabellenstruktur. Diese Datenbank stellt das sogenannte Referenzsystem dar. Nun definiere ich ein DataSet (es umfasst meist einen Ausschnitt aus der Datenbank, ein Projekt enthält oft dutzende von unterschiedlichen DataSets) indem ich es mit Tabellen aus der Datenbank befülle und die Beziehungen zwischen den Tabellen definiere. 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. Zur Laufzeit muss dann "nur" noch dieses DataSet mit DAten befüllt werden. Sind jetzt Änderungen an der Anwendung, an der Datenbank erforderlich so kann ich diese direkt auf der Referenzdatenbank machen! Anschließend lasse ich drauas wiederum das XSD-File generieren und voila, die ganze Anwendung wird vom Compiler automatisch gegen die neue Datenbankstruktur geprüft. Was das Ganze mit MetaModellen und Architktur zu tun hat ? Naja hier wird im ersten Ansatz mal gezeigt wie man z.B. die MetaDaten der Datenbank mit dem Anwendungscode verknüpfen kann (typisiertes DataSet aus XSD) und diesen Ansatz werden ich demnächst noch weiterspinnen (und es wird ein langer Faden werden)
Tuesday, November 21. 2006
[blog] Einträge zum Thema Architektur Posted by Werner Mairl
in Architektur at
06:45
Comments (0) Trackbacks (0) [blog] Einträge zum Thema ArchitekturWieder ein bischen in diversen blogs gestöbert und folgende interessante EInträge gefunden Monday, November 20. 2006
Iterationen (foreach) mit DataRow's Posted by Werner Mairl
in DataSet at
15:07
Comments (0) Trackbacks (0) Iterationen (foreach) mit DataRow'sFolgender Codeabschnitt mag auf den ersten Blick harmlos aussehen, ist in wirklichkeit aber mörderisch: private void Do(DataTable table) {
} Warum ? Weil die Rows Collection der DataTable ALLE Rows, unabhängig von Ihrem Zustand sprich RowState zurückgibt! Wenn ich aber bei einer gelöschten Row (gelöscht heisst ja nur dass die Row ein spezielles Kennzeichen bekommt, sie wird noch lange nicht aus der DataTable entfernt) auf einen Wert zugreifen will (lesend oder schreibend) dann fliegt mir (zurecht) eine Exception um die Ohren! Das heisst: bei Iterationen über eine ganze DataTable NIEMALS über die Rows-Collection gehen sondern eine der zwei folgenden Möglichkeiten wählen a) eine DataView dazwischen schalten (Ja DataViews in iherer standardeinstellung filtern gelöschte Rows heraus, auch ein Grund dafür warum gelöschte Rows im Grid nicht mehr angezeigt werden, das Grid verwendet IMMER eine DataView wenn ich wieder mal "zu faul" bin eine eigene DataView zu instantiieren dann verwendet ich table.DefaultView dabei sollte man aber sich sein, dass niemand einen RowFilter auf die DefaultView gesetzt hat (umkehrschluss, RowFilter setze ich immer nur bei explizit erzeugten DataViews ein) oder der Andere Weg foreach (DataRow r in table.Select()) { } Select gibt mir ebenfalls nur die gültigen Zeilen zurück und das gleich in einem Array! Ergänzung: Bei der Verwendung von DataRow.Delete gibt es noch ein paar spezielle Probleme foreach(DataRowView drv in table.DefaultView) { drv.Row.Delete() } kann NICHT verwendet werden da sich durch den Delete-Befehl der Enumerator verändert => .Net verabschiedet sich mit einer Exception aus der Schleife foreach(DataRow r in table.Rows) kann aus den oben drfestellten Gründen ebenfalls nicht verwendet werden bisher habe ich den Weg über die Sicht verwendet, aber die Rows zuerst in eine ArrayList kopiert und mit einem zweiten foreach über die ArrayList das Delete() aufgerufen. Umständlich aber funktioniert! hier der neueste Lösungsansatz DataRow[] rows = table.select() foreach(DataRow r in rows) { r.Delete(); } läuft intern ähnlich wie die zwischengeschaltete Arraylist, nur dass der Code wesentlich schöner, sauberer, typsicherer und weniger Fehleranfällig ist. Der Befehl DataRow[] rows = table.select() bringt uns zwei Dinge:
Monday, November 20. 2006
NUnit u. Visual Studio 2005 Posted by Werner Mairl
in Softwaretests at
14:41
Comments (0) Trackbacks (0) NUnit u. Visual Studio 2005Habe heute wieder mal NUnit (2.2) in ein VS.2005 Projekt eingebaut! Meine speziellen Anforderungen: ich setze zwar NUnit ein möchte aber auf alle möglichen und verfügbaren Zusatzprodukte/VS.Addins verzichten weil dies nur das Neuaufsetzen der Arbeitsplätze bei Teammitgliedern verkompliziert. Ich möchte die grafische Benutzeroberfläche von NUnit verwenden. Früher habe ich dazuz ein NUnit Projekt erstellt und dann im VS.2005 diesen Dateityp mit der NUnit Gui verknüpft. Heute habe ich eine schöne Lösung dafür gefunden: Zusätzlich zu den üblichen Referenzen auf "NUnit.Framework" und "NUnit.Core" wird auch die Assembly "nunit-gui-runner" [STAThread]public static int Main(string[] args) } Was passiert? Ich starte das NUnit GUI und übergebe als Parameter die TestAssembly selbst.... Ergebnis: Nun kann jedes meiner Teammitglieder, nach einem svn:update sofort auf meine Tests zugreifen incl. der grafischen Testumgebung -ohne Nunit jemals selbst installiert zu haben - ohne irgendwelchen Konfigurationsaufwand! indem einfach im VS das Testprojekt als "Set as StartUp Project..." gesetzt wird! |
CalendarQuicksearchSyndicate This BlogChoose LanguageGetaggte Artikel |
