Vorträge

Begrüßung

Friday, 07:00 - 07:15 (15 min)

Track A - Saal, Haus 7

Level 400

Melanie Eibl

Stefan Lange

Kerstin Bussjäger

Begrüßung

Der flotte Dreier: Azure, Azure Pipelines und CAKE

Friday, 07:30 - 08:30 (60 min)

Track B - 20, Haus 7

Level 200

Jürgen Gutsch

CAKE ist mein absolutes Lieblingswerkzeug um Builds zu automatisieren. Es läuft annähernd überall und lässt sich mit fast jedem Build-Server und es kann fast alles Bauen. In diesem Vortrag werden wir gemeinsam eine ASP.NET Core Applikation mit CAKE und Azure Pipelines nach Azure publizieren. Ihr werdet sehen, wie schön diese Tools zusammenarbeiten um Builds einfacher, schneller und vor allem auch komfortabler für Entwickler zu machen.

PWA-Update: Neue Webschnittstellen für noch bessere Progressive Web Apps

Friday, 07:30 - 08:30 (60 min)

Track D - 315/316, Haus 7

Level 100

Christian Liebel

Progressive Web Apps funktionieren offline, können Pushbenachrichtigungen darstellen und laufen auf jeder Plattform von Android über Firefox bis Windows. Außerdem können Entwickler auf alle Funktionen zugreifen, für die es eine Webschnittstelle gibt. In der Vergangenheit waren dies etwa Gamepads oder der Standort des Anwenders. Mit neuen Webschnittstellen will das World Wide Web Consortium (W3C) die Lücke zwischen nativen Apps und PWA weiter schließen: Mithilfe der Writable Files API sollen PWA auf einen Teilbereich des nativen Dateisystems zugreifen können, die Badging API erlaubt das Setzen von Notification-Badges und die Shape Detection API erlaubt das Erkennen von Barcodes, Gesichtern oder Text in Bildern. Christian Liebel zeigt Ihnen brandheiße Web-APIs, die Progressive Web Apps noch mächtiger machen

Softwarequalität messbar machen

Friday, 07:30 - 08:30 (60 min)

Track C - 313/314, Haus 7

Level 300

David Tielke

Die Qualität von Software ist wichtig, keine Frage. Aber wie gut ist Ihre Software tatsächlich? Wo gibt es Probleme, wie können diese gelöst werden und vor allem wie können entsprechende Maßnahmen langfristig kontrolliert werden? Qualitätsexperte David Tielke zeigt Ihnen in diese Session im Schnelldurchlauf, wie Sie mit wenig Aufwand jedes Projekt besser machen können – als Entwickler, als Projektleiter und als Architekt.

C# 8.0 – Was gibt es neues?

Friday, 07:30 - 08:30 (60 min)

Track A - Saal, Haus 7

Level 200

Christian Giesswein

2017 und 2018 gab es einige Sprachupdates, 7-1, 7.2 oder 7.3 kamen zeitversetzt heraus, doch waren die „großen“ Neuerungen ausgeblieben. Viele Kleinere Sprachfeatures die ein tiefes, technisches Verständnis der CLR voraussetzen sind hineingewandert. Doch mit 8.0 ist nun Schluss damit, und es kommen einige brandneue Features in die Sprache die man alltäglich verwenden und auch benötigt. Zeit hier einen Blick darauf zu werfen.

Container-as-a-Service in der Azure-Cloud

Friday, 07:30 - 08:30 (60 min)

Track F - 2/3, Haus 6

Level 300

Rainer Stropek

Microsoft hat sich in Container verliebt. Docker-Unterstützung gibt es mittlerweile für alle wichtigen Entwicklungs- und Cloud-Plattformen von Microsoft. In dieser Demo-only Session zeigt Rainer ein durchgängiges Beispiel für Container-basierende Entwicklung in der Azure-Cloud, die ganz ohne VMs und IaaS auskommt. Eigene Container Registry, Automatisierung der Image Builds, Container in Azure PaaS-Diensten und Containerbetrieb im PaaS-Kubernetes Cluster - alle diese Dinge sieht man in Rainers Demo-Szenario. (Level 300, 60 min)

IaC Automatisierung mit Azure DevOps

Friday, 07:30 - 08:30 (60 min)

Track G - 4/5, Haus 6

Level 200

Gregor Reimling

Um Cloud Infrastrukturen effektiv bereitzustellen und diese über Tenant- und Subscription Grenzen hinweg einheitlich zu verwalten, sind ARM Templates das erste Mittel der Wahl. Mit ARM Templates lassen sich Azure Infrastrukturen schnell und einfach erstellen und den Infrastructure-as-Code Gedanken realisieren. Um diese Templates wiederrum, einheitlich, nachvollziehbar und zentral zu verwalten ist Azure DevOps das zentrale Element. Diese Session gibt einen Überblick über die Möglichkeiten mit Azure DevOps und wird anhand von Beispielen zeigen, wie sich Azure DevOps eignet um zentrale Infrastrukturen in Azure bereitzustellen und zentral zu verwalten.

DSGVO und CLOUD-ACT? Kein Problem!

Friday, 07:30 - 08:30 (60 min)

Track E - 1, Haus 6

Level 300

Sia Ghassemi

DSGVO einfach gemacht Die DSGVO hat viele Softwareentwickler und auch ganze Konzerne und Unternehmen vor ein paar schwierige Herausforderungen gestellt. Folgende 3 Punkte stellen viele immer wieder vor eine Schwierige aufgabe: Art. 17 - Recht auf Löschung Art. 12 - Transparente Information, Kommunikation und Modalitäten für die Ausübung der Rechte der betroffenen Person Art. 20 – Recht auf Datenübertragbarkeit Diese Stellt Software vor schwierigen aufgaben. Oft werden die Daten vermischt – Personenbezogene Daten und die für die Sicherstellung des Betriebs relevanten Daten (für Berichte, Verarbeitung, etc.) sind zusammenhängend. Löschen ist nicht einfach. Transparenz von Informationen (Wann wurden weswegen welche Daten erfasst) erfordert ein vollständiges Auditing. Datenübertragbarkeit – Unsere struktur passt doch niemals zu der einer anderen Software. / Wie sollen wir die Daten einer anderen Software importieren? Es ist nicht einfach mit der DSGVO! Es gibt aber einen Silberstreif am Horizont, denn alles was wir brauchen um DSGVO-Konforme Software zu erstellen ist bereits bekannt. Ich werde Zeigen, wie jedes Unternehmen und jeder Entwickler, sehr schnell umstellen kann um eine komplett DSGVO-Konforme Architektur aufzubauen und wie man Altdaten einfach migrieren kann und unter diese auch DSGVO-Konform macht.

Einführung in GraphQL mit .NET Core

Friday, 09:00 - 10:00 (60 min)

Track A - Saal, Haus 7

Level 200

Mark Lechtermann

REST in Peace!? Oder doch nicht? Mit GraphQL haben wir eine leistungsfähige alternative zu RESTful-APIs. Facebook nutzt GraphQL für die Kommunikation mit ihrer mobilen App. Auch github, Pinteres oder twitter nutzen GraphQL. Aber was ist dieses GraphQL eingentlich? Over-Fetching und Under-fetching können bei komplexen APIs problematisch sein. GraphQL verspricht uns dieses Problem zu lösen. Somit kann dies in der Praxis einen erheblichen Performancegewinn bedeuten. Roundtrips zwischen Client und Server werden reduziert und der Client bekommt nur das was er wirklich an Daten benötigt. Aber hatten wir das nicht schon mal mit OData gelöst? Wir diskutieren die Vor- und Nachteile. Anhand einer kleinen Beispielapplikation lernen wir GraphQL für .NET Core kennen.

Licht im ASP.NET Core-Dschungel: Was bringen Blazor und Razor Components im Vergleich zu MVC, WebAPI und Razor Pages?

Friday, 09:00 - 10:00 (60 min)

Track C - 313/314, Haus 7

Level 300

Holger Schwichtenberg

Microsoft erweitert ASP.NET Core um immer neue Anwendungsmodelle: Erst gab es MVC und WebAPI, dann seit Version 2.0 auch Razor Pages mit "Page Model" als Code-Behind-Klasse. ASP.NET Core 2.1 brachte Razor Class Libraries. Nun in ASP.NET Core 3.0 kommt "Server-Side Blazor" (alias Razor Components) und es gibt noch einen Preview auf die Zukunft nach Version 3.0: Client-Side Blazor, bei dem der C#-Code nicht mehr auf dem Server, sondern im Browser auf Basis von Webassembly läuft. Bei so vielen Optionen fragt der Webentwickler sich: Was sind die Unterschiede? Wozu braucht man was? Macht Server-Side-Rendering überhaupt noch Sinn im Zeitalter von Angular, React & Co? Auf diese Fragen gibt ASP.NET-Experte Dr. Holger Schwichtenberg die Antworten in diesem Vortrag.

Spans Inside Out

Friday, 09:00 - 10:00 (60 min)

Track F - 2/3, Haus 6

Level 300

Rainer Stropek

Das große Thema von C# 7.x war Speicherverwaltung. Mit Span und Memory kamen zwei neue Typen dazu, die sich durch die gesamte .NET Base Class Library ziehen und für eine Menge Performanceverbesserungen verantwortlich sind. Grund genug, der Sache eine Stunde Zeit zu widmen und einen Blick darauf zu werfen, wie sie genau funktionieren und man sie richtig einsetzt. Wie üblich verzichtet Rainer in dieser Session auf Slides und zeigt anhand von Codebeispielen her, was Spans leisten können.

OSS Lizenzen Freund oder Feind?

Friday, 09:00 - 10:00 (60 min)

Track G - 4/5, Haus 6

Level 200

Stefan Schukat

In der Zeit in der die großen Software Anbieter Open Source für sich entdeckt haben und immer mehr Bibliotheken in der Web als auch der Desktop Welt als Open Source angeboten werden stellt sich die Frage für kommerzielle Anbieter wie man diese Software korrekt nutzen kann. Damit wird neben der reinen Technik immer mehr auch die unterschiedlichen Lizenzen zu einem Entscheidungskriterium. Um in dem Spannungsfeld zwischen Jura und Informatik sich korrekt zu bewegen und als Architekt die passende Entscheidungen zu treffen, benötigt man Wissen von der Denkweise von Juristen und die Interpretation auf technische Gegebenheiten. Dazu wird ein Überblick über verschiedene Lizenzfamilien mit deren häufigsten Vertretern gegeben, sowie die Auflagen die man beachten muss, falls man eine Software mit einer bestimmten Lizenz einsetzt. An praktischen Beispielen wird dargestellt, wie schwierig es sein kann korrekt Lizenzenpflichten zu erfüllen, als auch zu Lizenzen finden.

C# Scripting in the .NET Core world

Friday, 09:00 - 10:00 (60 min)

Track D - 315/316, Haus 7

Level 200

Filip Wojcieszyn

While still being relatively niche, over the recent years C# scripting has grown to become a first class citizen in the Roslyn compiler and can now be enjoyed and applied in your applications in various ways. Together, we will dissect what’s going on under the hood in C# scripting and how you can make use of it in the cross platform, lightweight, .NET Core world (which, by the way, creates a perfect environment for low ceremony C# scripting). We'll also have a look at scripting via the new .NET CLI, how you can integrate it into your everyday development workflows and how you can debug the script assemblies.

"Watt haste jesaacht?"

Friday, 09:00 - 10:00 (60 min)

Track E - 1, Haus 6

Level 200

Jan Fellien

Sprachassistenten in der realen Welt sind bei Weitem nicht so intuitiv, wie uns die Werbung glauben lassen möchte. Die Hürden sind nicht offensichtlicher Natur, sie stecken im Detail. Bei der Entwicklung dieser Assistenten ging die Industrie implizit davon aus, dass jeder Mensch auf der Welt klar und deutlich sprechen kann, was natürlich nicht der Wahrheit entspricht. Und so geschieht es, dass Alexa und Co mehr raten als verstehen, was gesagt wurde. Zum Glück gibt es jetzt bezahlbares Machine Learning, mit deren Hilfe man die Barriere zwischen unklarer und erwarteter Aussprache dramatisch abbauen kann. Diese Session zeigt anhand einer ganz praktischen Implementierung, dass es möglich ist Menschen mit Sprachbeeinträchtigungen teilhaben zu lassen an den digitalen Sprachassistenten. Und ja, Alexa versteht dann auch Sächsisch.

Serverless Workflows mit Durable Functions in Microsoft Azure

Friday, 09:00 - 10:00 (60 min)

Track B - 20, Haus 7

Level 300

Sebastian Achatz

Diese Session bietet einen guten Überblick darüber, wie Sie Workflows "serverless" in Microsoft Azure mit Durable Functions umsetzen können. Bringen Sie "code-based" Workflows in die Cloud und profitieren Sie von "on-demand" Skalierung bei voller Kostenkontrolle. Anhand von Beispielen aus dem echten Leben wird ganz praktisch gezeigt wie das geht und worauf Sie achten sollten.

WPF lebt – mit .NET Core 3.0!

Friday, 10:15 - 11:15 (60 min)

Track A - Saal, Haus 7

Level 200

Christian Giesswein

Es wurde sehr still um WPF, dennoch sind heute nach wie vor viele Desktopanwendungen mit dieser Technologie umgesetzt. Mit .NET Core 3.0 kommt nun ein neuer, frischer Wind in die Sache und es stellt sich nun natürlich für jeden Entwickler die Frage – was bringt´s? Das Framework bleibt das selbe, jedoch können nun die Vorteile aus der .NET Core Welt in die „klassische“ Anwendungsentwicklung miteinfließen – .NET Core CLI, Side-By-Side Installation, Self-Contained Package, .NET Core Native. Es gilt in dieser Session einen Blick darauf zu werfen, was sich dadurch nun ändert, welche neuen Möglichkeiten es gibt und vor allem – wo liegen die Stolpersteine in der Migration?

Echte modulare Web-Anwendungen mit ASP.NET Core Server-side Blazor

Friday, 10:15 - 11:15 (60 min)

Track C - 313/314, Haus 7

Level 200

Tibor Csizmadia

Könnte eine Server-Anwendungsarchitektur, die eine Alternative zu JavaScript verspricht, die nächste große Sache für .NET-Entwickler im Jahr 2019 werden? In dieser Session werden die "Server-Side Blazor" vorgestellt, ein neues Framework, das durch .NET-Technologien wie C#, .ASP.NET Core und SignalR "JavaScript"-freie Webentwicklung verspricht. "Server-Side Blazor" bieten eine völlig neue Möglichkeit, interaktive client-seitige Web-Benutzeroberfläche mit ASP.NET Core zu erstellen. Außerdem können "Server-side Blazor" bestehende .NET-Bibliotheken, Tools und auch das Ökosystem von JavaScript verwenden. Der Kern dieser Session wird die Entwicklung von Blazor-Components Libraries sein, um die Entwicklung von modularen Web-Anwendung mit Hilfe der Nuget-Packages zu ermöglichen.

Xamarin Performance & Best Practices

Friday, 10:15 - 11:15 (60 min)

Track F - 2/3, Haus 6

Level 300

Sebastian Seidel

Das Erstellen von Cross-Plattform-Apps ist mit Xamarin einfacher als je zu vor. Aber kennen Sie die Einschränkungen und Stolperfallen, wenn es um das Schreiben von performantem Code und schnelle Benutzeroberflächen für diverse Plattformen geht? Kennen Sie die Tools zur Analyse von Flaschenhälsen in der Laufzeit? In diesem Vortrag lasse ich Sie von meiner Erfahrung aus über 6 Jahren Xamarin-Entwicklung mit Xamarin.Android, Xamarin.iOS und Xamarin.Forms profitieren. Dabei wird auf folgenden Themen besonders eingegangen: Projektarchitektur und Struktur User-Interfaces Dos and Don'ts im Code Profiler und native Tools zur Analyse von Laufzeitverhalten, Speichernutzung und App-Größe.

Heiter bis wolkig - Anforderungen an das Lizenzmanagement in der Cloud

Friday, 10:15 - 11:15 (60 min)

Track G - 4/5, Haus 6

Level 100

Stefan Bamberg

Viele Anwendungen wandern heute in die vielbeschworene Cloud. Es ist schon nicht trivial, eine bisher als reine Clientanwendung auf den Markt gebrachte Applikation an die Anforderungen der Cloud anzupassen. Aber wie verhält es sich mit dem Lizenzmanagement, das man seinen Kunden bisher beispielsweise über einen Hardware-Dongle oder eine Softwareaktivierung angeboten hat? Kann man zumindest Teile davon übernehmen? Braucht man eine neue Lösung? Welchen neuen Herausforderungen muss man sich stellen? Oder braucht man doch noch einen Softwareschutz? Welche Lösungen gibt es heute schon? Der Vortrag gibt einen tieferen Einblick in die Anforderungen von Softwareschutz und Lizenzmanagement in der Cloud und zeigt anhand von Demos den heutigen Stand der Technik.

cypress - Neue Wege im E2E-Testing für das Web

Friday, 10:15 - 11:15 (60 min)

Track D - 315/316, Haus 7

Level 200

Albert Weinert

Automatisiertes End-2-End Testing im Browser ist eine wichtige Zutat um die Lauffähigkeit der eigenen Webseiten sicherzustellen. cypress ist nun ein neuer Kandidat der das Feld von hinten aufrollen möchte. cypress macht vieles besser als z.b. WebDriver basierte Ansätze wie Selenium. In diesem Vortrag zeigt Albert was cypress ist, was es besser macht als andere, und geht auf die Vor- und Nachteile ein. Es wird am Beispiel einer SPA gezeigt wie ein Entwicklungsflow sein kann. Auch wird gezeigt wie man cypress für ASP.NET Core Anwendungen verwendet wird. Da es eine .NET Konferenz ist wird auch gezeigt wie man eine ASP.NET Core Razor Pages Anwendung für einen Integrationstest anpassen kann (e.g. Datenbank, Authentifizierung) ohne das die Anwendung weiß was und wie da konfiguriert wird.

Machine Learning einfach anwenden mit Azure Machine Learning Studio

Friday, 10:15 - 11:15 (60 min)

Track E - 1, Haus 6

Level 200

Hermann Karsten

Machine Learning ist eines der großer Buzz-Wörter der letzten Jahre in der IT und wird als ein Innovationsantreiber in der Digitalisierung betrachtet. Trotzdem erscheint der Einsatz von Machine Learning für viele Unternehmen als teure und komplexe Herausforderung. In diesem Zusammenhang präsentiert Microsoft mit Azure Machine Learning Studio eine webbasierte Entwicklungsumgebung zur Erstellung von Datenexperimenten und für Predictive Analytics. Zu den großen Stärken von Azure Machine Learning Studio zählen die flexible Preisstruktur, die enge Verbindung mit dem Rest der Cloud-Services von Azure und der einfache Bereitstellungsprozess für einen Webservice. Azure Machine Learning Studio erfordert keine expliziten Programmierkenntnisse, sondern ist – Dank einer benutzerfreundlichen Oberfläche – auch für Nicht-Programmierer konzipiert. In diesem Vortrag werden Funktionen und Fähigkeiten von Azure Machine Learning Studio vorgestellt. Hierzu wird ein Beispieldatenset eingespielt, analysiert, bereinigt und für das Training eines Machine Learning-Modells genutzt. Dieses ML-Modell wird anschließend über einen Webservice bereitgestellt und die neue API in einer kleinen Anwendung zur Vorhersage für neue Daten genutzt.

Zeitreihenanalysen mit dem Azure Data Explorer

Friday, 10:15 - 11:15 (60 min)

Track B - 20, Haus 7

Level 100

Sascha Dittmann

Zeitreihen sind eine Herausforderung für viele Analysesysteme. Deshalb wurde der Azure Data Explorer (aka Kusto DB) entwickelt. Dieser Cloud-Dienst wurde für Ad-hoc Abfragen auf großen Protoll-Datenmengen optimiert. Sascha Dittmann stellt in dieser Session die Grundlagen des neuen Azure-Dienstes vor und zeigt dabei Beispiele, die aus seinen aktuellen Projekten entnommen wurden.

Die Agile Software Factory

Friday, 11:50 - 12:10 (20 min)

Track F - 2/3, Haus 6

Level 100

Daniel Schwarz

In letzter Zeit stolpert man immer wieder über den Begriff der “Agile Software Factory” (ASF). Wenn man jedoch etwas Research betreibt, merkt man schnell, dass es hier kein einheitliches Verständnis zu diesem Begriff gibt und dass Softwareentwicklungsagenturen, die von sich behaupten eine ASF zu betreiben, ganz unterschiedliche Aspekte hervorheben. Wir wollen uns dem Begriff nähern, indem wir die wesentlichen Eigenschaften einer ASF herausarbeiten, die ASF zu anderen Formen der Softwareentwicklung abgrenzen und schließlich und unsere eigene Definition für den Begriff ASF in die Diskussion einbringen. Wir freuen uns dabei natürlich auf reichlich Feedback von Euch!

Neue Horizonte mit DirectX Raytracing

Friday, 11:50 - 12:10 (20 min)

Track G - 4/5, Haus 6

Level 100

Tim Borowski

Im September 2018 hat Nvidia eine neue Serie Grafikkarten mit dem Namen RTX herausgebracht. Das R in RTX ist in diesem Fall Programm und steht für Raytracing. Nvidia spendiert der RTX Serie mit der neuen Turing Architektur fürs Raytracing hardwareseitige Unterstützung. Mit der Microsoft Direct3D Erweiterung DXR (DirectX Raytracing) haben wir Entwickler die Möglichkeit diese Hardwareunterstützung auszunutzen. Nicht nur im Spieleumfeld, sondern auch im GPGPU Bereich verschiebt dieses Feature die Betrachtung auf einige Probleme und Lösungsansätze. In diesem Lightning-Talk zeige ich, wie einfach DXR mittels Visual Studio und C++ genutzt werden kann und präsentiere einige Beispiele in den Bereichen CAD/CAM, Simulation, und Machine-Learning, wo DXR meiner Einschätzung nach ein massiver Game-Changer sein wird.

360° monitoring for Azure Kubernetes Service & container applications

Friday, 11:50 - 12:10 (20 min)

Track E - 1, Haus 6

Level 300

Daniel Neumann

In this session we focus on how to monitor an Azure Kubernetes Service cluster and container applications with Azure Monitor for containers and Application Insights. Beside the AKS cluster, container and application health we will also take a look into receiving the AKS master logs from the managed master control plane and integrating Azure DevOps into your container application monitoring with Application Insights.

Was ist neu in ASP.NET Core 3.0?

Friday, 12:20 - 13:20 (60 min)

Track A - Saal, Haus 7

Level 200

Jürgen Gutsch

ASP.NET 2.0 ist seit Sommer 2017 verfügbar, aber was ist mit der neuen Versionen? Kann man diese nun ohne Bedenken und Einschränkungen in echten Projekten verwenden? In diesem Vortrag werde ich auch zeigen was für coole Neuerungen in ASP.NET 3.0 neu hinzugekommen sind.

7 Tipps für eine verständliche Git-Historie

Friday, 12:20 - 13:20 (60 min)

Track C - 313/314, Haus 7

Level 300

Roland Weisleder

Software ist oft langlebiger als gedacht. Sie wird auch häufiger angepasst als gedacht. Irgendwann kommt der Punkt, wo sich ein Entwickler beim Blick auf den Code die Frage stellt: “Wie soll denn dieses Stück Code funktionieren?” Der Blick in die Git-Historie ist bei Nachrichten wie “fixed some bugs” auch nicht hilfreich. Dieser Vortrag zeigt, wie mit einfachen Mitteln eine verständliche Git-Historie entstehen kann und welche positiven Nebeneffekte sich daraus ergeben.

Chatbots bauen mit dem Microsoft Bot Framework

Friday, 12:20 - 13:20 (60 min)

Track F - 2/3, Haus 6

Level 200

Jens Siebert

"Chatbots sind die neuen Apps!" - So liest man es dieser Tage in diversen Artikeln und Blogs. Doch was steckt eigentlich hinter dem Hype um die Chatbots? Was sind die Vorteile gegenüber herkömmlichen mobilen Apps? Und wie entwickelt man Chatbots überhaupt? Auf diese Fragen soll in diesem Vortrag eingegangen werden. Die Entwicklung eines Chatbots mit Hilfe des Microsoft Bot Frameworks wird anhand eines Beispiels demonstriert.

Approaches to application request throttling

Friday, 12:20 - 13:20 (60 min)

Track G - 4/5, Haus 6

Level 100

Maarten Balliauw

Speaking from experience building a Software-as-a-Service: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ... In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.

Visual Studio als Entwicklungstool für SQL Server basierte Datenbanken

Friday, 12:20 - 13:20 (60 min)

Track D - 315/316, Haus 7

Level 200

Thorsten Kansy

Visual Studio bietet für SQL Server basierte Entwicklung mehr als mach ein Entwickler auf den ersten Blick erkennt: neben Git/SVN fähigen Datenbank Projekten, können leicht Änderungen zwischen Datenbank aufgespürt und geskriptet werden, es können Unit Tests für Stored Procedures und Funktionen genutzt werden um die Fehlerquote niedrig zu haben und auch ein anspruchsvolles Refactoring ist mit an Bord. Thorsten Kansy stelle alles wichtige aus Sicht der Praxis vor und erspart damit vielleicht die Ansaschagun eines kostenspielige Zusatztools.

Behaviour Driven Development (BDD) (mit SpecFlow)

Friday, 12:20 - 13:20 (60 min)

Track E - 1, Haus 6

Level 100

Steve Korzinetzki

Automatisierte Tests sind unser Sicherheitsnetz als Entwickler. Wie kann ich aber mit dem Fachbereich zusammenarbeiten und die Spezifikation festhalten, sodass diese ebenfalls automatisiert getestet werden kann? Behaviour Driven Development gibt darauf eine Antwort. Und mit SpecFlow lässt sich das in .NET-Code automatisieren. So können wir Business-Anforderungen in eine lebendige Dokumentation überführen und gleichzeitig deren Erfüllung nachweisen. Wir durchlaufen die Reise von der initialen Story über die Entdeckung der Akzeptanzkriterien bis zur Formulierung der Spezifikation und Automatisierung der Validierung (mit Live-Coding bzw. Code-Beispielen).

Continuous Everything - Ein Einstieg ins Microsoft Visual Studio App Center

Friday, 12:20 - 13:20 (60 min)

Track B - 20, Haus 7

Level 100

Tobias Hoppenthaler

Spätestens seit der Akquise von Xamarin und HockeyApp gab es bei Microsoft einen nicht zu unterschätzenden Fuhrpark an Tools zur Unterstützung von App Entwicklern. Diese Tools waren allerdings etwas verstreut und man brauchte für eine komplette CI/CD Strecke mehrere Portale. Das App Center ist nun geschaffen worden, um eine möglichst einfache und durchgängige Lösung bereitzustellen. Nach einer kurzen Einführung in die Thematik wird ein Live-Rundflug durch die Funktionalität gestartet: eine App gebaut, getestet, mit Telemetrie versehen uvm.

Kochrezepte für pragmatisches GUI-Design

Friday, 13:35 - 14:35 (60 min)

Track A - Saal, Haus 7

Level 100

Roland Weigelt

Wie entscheidet man, was man sich von anderen GUIs abschauen sollte - und was nicht? Wie stellt man Daten in Formularen und Detailansichten geeignet dar, wenn man von der Fachlichkeit eigentlich keine Ahnung hat? Wie bändigt man GUIs mit vielen Funktionen? Wie sorgt man dafür, dass Anwender sich nicht von der GUI "ausgebremst" fühlen? Diese und weitere Fragen beantwortet Roland Weigelt in seinem Vortrag. Am Beispiel konkreter Lösungsansätze bietet er einen generellen Einstieg in eine abstrakte und doch praxisorientierte Denkweise in "User Interface Patterns". Roland greift dabei auf seine langjährige Erfahrung in der Produktentwicklung zurück, wo Pragmatismus und Weitsicht gleichermaßen gefragt sind.

Hexagonale Zwiebeln - Application Architecture Essentials for .NET

Friday, 13:35 - 14:35 (60 min)

Track C - 313/314, Haus 7

Level 200

Sebastian Achatz

Diese Session erklärt Architekturgrundlagen und Muster moderner Applikationsentwicklung wie z.B. "Hexagonale Architektur" und "Onion Architecture" anhand von praktischen .NET Code Beispielen und vermittelt zusammengefasst die wichtigsten Details und Fakten.

Abusing the C# Compiler

Friday, 13:35 - 14:35 (60 min)

Track F - 2/3, Haus 6

Level 300

Filip Wojcieszyn

In this session we will look at the delicate interplay between the C# (Roslyn) compiler, the CLR/CoreCLR and the C# Language Specification. Is it possible that simple C# code wouldn't work as expected? Could the compiler or the runtime violate the language specification? Can we force the compiler to do things it wasn't designed to do? We'll answer all these questions as we journey through the fascinating worlds of the C# compiler and the .NET/.NET Core runtime.

Was is neu in Azure Functions 2.0

Friday, 13:35 - 14:35 (60 min)

Track G - 4/5, Haus 6

Level 300

Sia Ghassemi

Lange Zeit hat sich das Azure Functions-Team auf die Runtime version 1.0 konzentriert, obwohl eine Version 2.0 bereits in einer public preview verfügbar war. Im Vergleich zur Verions 1.0 hatte Version 2.0 schon damals sehr viele breaking changes, was bei einer Major-Versions Änderung auch legitim ist. Viele haben damals schon die Version 2.0 ausprobiert und sind in einige Stolpersteine gerannt, da Version 2.0, nun auf basis von .NET core, inkompatibel zu vielen Framework-Bibliotheken war. Seit damals hat das Team die Version 2.0 gefühlt komplett überarbeitet. Nicht nur dass die Version 2.0 nun generally avaiable ist, sie haben das ganze Laufzeitverhalten umgekrempelt. Die Worker laufen nun außerhalb des eigentlichen Host-Prozesses, sie können sich soger innerhalb von Docker-Container befinden, die In- und Out-Bindings können nun auch von den Entwicklern bereitgestellt werden und man ist nicht mehr nur auf die mitgelieferten beschränkt.

Entity Framework Core 2.2/3.0: vom hässlichen Küken zum State of the Art

Friday, 13:35 - 14:35 (60 min)

Track D - 315/316, Haus 7

Level 300

Holger Schwichtenberg

Am Anfang hatte Entity Framework Core massive Lücken, doch mittlerweile hat sich der neue Microsoft OR-Mapper sehr gemausert. Schon in Version 2.0/2.1/2.2 kamen entscheidende Features wie Lazy Loading, Query Types, Value Converter und die Unterstützung für den TransactionScope ins Produkt. Version 3.0 bringt weitere Verbesserungen z.B. für Views, N:M-Beziehungen und NoSQL. Entity Framework-Guru Dr. Holger Schwichtenberg zeigt in diesem Vortrag, was Entity Framework Core inzwischen kann, aber natürlich auch, wo noch Schwächen sind (und wie man mit diesen in der Praxis umgeht).

Dependency Injection in ASP.NET Core 2. Why and How?

Friday, 13:35 - 14:35 (60 min)

Track B - 20, Haus 7

Level 300

Don Wibier

In this session Microsoft MVP Don Wibier will tell you why you should use Dependency Injection (DI) in your applications. He will next tell about how this is done in .NET Core 2 and by coding examples, he’ll show you how easy it is to start using this yourself.

Alles systemisch oder?

Friday, 13:35 - 14:35 (60 min)

Track E - 1, Haus 6

Level 300

Özgür Ergel

Agile Denk- und Arbeitsweisen halten in vielen Teams und Organisationen in ganz verschiedenen Fachbereichen Einzug. Der übergeordnete Wunsch von uns Allen: besseres und effektiveres Zusammenarbeiten um Probleme zu lösen und uns an Veränderungen anpassen zu können. Meiner Meinung nach steht auch die systemische Sicht- und Denkweise für diese Ziele. Ich möchte mit diesem Session zeigen, dass diese beiden Themen Hand in Hand gehen. Wir werden in diesem Session gemeinsam versuchen Antworten auf diese zwei Fragen zu finden: Was haben die systemische Sicht- und Denkweise mit agilem Arbeiten und agiler Organisationskultur gemeinsam? Und wie kann man systemische Grundannahmen nutzen um die Agile Arbeit zu fördern bzw. das Potenzial der agile Denk- und Arbeitsweisen voll auszuschöpfen?

Fallstricke in Entity Framework für Architekten und Entwickler

Friday, 15:00 - 16:00 (60 min)

Track A - Saal, Haus 7

Level 200

Tim Borowski

Das Entity Framework (EF) ist ein gut bekannter, häufig anzutreffender Objekt-Relationaler Mapper, welcher uns .NET-Entwicklern das Arbeiten mit Datenbanken vereinfacht. Es bietet uns neben einigen wertgeschätzten Vorteilen auch unerwünschte Fallstricke. Das Verstecken der Komplexität einer Datenbank durch ein Framework wie EF stellt Softwarearchitekten vor Herausforderungen, weil großes Know-How sowohl in .NET als auch Datenbanken gefordert ist. Es fängt bereits bei der Entscheidung für Code- oder Database-First an, was zudem noch infrastrukturellen Faktoren abhängig ist. Weiterführende Fragestellungen wie die Wahl des richtigen Transaktions-Isolationslevels, ob Proxies oder Pocos genutzt werden sollen, ob Lazy-Loading verwendet werden darf und wie man mit Migrationen umgehen soll, kommen zusätzlich hinzu. Neben den Designentscheidungen gibt es auch für Entwickler Fragestellungen: muss ein DbContext immer disposed werden, darf ein nicht-materialisiertes Linq-Statement weitergeben werden, dürfen Events in einer Transaktion für die UI gefeuert werden, oder wie kann man Datenbankaufrufe effektiv debuggen? In dieser Session möchte ich für Softwarearchitekten und Entwickler auf einige Fallstricke hinweisen, um teure Fehlentscheidungen zu vermeiden und fundierte Designentscheidungen zu treffen. Anhand einfacher Setups werden praxisrelevante Problemstellungen und Programmierfehler diskutiert und Alternativen aufgezeigt.

SQL Server - Catch up für Entwickler

Friday, 15:00 - 16:00 (60 min)

Track C - 313/314, Haus 7

Level 300

Kostja Klein

SQL Server 2016, SQL Server 2017, SQL Server 2019 – haben Sie was verpasst? Als Entwickler lebt man wirklich in harten Zeiten: Ständig neue Frameworks, Plattformen und Technologien. Neue Programmiersprachen, Paradigmen und Architekturen. Und dann gibt es da ja auch noch die Datenbank. Aber keine Sorge: In dieser Session bringen Sie sich wieder „up to date“ und bekommen einen kompakten Überblick über die spannendsten Neuerungen für Entwickler seit SQL Server 2016.

3, 2, 1 und Actor! Parallelverarbeitung mit Akka.NET

Friday, 15:00 - 16:00 (60 min)

Track F - 2/3, Haus 6

Level 300

Tobias Richling

Code für die Parallelverarbeitung - aka Multi Threading - zu schreiben ist schwer. Dabei ist es fast egal ob man direkt mit Threads herumhantiert, oder sich einer höheren Abstraktion wie etwa der Task Parallel Library bedient. Die Probleme fangen immer da an, wo Daten gemeinsam von verschiedenen Threads genutzt werden. Dabei ist die Lösung doch eigentlich ganz einfach: keine Daten zwischen den Threads teilen! Geht nicht? Geht doch, und wir zeigen wie. Hier kommt Akka.NET ins Spiel. Dabei handelt es sich um eine Implementierung des Actor-Model für .NET (Core). Die Grundidee ist simpel: eine Software besteht aus Aktoren, die einen privaten Zustand haben - Zugriff von außen: Access denied! Aktoren kommunizieren über Nachrichten miteinander die zunächst mal in einer Queue landen und dann sequenziell vom Aktor bearbeitet werden. Und einen Persistenz a la Event Souring gibt es gratis obendrauf! In der Session werden anhand eines Beispielprojekts die Grundlagen und Vorteile von Akka.NET heruasgestellt, inklusive des Persistenzmechanismus der auf dem Prinzip des Event Souring basiert. Bei all der Lobhudelei werden aber auch die Implikationen auf die Anwendungsarchitektur erläutert, so das am Ende ein realistisches Bild über die Vor- und Nachteile von Akka.NET entstehen soll.

The Azure IoT Data Pipeline - Vom IoT Hub zur eigenen Lösung

Friday, 15:00 - 16:00 (60 min)

Track G - 4/5, Haus 6

Level 300

Marcel Meurer

Viele Leute sprechen über IoT, Big Data, Predictive Maintenance und mehr. Wie kann man diese Schlagworte in Lösungen in Azure umsetzen? Wie kann man neue und bestehende Sensoren anschließen? Wie kann man externe API's integrieren (z.B. um das vorhergesagte Wetter in die Lösung zu integrieren)? Auf diese Fragen und mehr möchte ich einfache Antworten geben - und zwar mit Plattformdiensten und einem guten Stück C# Code. Wir erstellen Software Sensoren, die Daten erfassen und senden aber auch gleichzeitig Befehle vom IoT Hub erhalten.

Simple game in React Native

Friday, 15:00 - 16:00 (60 min)

Track D - 315/316, Haus 7

Level 200

Anastasia Dvorkina

React Native allows you to build native mobile applications using only JavaScript and React. Let's discover this framework together and build a simple game. The lecture will cover the history and the basics of React Native. We will dive into the app architecture and core concepts of the framework. After the lecture you will know the step-by-step process of implementing a React Native app on your own. Some knowledge of JavaScript and React are welcomed but not required.

KI in einer Xamarin App im offline Modus

Friday, 15:00 - 16:00 (60 min)

Track B - 20, Haus 7

Level 300

Marian Grzesik

Künstliche Intelligenz ist sehr verbreitet. Moderne Apps nutzen oft KI um Aufgaben zu lösen, die nicht in Algorithmen einfach zu lösen sind. KI wird meistens in Verbindung mit der Cloud genutzt. Es gibt in der aktuellen Version von iOS, Android und UWP auch die Möglichkeit, die KI offline zu nutzen. In dem Referat präsentiere ich zuerst den aktuellen Stand der Technik aus der Sicht eines App-Entwicklers. Anhand mehrerer Beispiele stelle ich dar, wie man die KI konkret in der App (Xamarin) verwenden kann. Dabei konzentriere ich mich besonders auf die KI Techniken, die ohne die Cloud, offline, verwendet werden können. Danach präsentiere ich noch, wie man ein KI Model in der Cloud erstellt und in der App offline verwendet werden kann.

Verteilte Anwendungen bei Azure mit Docker und Kubernetes

Friday, 15:00 - 16:00 (60 min)

Track E - 1, Haus 6

Level 300

Gregor Biswanger

Kubernetes ermöglicht eine Automatisierung der Bereitstellung, Skalierung und Verwaltung von verteilten Docker-Container. Der Einstieg, die Umsetzung und Wartung hingegen ist eine extreme Herausforderung und kostet am Ende nicht nur viel Geld, sondern auch Ihre Nerven. Microsoft Azure bietet mit den Azure Kubernetes Services (Kurz AKS) die Erlösung, der soeben genannten Schmerzen. In dieser Session zeigt Ihnen der Docker- und Azure-Experte Gregor Biswanger einen Überblick von Kubernetes und wie einfach Azure für uns eine Kuberenetes-Landschaft herbeizaubern kann.

Verabschiedung

Friday, 16:15 - 16:45 (30 min)

Track A - Saal, Haus 7

Level 200

Melanie Eibl

Stefan Lange

Kerstin Bussjäger

Verabschiedung

Vorträge der vergangenen Veranstaltungen