Nächstes Treffen der .Net User Group Stuttgart

Ich freue mich sehr, dass die .Net User Group Stuttgart diesmal in den Räumen der Alegri stattfindet. Der nächste Termin findet am 12. April um 18:00 Uhr in der Niederlassung der Alegri in Stuttgart in der Meitnerstr. 10 statt. Es geht an dem Termin um zwei Themen: 1. Anwendungsdesign für DevOps-Organisationen: dabei geht es hauptsächlich darum, wie man die Softwarearchitektur anpassen muss, damit man mit dem nötigen Tempo und der Qualität liefern kann, das für DevOps nötig ist. Der Hauptfokus wird dabei auf Microservices liegen. 2. Infrastructure as Code: Entwicklung von PowerShell mit VS, Pester und CI: Da PowerShell als … Continue reading Nächstes Treffen der .Net User Group Stuttgart

InternalsVisibleTo-Attribut

Das InternalsVisibleTo Attribut erlaubt es interne Methoden in anderen Bibliotheken zu verwenden. Besonders für das Testen ist das sehr wichtig – aber es hilft auch die größten Teile der Anwendung geschlossen zu halten und das extern sichtbare Interface so klein wie möglich zu halten. Bei signierten Projekten muss man den Publik-Key wie folgt angeben: Den PublicKey erhält man über sn.exe mit der Option -Tp: Continue reading InternalsVisibleTo-Attribut

Posten von Source-Code-Snippts in HTML (Visual Studio 2010)

Wer Codeblöcke aus Visual Studio in Blogs, Foren oder einfach nur Word verwenden will, der kann einen kleinen Trick von Visual Studio nutzen: in einer html Datei kann man aus dem Context-Menu “Paste alternate” verwenden. Dies fügt den Codeabschnitt als reines HTML ein. Das kann dann in Foren und Blogs verwendet werden. Auch in normalen Worddateien ist die Formatierung deutlich besser. Der Befehl steht nur in der Ansicht “Source” zur Verfügung – nicht im “Design”. Continue reading Posten von Source-Code-Snippts in HTML (Visual Studio 2010)

Error Handling Part 4: Fehlerbehandlung auf Anwendungsebene

Dies ist der vierte Teil der Serie zum Exception Handling: Grundlagen der Fehlerbehandlung Eigene Ausnahamen werfen Guidelines nach David Abrahams Fehlerbehandlung auf Anwendungsebene In diesem Teil der Serie wollen wir das Error Handling einer Anwendung aus architektonischer Sicht betrachten. Der wichtigste Aspekt dabei ist sicherlich das Thema Sicherheit. Sicherheit Wenn ein Fehler im Betrieb auftritt, dann ist es nötig so viele Informationen wie möglich über diesen Fehler zu haben. Dies betrifft besonders den StackTrace. Dieser sollte bei der Fehlerbehandlung ja immer erhalten bleiben. Jetzt sind der StackTrace und andere ausführliche Informationen zu Fehlern natürlich auch eine Menge Informationen, die von … Continue reading Error Handling Part 4: Fehlerbehandlung auf Anwendungsebene

Argument Validation

Es ist gute Praxis alle Argumente zu validieren, bevor sie verwendet werden. Würde in diesem Beispiel das Argument nicht geprüft, dann würde eine DivideByZeroException geworfen werden (was zugegebenermaßen in diesem Beispiel auch nicht ganz sinn frei wäre – aber ich denke der Gedanke dahinter ist klar). Besonders bei Referenztypen ist es kritisch, da diese NULL sein können. Wird die Validierung vergessen, dann wird eine NullReferenceException geworfen. Deshalb gibt es in der Codeanalyse auch die Regel CA1062: Validate arguments of public methods. Würde eine Methode so aussehen: Würde man eine NullReferenceException bekommen, wenn das Objekt NULL wäre. Außerdem muss man aufpassen, … Continue reading Argument Validation

Error Handling Part 3: Guidelines nach David Abrahams

Dies ist der dritte Teil der Serie zum Thema Exception Handling: Grundlagen der Fehlerbehandlung Eigene Ausnahamen werfen Guidelines nach David Abrahams Fehlerbehandlung auf Anwendungsebene David Abrahams hat 3 Guidelines definiert, an die sich Entwickler von Klassenbibliotheken halten sollen: Die no-throw guarantee Die basic guarantee Die strong guarantee Es geht dabei um 3 Arten von Verträgen, die man als Autor einer Klasse den Konsumenten verspricht. No-Throw Guarantee Bei der “no-throw guarantee” muss sichergestellt werden, dass keine Exception die Kasse/Funktion verlässt. Dies bedeutet natürlich, dass beim Auftreten eines Fehlers in einer untergeordneten Komponente folgendes sichergestellt werden muss: Keine Exception verlässt die Funktion: … Continue reading Error Handling Part 3: Guidelines nach David Abrahams

Error Handling Part 1: Grundlagen bei der Fehlerbehandlung

In letzter Zeit wurde ich immer wieder gebeten etwas über Fehlerbehandlung zu schreiben. Da das Thema komplex und sehr umfangreich ist habe ich mich immer wieder darum gedrückt. Man sieht aber in der Praxis leider doch, dass es immer wieder Probleme damit gibt. Deshalb habe ich mich jetzt endlich aufgerafft das Thema anzugehen. Da das Thema zu Komplex für einen einzelnen Beitrag ist, werde ich das Ganze als Serie aufbauen: Grundlagen der Fehlerbehandlung Eigene Ausnahamen werfen Guidelines nach David Abrahams Fehlerbehandlung auf Anwendungsebene Beim Verwenden einer Try-Catch-Anweisung kann man wirklich viel falsch machen. Viel mehr als einem meistens bewusst ist. … Continue reading Error Handling Part 1: Grundlagen bei der Fehlerbehandlung

Error Handling Part 2: Eigene Ausnahmen werfen

Hier ist der zweite Parte der Serie über Fehlerbehandlung: Grundlagen der Fehlerbehandlung Eigene Ausnahamen werfen Guidelines nach David Abrahams Fehlerbehandlung auf Anwendungsebene Diesmal geht es darum wann und wie Ausnahmen generiert werden sollen. Generell gilt: Ausnahmen sollten immer dann geworfen werden, wenn die Anwendung oder das Objekt sonst in einen undefinierten Zustand gerät. Ausnahmen sollen kein Teil des normalen Programmflusses sein. Ein gutes Beispiel wie es NICHT geht liefert uns mal wieder SharePoint: Wenn ich auf ein Objekt in eine Auflistung zugreifen will, das nicht existiert werde ich mit einer ArgumentException oder eine SPException überrascht. Dies führt zu folgenden Funktionen, … Continue reading Error Handling Part 2: Eigene Ausnahmen werfen