Entwickler-Blog · Notizen aus der Praxis

Geek Overflow

Notizen aus .NET, WPF, Azure und dem echten Entwickleralltag.

Aktuelle Beiträge
Ein sichtbar genutzter Entwicklerarbeitsplatz mit Tastatur, Notizbuch und Monitor

Aus dem Archiv

Notizen, die im Alltag weiterhelfen.

239 Beiträge

TimeProvider: Zeit endlich testbar

DateTime.Now ist der Klassiker unter den untestbaren Abhängigkeiten. Eine Methode, die prüft, ob ein Token abgelaufen ist, lässt sich nicht sinnvoll testen, wenn die Zeit direkt aus der statischen Klasse kommt. Die üblichen Auswege waren ein selbstgebautes IDateTimeProvider-Interface oder ein Test, der eine halbe Minute wartet.

Tool Calling mit Microsoft.Extensions.AI

Ein Sprachmodell weiß nichts über die eigene Datenbank und nichts über die aktuelle Uhrzeit. Tool Calling schließt diese Lücke: Man reicht dem Modell eine Liste aufrufbarer Funktionen mit, es entscheidet, ob und welche es braucht, und bekommt das Ergebnis zurück in den Kontext.

Ein Interface für alle LLMs: IChatClient

Wer in den letzten zwei Jahren etwas mit Sprachmodellen gebaut hat, kennt das Problem: Jeder Anbieter hat sein eigenes SDK, seine eigenen Typen für Nachrichten und seine eigene Art, Antworten zu streamen. Ein Wechsel von OpenAI zu Azure OpenAI oder zu einem lokalen Modell bedeutet, die halbe Anbindung neu zu schreiben.

Minimal APIs, zwei Jahre später

Als ich seinerzeit über die Minimal Hosting API geschrieben habe, war ich sofort dabei. Eine Datei, ein paar Zeilen, fertig ist der Endpunkt. Kein Controller, keine Attribute, kein Ordner voller Klassen, die jeweils drei Methoden enthalten. Nach zwei Jahren mit mehreren Projekten fällt meine Bilanz gemischter aus.

Paketversionen zentral verwalten mit Directory.Packages.props

In einer Projektmappe mit fünfzehn Projekten steht dieselbe Paketreferenz an fünfzehn Stellen, und nach ein paar Monaten in drei verschiedenen Versionen. Meistens fällt das erst auf, wenn zur Laufzeit eine Methode fehlt, die es in der einen Version gibt und in der anderen nicht.

Einen MCP-Server in C# schreiben

Wenn man einem Sprachmodell Zugriff auf eigene Daten geben will, endet das bisher meistens in Bastelei: irgendein Skript, das eine API abfragt, ein selbstgebauter Prompt drumherum, und für jedes Werkzeug wieder von vorn. Das Model Context Protocol soll dafür einen gemeinsamen Nenner schaffen. Ein Server stellt Werkzeuge bereit, ein beliebiger Client kann sie aufrufen.

Warum ein gutes Onboarding essenziell ist

Onboarding ist der erste tiefere Kontakt mit einem Unternehmen, einer Organisation oder einem Verein. Es entscheidet darüber, ob neue Mitwirkende sich schnell einfinden oder ob sie frustriert werden und wertvolle Zeit verschwenden. Besonders für Freelancer kann eine ineffiziente Einarbeitung schnell zur Kostenfalle werden. Doch auch Angestellte oder Vereinsmitglieder sind betroffen: Wenn essentielle Informationen fehlen oder Prozesse unklar sind, entstehen unnötige Verzögerungen, die alle Beteiligten belasten.

API-Fehlerbehandlung in ASP.NET Core

In vielen ASP.NET Core-Projekten, egal ob klassisch oder über die Minimal Hosting API, werden API-Antworten mit IActionResult gestaltet, um Fehler wie NotFound(), BadRequest() oder Forbidden() zurückzugeben. Alternativ setzen einige Entwickler auf Exceptions, die dann von einer Middleware abgefangen werden. Beide Ansätze haben jedoch Nachteile.

SignalR 101 - Eine Einführung für .NET 8

Sobald eine Anwendung Daten anzeigen soll, die sich von außen ändern, reicht das übliche Anfrage-Antwort-Muster nicht mehr. Der Browser müsste ständig nachfragen, ob es etwas Neues gibt.

Notizbuch und Tastatur auf einem genutzten Entwicklerarbeitsplatz
Real work / no lab setup

Wer hier schreibt

Matt. Entwickler, Notizsammler, Problemlöser.

Ich schreibe über .NET, C#, WPF, Azure, Werkzeuge – und immer öfter über KI. Nicht aus dem Lehrbuch, sondern aus dem echten Entwickleralltag.

Mehr über mich

Nach Thema einsteigen

Woran ich gerade denke und arbeite.