Daniel Marbach 8
Daniel ist Software-Ingenieur bei Particular Software und ein Microsoft MVP. In seiner Freizeit stemmt er gerne Gewichte, trinkt dunkel gerösteten Kaffee, spielt mit seinem Sohn und trägt zur Leistungsverbesserung von Open-Source-.NET-Paketen bei. Zumindest bis Mitternacht, wenn sein selbst auferlegter Router-Hack einsetzt.
Präsentationen bei der .Net User Group Bern
Mehr als nur einfache Benchmarks - ein praktischer Leitfaden zur Optimierung von Code
Wir wissen, dass es wichtig ist, dass Code, der oft ausgeführt wird, gut funktioniert. Aber woher wissen wir, ob unsere Leistungsoptimierungen ihn tatsächlich schneller machen? Zum Glück gibt es leistungsstarke Tools, die uns dabei helfen - BenchmarkDotNet ist eine .NET-Bibliothek für Benchmarking-Optimierungen mit vielen einfachen Beispielen, die den Einstieg erleichtern.
In den meisten Systemen ist der Code, den wir optimieren müssen, selten einfach. Er enthält Annahmen, die wir aufdecken müssen, bevor wir überhaupt wissen, was wir verbessern müssen. Der Code ist schwer zu isolieren. Er enthält Abhängigkeiten, die für die Optimierung relevant sein können oder auch nicht. Und selbst wenn wir uns entschieden haben, was wir optimieren wollen, ist es schwierig, einen verlässlichen Vergleich zwischen vorher und nachher anzustellen. Nur Messungen können uns sagen, ob unsere Änderungen tatsächlich zu einer Beschleunigung führen. Ohne sie könnten wir sogar Dinge langsamer machen, ohne es zu merken.
Zu verstehen, wie man Benchmarks erstellt, ist nur die Spitze des Eisbergs. In diesem Vortrag erfährst du:
- Verbesserungsbereiche zu identifizieren, die das Verhältnis zwischen Aufwand und Nutzen optimieren
- Code zu isolieren, um seine Leistung ohne umfangreiches Refactoring messbar zu machen
- die Leistungsschleife aus Messen, Ändern und Validieren anwenden, um sicherzustellen, dass sich die Leistung tatsächlich verbessert und nichts kaputt geht
- Allmählich "leistungsbewusster" werden, ohne viel Geld zu kosten
Performance-Tricks, die ich bei der Mitarbeit an Open-Source-.NET-Paketen lernte
Als Praktiker habe ich festgestellt, dass Leistungsoptimierungen meine größte Herausforderung sind und ich dort die hilfreichsten Tricks gelernt habe, meist durch Versuch und Irrtum. Es hat sich herausgestellt, dass das Azure .NET SDK ein perfekter "Spielplatz" ist, um diese Tricks zu lernen - es wird von Leuten gepflegt, die sich kümmern und Feedback geben.
In den letzten Jahren habe ich über fünfzig Pull Requests zum Azure .NET SDK beigetragen. In dieser Sitzung führe ich Sie durch die Leistungsverbesserungen, die ich vorgenommen habe, und helfe Ihnen, Ihre eigenen "Superkräfte" zu entwickeln: Erkennen und Vermeiden von Closure-Zuweisungen, Finden von Möglichkeiten für Speicherpooling und mehr.
Microservices with Service Fabric. Easy... or is it?
Service Fabric is so simple! Just click-click-deploy and we have a stateless microservice! But what if we want to store business data? We can use reliable collections and even transactions to store data inside the cluster, but what happens when our single partition goes down? We could lose everything! Now we need to partition our data… how do we do that? And how do we integrate with other PaaS offerings like Azure Service Bus? Maybe this isn’t so easy after all. In this talk I'll walk you through Service Fabric Partitioning, a partition affinity model for Azure Service Bus queues and challenges you'll face with messaging patterns like request/response, publish/subscribe, process managers and other stateful entities running inside a Service Fabric Cluster.
Lass die Puppen tanzen
Der Workshop startet ganz gemütlich mit einer kleinen Auffrischung rund um Async / Await im Schnelldurchlauf. Danach packen wir die „Puppen“ aus. Das Russian Doll Pattern wurde im Jahre 2004 in der JavaScript Community sehr berühmt durch seinen Pionier Robert Cornford. Das Pattern ermöglicht durch funktionale Komposition, Verhalten zur Laufzeit zu beeinflussen. In der Objektorientierten Programmierung kennt man ein ähnliches Konzept unter dem Namen Chain of Responsiblity. Dieses Pattern in .NET / C# wird am Beispiel einer Messagepump als Basis für eine fiktive Service Bus Bibliothek angewendet und mit Async / Await kombiniert. Dadurch erhält man eine funktionale und gleichzeitig asynchrone Pipeline. Komm vorbei! Lass hier die Puppen tanzen.
Legacy Code. Und jetzt?
Steckst du im Legacy-Sumpf? Ich zeige Dir ein Vorgehen das es Dir erlaubt Schritt für Schritt den Legacy-Code loszuwerden ohne dabei die bestehende Funktionalität zu zerstören. Stell dir vor wieder Freude an Legacy-Projekten zu haben. Du lernst Methoden, Techniken und Tools kennen die Dir erlauben Legacy Code zu detektieren, zu entschlüsseln, neue Funktionen hinzuzufügen und schlussendlich längerfristig zu verbessern. Kleine Schritte. Kein Big Bang. Begleite mich auf eine Reise aus dem Legacy-Sumpf.
Rest Fundamentals
Das Kreieren und Warten von RESTful APIs kann ein grosser Challenge sein wenn das Basisverständnis der Prinzipien hinter REST fehlt. Zusammen tauchen wir in die Basisdefinition von REST / RESTful und erleben die REST Theorie an einem einfachen "Real World" - Beispiel.
Einführung in NServiceBus
Begriffe wie Messaging, Skalierbarkeit und Cloud Computing sind in aller Munde. Wo soll man da überhaupt starten ohne den Überblick zu verlieren? Gemeinsam machen wir einen Schritt zurück und schauen uns den Open Source Service Bus NServiceBus etwas genauer an. Daniel wird Licht ins Dunkel bringen und Begriffe wie Service Bus, Command, Event, Publish / Subscribe, sowie Langlebende Businessworkflows (aka Sagas) klären. Daniel wird weiter in die Tiefen von NServiceBus steigen, damit Du in der Lage bist, verteilte Applikationen basierend auf NServiceBus zu betreiben.