© best_vector/Shutterstock.com
Windows Developer
Kolumne: Stropek as a Service

Coding Detox mit Go: Go als interessante Alternative zu C# für Microservice-Entwicklung?

Ich schreibe Code in C# seit den ersten Technical-Preview-Versionen dieser Sprache. Als jemand, der das Programmieren mit C und C++ gelernt hat, hat mich C# vom ersten Moment an fasziniert. Die Sprache war ähnlich genug zu C++, dass das Erlernen relativ schnell ging. Garbage Collection hat mich von einer Menge Arbeit und Fehlerquellen befreit. Der C#-Compiler war von Anfang an robust und schnell. Die Grammatik und Funktionen von C# waren einfach zu schreiben und zu lesen.

Rainer Stropek


Speziell der letzte Punkt hat sich im Lauf der Jahre verändert. C# ist heute eine mächtige Sprache geworden, die Lösungen für eine breite Palette an Herausforderungen in der Softwareentwicklung enthält (z. B. asynchrone Programmierung, Generics, parallele Programmierung, in die Sprache integrierte Query Language). Für viele Themen stehen sogar mehrere Ansätze zur Verfügung (z. B. Reactive Extensions [1] vs. async/await für asynchrone Programmierung, unterschiedliche LINQ-Schreibweisen), aus denen Entwicklungsteams wählen können.Die Programmiersprache C# wird durch eine Vielzahl von Tools ergänzt. Exemplarisch erwähnen möchte ich die vielen Code-Analyzer (aka Roslyn Analyzer [2]), die es von Microsoft und Drittanbietern gibt. Sie analysieren den C#-Quellcode und weisen auf Probleme beim Programmierstil, bei der Wartbarkeit, Sicherheit etc. hin. Jedes Entwicklungsteam kann die jeweils passenden Analyzer wählen und die von ihnen geprüften Regeln feingranular einstellen, damit auf die Wünsche des Teams Rücksicht genommen wird.Komplexität durch VielfaltHistorisch gewachsenDurch Zerteilen einer Anwendung in Assemblies erhält man Programmteile, die theoretisch unabhängig voneinander installiert, aktualisiert, versioniert, mit Berechtigungen versehen etc. werden können. In den Anfangszeiten von C# war diese Aufteilung wichtig, da große, monolithische Softwarelösungen die Regel waren. Heutige Microservices haben andere Anforderungen. Hier einige Beispiele: Die Einheit, in der Softwarekomponenten verteilt, versioniert etc. werden, sind Microservices, oft in Form von Docker Images. Es ist ausdrückliches Ziel, Microservices voneinander zu trennen. Bei C# DLLs gab es ursprünglich ein anderes Ziel: Um Speicherplatz zu sparen, Updates einfacher zu machen und Zusammenarbeit zwischen Anwendungen zu ermöglichen, wurden DLLs oft zentral im Global Assembly Cache abgelegt. Solche Abhängigkeiten auf zentral installierte und geteilte Programmteile sind bei Microservices nicht mehr relevant – im Gegenteil: Sie sind ausdrücklich nicht erwünscht. Zusammenarbeit geschieht über Services (z. B. REST, GraphQL, OData, SignalR, gRPC etc.). Cloud-Plattformen wie Azure oder Kubernetes ersetzen Microservices bei neuen Versionen immer komplett. Das ist kein Problem, da Cluster heutzutage keine Ausnahme, sondern die Regel sind. Eingebaute Mechanismen für Rolling Updates sorgen dafür, dass nie alle Clusterknoten offline sind. Das Austauschen einzelner DLLs spielt bei Microservices keine Rol...

Windows Developer
Kolumne: Stropek as a Service

Coding Detox mit Go: Go als interessante Alternative zu C# für Microservice-Entwicklung?

Ich schreibe Code in C# seit den ersten Technical-Preview-Versionen dieser Sprache. Als jemand, der das Programmieren mit C und C++ gelernt hat, hat mich C# vom ersten Moment an fasziniert. Die Sprache war ähnlich genug zu C++, dass das Erlernen relativ schnell ging. Garbage Collection hat mich von einer Menge Arbeit und Fehlerquellen befreit. Der C#-Compiler war von Anfang an robust und schnell. Die Grammatik und Funktionen von C# waren einfach zu schreiben und zu lesen.

Rainer Stropek


Speziell der letzte Punkt hat sich im Lauf der Jahre verändert. C# ist heute eine mächtige Sprache geworden, die Lösungen für eine breite Palette an Herausforderungen in der Softwareentwicklung enthält (z. B. asynchrone Programmierung, Generics, parallele Programmierung, in die Sprache integrierte Query Language). Für viele Themen stehen sogar mehrere Ansätze zur Verfügung (z. B. Reactive Extensions [1] vs. async/await für asynchrone Programmierung, unterschiedliche LINQ-Schreibweisen), aus denen Entwicklungsteams wählen können.Die Programmiersprache C# wird durch eine Vielzahl von Tools ergänzt. Exemplarisch erwähnen möchte ich die vielen Code-Analyzer (aka Roslyn Analyzer [2]), die es von Microsoft und Drittanbietern gibt. Sie analysieren den C#-Quellcode und weisen auf Probleme beim Programmierstil, bei der Wartbarkeit, Sicherheit etc. hin. Jedes Entwicklungsteam kann die jeweils passenden Analyzer wählen und die von ihnen geprüften Regeln feingranular einstellen, damit auf die Wünsche des Teams Rücksicht genommen wird.Komplexität durch VielfaltHistorisch gewachsenDurch Zerteilen einer Anwendung in Assemblies erhält man Programmteile, die theoretisch unabhängig voneinander installiert, aktualisiert, versioniert, mit Berechtigungen versehen etc. werden können. In den Anfangszeiten von C# war diese Aufteilung wichtig, da große, monolithische Softwarelösungen die Regel waren. Heutige Microservices haben andere Anforderungen. Hier einige Beispiele: Die Einheit, in der Softwarekomponenten verteilt, versioniert etc. werden, sind Microservices, oft in Form von Docker Images. Es ist ausdrückliches Ziel, Microservices voneinander zu trennen. Bei C# DLLs gab es ursprünglich ein anderes Ziel: Um Speicherplatz zu sparen, Updates einfacher zu machen und Zusammenarbeit zwischen Anwendungen zu ermöglichen, wurden DLLs oft zentral im Global Assembly Cache abgelegt. Solche Abhängigkeiten auf zentral installierte und geteilte Programmteile sind bei Microservices nicht mehr relevant – im Gegenteil: Sie sind ausdrücklich nicht erwünscht. Zusammenarbeit geschieht über Services (z. B. REST, GraphQL, OData, SignalR, gRPC etc.). Cloud-Plattformen wie Azure oder Kubernetes ersetzen Microservices bei neuen Versionen immer komplett. Das ist kein Problem, da Cluster heutzutage keine Ausnahme, sondern die Regel sind. Eingebaute Mechanismen für Rolling Updates sorgen dafür, dass nie alle Clusterknoten offline sind. Das Austauschen einzelner DLLs spielt bei Microservices keine Rol...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang