.NET: Visual Studio Code und .NET Core

Bei Visual Studio Code handelt es sich um einen kostenlosen und quelloffenen Texteditor, der plattformübergreifend für die Betriebssystem Windows, macOS und Linux verfügbar ist. Bis auf den Namen und einigen Funktionen wie Debugging, IntelliSense und Versionsverwaltung hat Visual Studio Code nichts mit Visual Studio gemeinsam. Im Unterschied zu Visual Studio arbeitet Visual Studio Code nicht mit Projektdateien, sondern auf Basis von Codedateien und Ordnern. Über diverse Extensions lässt sich der Funktionsumfang von Visual Studio Code beliebig erweitern. So ist es zum Beispiel möglich weitere Programmiersprachen, Debugger und Tools zu installieren, die den Entwicklungsprozess besser unterstützen. In diesem Beitrag wird gezeigt wie man mit Visual Studio Code .NET Core Projekte entwickeln kann.

Read more »

0  

Tools: NDepend v2017.1 Smart Technical Debt Estimation

Jeder Entwickler dürfte das folgende Szenario aus dem Alltag kennen: Es soll ein neues Feature/Anforderung in die bestehende Software integriert werden und dafür gibt es (wie fast immer) mehrere Möglichkeiten:

  • die Quick & Dirty Lösung – lässt sich schnell erledigen, obwohl man sich darüber bewusst ist über kurz oder lang wieder über diese Codestelle „stolpern“. Zukünftige Änderungen sind dadurch evtl. auch schwieriger zu implementieren und dann ist es in der Praxis oft so, dass man genau diese Codestelle im Nachhinein wieder ändern muss. Was oft mit deutlichem Mehraufwand verbunden ist (im Vergleich zur direkten sauberen Implementierung der neuen Funktion)

  • die „saubere“ Lösung – für die aber mehr Zeit und evtl. auch umfangreichere Änderungen an der bestehenden Software notwendig sind

Ward Cunningham entwickelte genau für dieses Problem die Metapher der technischen Schuld (engl. technical debt) für die möglichen Konsequenzen schlechter technischer Umsetzung von Software. Unter der technischen Schuld versteht man den zusätzlichen Aufwand, den man für Änderungen und Erweiterungen an schlecht implementierter Software im Vergleich zu gut implementierter Software einplanen muss. Im Grunde genommen entspricht eine technische Schuld einer monetären Schuld, da ja jeder zusätzliche Aufwand entsprechend zusätzliche Kosten generiert. Je länger nun eine monetäre Schuld besteht desto höher werden die Zinsen und je länger die technische Schuld besteht desto größer wird der Aufwand bzw. die Anstrengungen diese zu beheben. Nun hat man die Wahl die technische Schuld (z.B. durch Refactoring bzw. besseres Design) sofort zu begleichen oder später den höheren Aufwand in Kauf zu nehmen. Das Refactoring kostet dann zwar in diesem Moment Geld spart aber lange Sicht Aufwand (oder in Bezug auf eine monetäre Schuld Zinsen)!

NDepend bietet nun in der neuen Version die Möglichkeit die technische Schuld zu ermitteln, so dass man sich diese Codestellen gezielt analysieren und entsprechende Gegenmaßnahmen ergreifen kann.
Read more »

0  

Visual Studio: NDepend v2017 erschienen

NDepend ist in der Version v2017 erschienen und bietet tolle neue Features:

  • Smart Technical Debt Estimation – mit dieser Funktion sieht man auf einen Blick wie viel Zeit es kosten würde kritische Codestellen/Funktionen zu fixen bzw. ein Refactoring durchzuführen. Angenommen ein Entwickler implementiert eine neue Funktion und die NDepend Analyse würde jetzt ergeben, dass diese neu implementierte Funktion 30 Minuten an Refactoringaufwand in Anspruch nehmen würde. Mit diesem Wissen kann der Entwickler diese Codestelle jetzt direkt fixen bevor sie überhaupt eingecheckt wird. Was dann wiederum auf lange Sicht Zeit und evtl. zusätzlichen Aufwand einspart. Der ausgewiesene Zeitaufwand kann sogar direkt in monetäre Werte umgerechnet werden! Ein wirklich cooles neues Feature von NDepend.

  • Quality Gate – mit einem Quality Gate können diverse Prüfkriterien festgelegt werden, mit der die Codequalität sichergestellt werden kann. So kann man z.B. festlegen, dass bei gescheiterter Prüfung der Eincheckvorgang unterbunden wird oder der Quellcode nicht veröffentlicht werden darf. Dieses Feature funktioniert auch in Kombination mit der Smart Technical Debt Estimation.

  • Dashboard Verbesserungen – das Dashboard enthält jetzt Metriken für die Smart Technical Debt Estimation und den Status der Quality Gates

  • Report Verbesserungen – die Erweiterungen des Dashboards sind natürlich auch in den Report eingeflossen

  • Code Query Verbesserungen – innerhalb der Abfragesprache NDepend Code Query LINQ (CQLinq) können jetzt auch die oben genannten Features verwendet werden, z.B. können via CQLinq benutzerdefinierte Quality Gates definiert werden.

  • Die Standardregelen für die Codeprüfungen wurden überarbeitet

  • Unterstützung von Visual Studio 2017 RC und .NET Core

Weitere Informationen zu der neuen Version sind auf NDepend-Hompeage zu finden: http://www.ndepend.com/

In einem nächsten Artikel werde ich einzelne neue Fatures von NDepend mal etwas genauer im Detail zeigen.

0  

C#: OData-Operationen mit Parametern aufrufen

OData unterstützt benutzerdefinierte Operationen, sogenannte Aktionen und Funktionen. Eine Funktion muss Daten zurückliefern und hat im Normalfall keine Nebenwirkungen, d.h. eine Funktion sollte keine Daten verändern und lediglich lesend auf Daten zugreifen (GET). Aktionen hingegen können CRUD-Operationen auf Entitäten durchführen, d.h. man kann benutzerdefinierte Aktionen definieren, welche CREATE-, UPDATE- oder DELETE-Operationen auf Entitägen ausführen, wenn die Standard-Aktionen (POST/PUT/DELETE) den gestellten Anforderungen nicht genügen. Ebenso könnte man Aktionen definieren, die Daten aus verschiedenen Entitäten selektieren. Aktionen und Funktionen können an einen Entitätstyp, einen primitiven Datentyp, einen komplexen Datentyp oder an eine Collection gebunden sein.

Read more »

0  

C#: OData, SAP NW Gateway und CSRF-Token

Bei allen Änderungsanfragen (PUT, POST und DELETE) eines Clients gegen einen SAP Netweaver OData-Service muss der Client ein entsprechendes CSRF (Cross Site Request Forgery) Token mitgeben. In diesem Beitrag wird jetzt gezeigt wie man an solches Token anfordern und dann bei den OData-Requests mitgeben kann.

Read more »

0  

Microsofts PowerShell ist jetzt OpenSource und für Linux und OS X verfügbar

Die auf dem .NET-Framework basierende PowerShell wurde jetzt von Microsoft als OpenSource-Projekt freigegeben. Das GitHub Repository ist hier zu finden: https://github.com/PowerShell/PowerShell

Darüber hinaus steht die PowerShell jetzt plattformübergreifend für OS X und Linux zur Verfügung. Die Downloads für die unterschiedlichen Plattformen sind über das GitHub-Repository erhältlich.

Die PowerShell verbindet die aus Unix-Shells bekannte Philosophie von Pipes und Filtern mit dem Paradigma der objektorientierten Programmierung. Der Benutzer kann wie bisher einfache Befehle an einer Kommandozeile ausführen und miteinander verknüpfen oder aber auch komplexe Skript-Programme mit der eigens dafür entwickelten PowerShell Scripting Language schreiben. Interessant sind hier vor allem die sogenannten Cmdlets. Cmdlets sind in einer .NET Sprache verfasste Erweiterungen für die PowerShell, die sich direkt wie Befehle aufrufen lassen.

Weitere Informationen:

https://azure.microsoft.com/en-us/blog/powershell-is-open-sourced-and-is-available-on-linux/

https://blogs.msdn.microsoft.com/powershell/2016/08/18/powershell-on-linux-and-open-source-2/

0  

C#: Exception Handling bei asynchronen Methoden (async/await)

Bei der Verwendung von async/await können Methoden drei unterschiedliche Rückgabetypen besitzen: Task, Task<T> oder void. In den Best Practices wird jetzt immer geschrieben: „Vermeide den Rückgabetyp void und gib immer ein Task-Objekt zurück!“ Doch warum ist das so? Das soll jetzt im nachfolgenden Artikel etwas genauer erläutert werden.

Read more »

0  

.NET Framework 4.6.2 erschienen

Das .NET Framework ist in der Version 4.6.2 erschienen. Es gibt Neuerungen in den folgenden Bereichen:

Hier mal ein paar neue Features:

  • Long Path Support (es werden jetzt Pfade mit mehr als 260 Zeichen in der System.IO API unterstützt)
  • TLS 1.1/1.2 support für das ClickOnce-Deployment
  • Support für zusätzliche Kryptografie-Standards
  • Group Sorting für WPF
  • Soft keyboard und Per-Monitor DPI Unterstützung für WPF

Die vollständige Liste mit vorgenommen Änderungen ist hier zu finden: https://github.com/Microsoft/dotnet/blob/master/releases/net462/dotnet462-changes.md

Downloads

Der vollständige News-Beitrag ist hier zu finden: https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/

0  

C#: BlockingCollection<T> am Beispiel MetroFtpClient

Innerhalb des MetroFtpClients (https://github.com/steve600/MetroFtpClient) gibt es eine Warteschlange um die auszuführenden Up- und Downloads zu verwalten. Bei der Abarbeitung der Warteschlange wünscht man sich nun oft einen gewissen Grad an Parallelität um die Performance zu steigern (z.B. mehrere simultane Downloads). Mit .NET 4.0 hat Microsoft einen großen Schritt in diese Richtung getan und den Entwicklern durch die sogenannten ConcurrentCollections (Quelle [1]) viel Arbeit abgenommen. In diesem Beitrag wird auf Basis des MetroFtpClients gezeigt wie man eine solche ConcurrentCollection einsetzen kann um mehrere simultane Downloads zu realisieren.

Read more »

0  

OpenSource: Vorstellung MetroFtpClient

In diesem Beitrag möchte ich mal ein kleines Tool für FTP-Zugriffe vorstellen. Als Ausgangsbasis für den MetroFtpClient (https://github.com/steve600/MetroFtpClient) diente das PrismMahAppsSample (https://github.com/steve600/PrismMahAppsSample) und die Standard .NET-Klassen FtpWebRequest/FtpWebRespsonse. Auch für dieses Projekt wurden wieder einige OpenSource-Projekte verwendet. Hier mal eine Übersicht:

Hier schon einmal ein erster Screenshot:

MetroFtpClient Verbindungsansicht

MetroFtpClient


Read more »

2  
Fork me on GitHub