Sebastian Meyen, Program Chair, begrüßt die Teilnehmer der BASTA! 2020, führt in das Programm ein und gibt wichtige Hinweise zum Ablauf der Hybrid Konferenz.
Vor 20 Jahren gab es die erste Version von C#. Seitdem hat sich viel getan. Wofür würde C# vor 20 Jahren verwendet, welche Einsatzmöglichkeiten gibt es heute? Von einer Windows-spezifischen Plattform mit Windows und Web Applikationen zu Multi-Platform Open Source, mobilen Devices und Cloud Environments. Christian Nagel zeigt wie sich der Syntax von C# geändert hat, und in welche Richtung sich C# weiterentwickelt. Was steht uns mit C# 9 bevor und wie geht es weiter?
Komponentenbasierte Entwicklung hat sich inzwischen in allen großen Frameworks durchgesetzt. Doch wie entwickelt man Komponenten, die völlig unabhängig funktionieren und in jedem Framework verwendet werden können? Mit Hilfe des Web-Component-Standards und Frameworks wie Polymer können Sie genau das erreichen. Jörg Neumann zeigt Ihnen, wie Sie leistungsstarke Komponenten entwickeln und gibt Tipps für die Gestaltung und Interaktion.
Das Manifest der agilen Softwareentwicklung sagt uns, wir sollen bessere Wege erschließen, um Software zu entwickeln. Das Caretaker-Modell beschreibt die Art, wie mein Team arbeitet. In dieser Präsentation erkläre ich euch, warum wir Scrum hinter uns gelassen haben und unsere eigene Methode adoptiert haben. Und natürlich, warum das Caretaker-Modell viel besser zu uns passt, und zu dir und deinem Team möglicherweise auch.
Es existiert eine Vielzahl von (statischen) Codeanalysewerkzeugen. Manche dienen der einmaligen Analyse während andere sich in den CI Build integrieren. Jedoch stellt sich die Frage, wie in großen bestehenden Codebasen technische Schulden abgebaut werden können: Wie ist zu priorisieren? Wann und weshalb sind diese entstanden? Wie kritisch sind sie?
Der ausschließliche Blick auf den Code kann diese Fragen nicht immer beantworten. Häufig ist es notwendig, weitere Informationsquellen zur Analyse hinzuzuziehen. SCM-Systeme wie Git können als Gedächtnis eines Systems genutzt werden, um wichtige Erkenntnisse zu gewinnen.
In dieser Session zeige ich, wie wir neben Code auch Git zur Bewertung von Systemen einsetzen können, um Schulden an den "richtigen und wichtigen" Stellen abzubauen.
Das Speichern von Geheimnissen, die von einer Anwendung benötigt werden, war schon immer eine Herausforderung. Eigentlich ist es ja ganz simpel: Alles was geheim ist, wird verschlüsselt. Die Verfahren sind bekannt und erprobt. Doof ist nur, dass der Schlüssel ja auch ein Geheimnis ist. Was machen wir dann mit dem Schlüssel? Mit einem Passwort den Schlüssel verschlüsseln? Moment, wir drehen uns gerade im Kreis. Der Azure Key Vault ist das Angebot der Azure-Cloud um dieses Problem zu lösen. In dieser Session schauen wir uns an, was der Key Vault ist und wie wir diesen in unserer Architektur verwenden.
In jedem System gibt es von Zeit zu Zeit Probleme oder Konflikte zwischen Einzelpersonen, Gruppen und Abteilungen. Das verlangsamt nicht nur Prozesse; sondern kann auch der Grund dafür sein, dass es keine Interaktion zwischen den beteiligten Menschen gibt. Und das wiederum kann dazu führen, dass kein Business Value erzeugt wird. Die Vorstellung, in einem Umfeld zu Interagieren, in dem man sich gegenseitig respektiert und die Bedürfnisse der Kollegen versteht, ist sehr verlockend. Um in Zukunft gut oder besser zusammen zu arbeiten, teile ich in dieser Session gesammeltes Wissen und Erfahrungen, damit entsprechende Situationen künftig entschärft werden und maximale Wertschöpfung entsteht.
Die ersten Schritte mit Web Components fühlen sich teilweise etwas nach "Zurück in die Zukunft" an - wir entwickeln moderne Komponenten in einem mittlerweile nativen Komponentenmodell des Browsers. Und das ganz einfach nur mit HTML, CSS und JavaScript. Für ein Prototyping ist das ausreichend, zum Erstellen von Komponentenbibliotheken fehlen uns noch wichtige Aspekte, wie z. B. eine Build Pipeline, Nutzung von CSS-Prä- und -Postprozessoren, Testing oder die Erstellung von Dokumentation. Hier setzt StencilJS an - ein Open Source Framework vom Ionic-Framework-Team. StencilJS versteht sich als eine Toolchain zur Erstellung von wiederverwendbaren und skalierbaren Designsystemen auf Basis von Web Components. Neben den gewünschten Features erhalten wir TypeScript-Unterstützung, Data-Binding und Event Handling in Form von JSX. In dieser Session zeigt Manuel Rauber, wie man mit StencilJS Komponenten entwickeln und benutzen kann, welche Vor- und Nachteile durch den Einsatz des Frameworks entstehen und warum aufgrund von Web Components die Frage nach dem richtigen Single Page Application Framework über die Zeit hin immer nichtiger wird.
Eine Progressive Web App ist ein ganz normales Web-Frontend, das responsive ist, auf jedem Gerät läuft und potenziell offlinefähig ist. So lässt sich der Kern von PWAs in einem Satz zusammenfassen. Natürlich steckt noch wesentlich mehr hinter diesem Konzept, das in den vergangenen Monaten zunehmend an Fahrt aufgenommen hat. Das Ziel ist es, eine Webapplikation mit HTML, CSS und JavaScript so zu entwickeln, dass sie konkurrenzfähig zu nativen Applikationen auf den verschiedenen Plattformen wie Smartphone oder Desktop ist. PWAs verwenden moderne Browserschnittstellen, um die Leistungsfähigkeit und die Features von Webapplikationen zu erweitern. Die Applikation soll in jeder Umgebung mit den zur Verfügung stehenden Mitteln optimal laufen. In diesem Vortrag werfen wir einen Blick auf die zugrunde liegenden Schnittstellen und sehen uns an, wie Features, wie Offlinefähigkeit, Installierbarkeit und Pushbenachrichtigungen umgesetzt werden können. Außerdem sehen wir uns hilfreiche Ressourcen und Werkzeuge an, die die Arbeit mit PWAs erleichtern.
Die Neuentwicklung von geschäftskritischer Software dauert Jahre. Die aktuell vorhandene Software genügt nicht den fachlichen Anforderungen, ist vom Wettbewerber überholt worden, kann nicht als Software-as-a-Service bereitgestellt werden, läuft nicht auf einem Tablet und auch nicht auf den aktuellen Betriebssystemen, steht nicht als Webanwendung zur Verfügung, ist nicht responsive und dem Design sieht man das Alter an, …
Für ein Unternehmen sind die Herausforderungen einer Neuentwicklung oft nicht zu bewältigen. Auch erscheint es unsinnig, da ja viele bewährte Funktionsbereiche beibehalten werden könnten.
Hingegen verspricht die Migration der Software die Lösung aller Probleme. Funktioniert das wirklich?
Der Vortrag beschreibt, wie eine sehr umfangreiche geschäftskritische Software von Client-Server basierend auf .NET Winforms auf eine Browser basierende Webanwendung umgestellt werden kann, die zudem den neuesten Designkriterien entspricht. Anhand erfolgreich umgesetzter Projekte werden die eingesetzten Technologien und Werkzeuge, die Vorgehensweise aber auch die Herausforderungen solcher Projekte erläutert. Die technische Sicht wird anhand eines Beispiels ebenso verdeutlicht wie die betriebswirtschaftliche Bewertung anhand von realen Projekten. Schnell wird den Zuhörern klar, dass mit der Migration nicht nur das technische Ziel erreicht wird, sondern gleichzeitig auch die vorhandenen Entwickler in die neue Welt "mitgenommen" werden.
Es gibt typische Architekturmuster rund um Identitäts- und Zugangskontrolle für moderne Anwendungen (Mikroservices oder Cloud-native Anwendungen - oder wie immer man sie nennen möchte). OpenID Connect und OAuth 2.0 sind die Wegbereiter für diese Architekturen. Wenn Sie ein solches Anwendungssystem aufbauen, werden Sie unweigerlich auf einige Herausforderungen und Fragen stoßen, wie z.B. welchen protokol flow Sie wählen, wie Sie Ihre Ressourcen und Token gestalten, wie Sie Ihre verschiedenen (neuen und alten) Clients mit dem Token-basierten System verbinden, wie Sie das Session- und Token-Lifetime-Management gestalten, wie Sie mit Widerruf, Authentifizierung vs. Autorisierung umgehen usw. In dieser Sitzung werden wir uns einige übliche Muster (und vielleicht auch Anti-Muster) für den Entwurf token-basierter Systeme ansehen und einige Antworten auf die obigen Fragen erhalten.
Der Grad der Wartbarkeit und Erweiterbarkeit eines Systems hat eine direkte Auswirkung auf allen Feedback-, Kommunikations- und Handlungsebenen einer Organisation. Schlechte Codequalität bedeutet eine lange Time to Market, sie verursacht Unzufriedenheit beim Kunden, Geldverschwendung und große Frustration in den Teams und in der ganzen Organisation. Aber ist nicht mit Scrum alles anders, besser und problemlos? Auch mit Scrum brauchen Entwickler, die zu wenig Einfluss und zu wenig Kontext haben, viel zu lange. Dabei entwickeln sie Produkte – auch noch mit schlechter Codequalität - die die Kunden gar nicht haben wollen. Das hat unzufriedene Kunden, unmotivierte Entwickler und frustrierte Manager zur Folge. Agile Prozessmodelle können erst durch geeignete Entwicklungsmethoden, die die Qualität eines Produkts gewährleisten, zu effizienten Entwicklungsmodellen werden. Daher ist es wichtig, ein geeignetes Umfeld zu haben, damit Clean Code und XP-Techniken effizient eingesetzt werden können. Gute Codequalität braucht ein wahres, authentisch agiles Umfeld. Aber was genau bedeutet agile Softwareentwicklung? Und was können wir tun, damit sie sich nicht zu einem „Dirty Agile“ verwandelt?
Mit WinUI 3 bringt Microsoft ein brandneues XAML-basiertes UI Framework auf den Markt. Brandneu? Nicht ganz. Die XAML Runtime und XAML Controls der Universal Windows Platform (UWP) wurden von Windows entkoppelt und stehen nun als NuGet-Pakete unter dem Namen WinUI zur Verfügung. Mit WinUI 3 lassen sich moderne Applikationen basierend auf dem UWP-Modell (mit Windows-Store-Unterstützung) als auch auf dem klassischen Win32-Modell mit EXE-Datei erstellen. Es sieht so aus, als ob WinUI 3 die Zukunft der modernen Windows-Desktopentwicklung darstellen wird.
Seit seiner Veröffentlichung in RFC6749 und RFC6750 hat OAuth 2.0 auf dem Markt massiv an Zugkraft gewonnen und wurde zum Standard für den API-Schutz und zur Grundlage von OpenID Connect. In der Zwischenzeit wurden die Protokolle durch bekannte Implementierungsschwächen und Anti-Patterns angegriffen, die Technologie hat sich geändert und ihre Verwendung wurde auf Anwendungsfälle und höhere Sicherheitsumgebungen ausgeweitet als ursprünglich angenommen und erwartet. Aus diesem Grund hat die IETF eine Reihe so genannter "Best Current Practices" (BCPs) veröffentlicht, die die ursprünglichen Spezifikationen und Bedrohungsmodelle aktualisieren und mehr präskriptive Anleitungen geben. Dieser Vortrag gibt einen Überblick über diese BCPs und greift einige der Themen für eine vertiefende Diskussion auf.
Ob neue Technologien, (agile) Transformationen, neue Arbeitsmethoden oder die vielbeschworene Digitalisierung und DevOps: Veränderungen in Unternehmen sind heute allgegenwärtig. Das kann mitunter anstrengend und frustrierend sein, denn oft greifen diese Veränderungen tief in den Alltag der Betroffenen ein. Wer kennt nicht mindestens eine Horror-Story von einem gescheiterten Veränderungsprozess? Die Geschichten von ziellosem Umherirren im Methodendschungel, von unstrukturierten Prozessexperimenten oder diktatorischem Umorganisieren mit Brechstangenmethodik sind zahlreich. Das muss nicht sein! Veränderungen können und sollen positiv erlebt werden. Im Zusammenspiel von sieben Erfolgsfaktoren ist eine zielgerichtete und nachhaltige Veränderung deutlich leichter zu erreichen. Welche Faktoren das sind und wie sie praxisnah erkannt und umgesetzt werden können, zeige ich in diesem Vortrag.
Ihr lernt ein konkretes Modell zur Umsetzung von kleineren und grösseren organisatorischen Veränderungen kennen und nehmt eine Liste von Fragen mit, die in der nächsten Veränderung beantwortet werden wollen.
Progressive Web Apps sind ein plattformübergreifendes Anwendungsmodell, das auf Webtechnologien basiert. Auch Googles SPA Framework Angular enthält eine PWA-Unterstützung, die schnell angeschaltet ist. Doch damit geht die Arbeit erst richtig los: Christian Liebel zeigt Ihnen, wie Sie mit Angular-App-Updates richtig kommunizieren, Cache-Probleme debuggen und den Anwender korrekt zum Abonnement von Pushbenachrichtigungen oder zum Installieren der App auffordern.
Mit den Mobile Blazor Bindings können Entwickler native Mobile-Apps mit C# und .NET für Android und iOS unter Zuhilfenahme bekannter Webtechnologien erstellen. Klingt erst einmal spannend, die Frage ist aber: Wer braucht so etwas? Um diese Frage zu beantworten, sehen wir uns in diesem Vortrag die Xamarin-Blazor-Implementierung in einer kleinen Beispiel-App an und vergleichen sie mit einer XAML-Variante der App. Im Anschluss erfahren Sie, welche Vor- und Nachteile die Mobile Blazor Bindings haben und für wen sich die Nutzung anbietet.
Single Page Applications (SPAs) – bisher implementierte man sie vornehmlich mit JavaScript oder TypeScript, oft im Rahmen eines SPA Frameworks wie Angular oder React. Mittlerweile können nun durch den WebAssembly-Standard theoretisch beliebige Sprachen genutzt werden. Mit dem Blazor Framework auf Basis von WebAssembly hat das ASP.NET-Core-Team einen neuen Kandidaten am Start, um auch praktisch mit C# und .NET-SPAs für den Browser realisieren zu können. Christian Weyer zeigt in diesem Vortrag in gewohnt praktischer Manier anhand von Beispielen, wie Blazor tickt, wie man es sinnvoll einsetzen kann und wo aktuell – je nach Anwendungsfall – die Grenzen liegen.
„Diversität ist ein Konzept der Soziologie und Sozialpsychologie, das [...] für die Unterscheidung und Anerkennung von Gruppen- und individuellen Merkmalen benutzt wird“ (wikipedia.de, 2020). Teams, die divers besetzt sind und echt zusammenarbeiten, treffen die besseren Entscheidungen. Das klingt grundsätzlich sehr erstrebenswert. Auf der anderen Seite ist Diversität bei Nichterreichen einer echten Zusammenarbeit vor allem eines: anstrengend. Das ständige Berücksichtigen von unterschiedlichen Bedürfnissen, unterschiedlichen Reaktionen auf Veränderung, unterschiedlichem Wissen, unterschiedlichen Erfahrungen und vielem mehr kostet Zeit und Kraft. Und leider gibt es keinen Masterplan, den wir auf alle Teams legen können. Wie begleite ich divers besetze Teams in eine echte Zusammenarbeit? Und welche Herausforderungen und Stolpersteine können mir auf dem Weg dahin begegnen? Mit diesen Fragestellungen beschäftige ich mich in dieser Session. Neben verschiedenen theoretischen Hintergründen und Modellen werdet ihr praktische Ansätze mitnehmen, die ihr mit euren Teams einfach mal ausprobieren könnt.
Produkte der Kategorie Kollaborationssoftware wie Teams, Slack oder auch Zoom haben gerade in der nahen Vergangenheit einen enormen Beitrag zur (offenbar dringend nötigen) Digitalisierung der Zusammenarbeit geleistet. Wie jedes Softwareprodukt, bilden sich im Verlauf der Nutzung bei verschiedenen Beteiligten Anforderungen an weitere Funktionen heraus, die im Produktstandard anders oder gar nicht geboten werden. Gute Tools glänzen an dieser Stelle mit passenden Optionen, um diese Anforderungen realisierbar zu machen. Wie bspw. Apps für mobile Geräte als einfachstes Beispiel, kann auch Teams als Plattform verstanden werden und ist offen, auf vielfältige Weise um neue Features erweitert zu werden. Im Rahmen dieses Vortrags liegt der Fokus auf sog. Bots und es wird gezeigt, wo und wie sie in Teams sinnvollerweise dazu eingesetzt werden können, das Produkt mit weiterer Funktionalität anzureichern und ein Durchstich durch den Entwicklungsprozess vorgestellt.
Die Anforderungen an Web-UIs steigen stetig. Doch all die schönen Designkonzepte müssen auch umgesetzt werden. Das stellt Entwickler vor einige Herausforderungen. Neben CSS bietet sich vor allem SVG an, wenn es darum geht, grafisch komplexe Komponenten zu entwickeln. Jörg Neumann zeigt an vielen Beispielen, wie Sie Designvorgaben effektiv umsetzen und mit Hilfe von Animationen veredeln.
Container sind überall! Natürlich stehen wir ehrfürchtig vor Infrastrukturmodellen, in denen komplexe Umgebungen vollautomatisch aufgebaut und skaliert werden. Für den normalen Entwickler gehören diese Dinge glücklicherweise nicht zum Alltag, aber Container können trotzdem gewinnbringend eingesetzt werden, um Arbeitsumgebungen sauber und reproduzierbar zu halten. Oliver zeigt in dieser Session Container und virtuelle Umgebungen für jedermann – mit Windows, Chromebooks und Linux, Docker, WSL und LXC, letzlich gar Qubes OS als Nonplusultra der Containerisierung.
Was haben japanische Kampfkünste mit Clean Code zu tun? Gar nichts? Naja, fast nichts. Eine Gemeinsamkeit gibt es: Das Prinzip der Katas bietet eine zwanglose Form des Übens, jenseits des Tagesgeschäfts. Kata steht für eine kleine, in sich abgeschlossene Übung. Ziel ist es, Bewusstsein für Qualität und Software-Craftsmanship zu schaffen und die dafür notwendigen Fähigkeiten aufzubauen und zu vertiefen. Durch häufige Wiederholung gehen bestimmte Abläufe in Fleisch und Blut über. Die den Begriff Code Katas prägende Clean-Code-Bewegung betrachtet Programmierung als Fertigkeit und Katas als Möglichkeit, zu lernen, technische Schulden gar nicht erst aufzubauen. Oft wird die Durchführung von Katas mit testgetriebener Entwicklung empfohlen. In diesem Vortrag möchte Özgür Ergel zeigen, was Code Katas sind, wie Entwickler mit Hilfe von Wiederholungen lernen können, bestimmte Dinge reflexartig zu tun, und welchen Beitrag zu Clean Code der Einsatz von Code Katas leisten kann.
Pattern Matching ist eine relativ neue Funktionalität in C#, die in den letzten Sprachversionen immer weiter ausgebaut wurde. In dieser Session zeigt Rainer Stropek, was man mit Pattern Matching alles anstellen kann. Dabei kratzen wir nicht nur an der Oberfläche, sondern schauen uns an, was hinter den Kulissen passiert. Diese Session ist etwas für erfahrene C#-Entwicklerinnen und Entwickler, die vielleicht von Pattern Matching schon gehört haben, bei denen diese C#-Technik aber noch nicht in Fleisch und Blut übergegangen ist. Das möchte Rainer ändern, indem er die Möglichkeiten anhand vieler Beispiele demonstriert und das notwendige Wissen für den Einsatz im Programmieralltag vermittelt.
Die Top Ten des Open Web Application Security Project bemüht sich seit siebzehn Jahren, eine jährliche Liste der zehn relevantesten Sicherheitsrisiken für Webanwendungen zusammenzustellen. Für Ende 2020 ist eine neue Ausgabe geplant, wenngleich dieser Termin bereits einmal verschoben wurde. In Ermangelung einer Vorab-Version werfen einen Blick auf die Punkte der aktuellen Ausgabe von 2017 und als nächstes schauen wir in die Glaskugel, ob etwa etwas in der Liste fehlt, und was sich im Bereich Web Application Security in den letzten Jahren getan hat. Zudem diskutieren wir die Relevanz der Risiken durch die ASP.NET-Brille und besprechen technologiespezifische Gegenmaßnahmen. Ob als Einstieg in die Websecurity oder zur Auffrischung: Die gezeigten Sicherheitsrisiken gehören zum Grund-Know-how der Webentwicklung.
Desktop-Anwendungen sind out: Spätestens seit den Hamsterkäufen für VPN-Zugänge in den vergangenen Monaten ist allen IT-Verantwortlichen klar, dass an Web-basierten Unternehmensanwendungen kein Weg vorbei führt. Bei Ergonomie und Funktionalität stehen heutige Web-Anwendungen dem Desktop in nichts nach.
Doch wie geht man die Entwicklung von komplexen Lösungen an, ohne sich in verschiedenen Technologien, Bibliotheken, Schnittstellen und Programmiersprachen zu verlieren?
Der Ansatz von Wisej folgt den Ideen integrierter Entwicklungsumgebungen der letzten 25 Jahre. Auf Basis einer Single-Page-Anwendung können selbst komplexeste Anwendungen mit hunderten von Masken elegant fürs Web entwickelt werden. Dabei kommt man häufig um Faktor 5-10 schneller ans Ziel als mit klassischen Entwicklungsansätzen, ohne dabei die Flexibilität zu verlieren.
In diesem Workshop bauen wir in nur einer Stunde eine Web-Anwendung, die unter Windows, Linux, auf dem Raspberry Pi, als lokale Desktop-Anwendung unter Windows und als „connected App“ auf iOS und Android lauffähig ist.
Einführung in die Distributed Application Runtime (Dapr), ein Community/Open-Source-Projekt initiiert von Microsoft, das sich zum Ziel gesetzt hat, die Erstellung von verteilten Systemen zu vereinfachen. Immer mehr Entwickler erstellen skalierbare, cloud-native Anwendungen und nutzen verwaltete Cloud-Dienste, um sie bereitzustellen und auszuführen. Microservices-Architekturen sind zum Standard für die Erstellung nativer Cloud-Anwendungen geworden. Sie bietet überzeugende Vorteile, einschließlich Skalierbarkeit, lose Kopplung und unabhängige Bereitstellungen. Dieser Ansatz erfordert jedoch ein sehr gutes Verständnis von verteilten Systemen. Mit Dapr soll jeder Entwickler in die Lage versetzt werden, Microservice-Anwendungen zu erstellen. Wir werfen zusammen einen Hands-on-Blick auf den aktuellen Status des Projekts mit Hinblick auf .NET-Entwickler.
In ASP.NET Core 3.0 ist mit Blazor Server eine nagelneue und innovative Softwarearchitektur erschienen, mit der Sie Single Page Web Applications (SPAs) mit ASP.NET Core, C# und Razor-Templates implementieren können, ohne WebAPIs und JavaScript schreiben zu müssen. Allerdings gibt es Einschränkungen bei der Skalierbarkeit und keine Offlinefähigkeit. Seit Mai 2020 gibt es mit Blazor WebAssembly als echtes SPA-Framework, bei dem Ihr C#-Code wirklich im Browser läuft. Der .NET- und Webexperte Dr. Holger Schwichtenberg zeigt in diesem Vortrag anhand der Beispielanwendung MiracleList (einem Klon der App WunderList) die Gemeinsamkeiten und Unterschiede zwischen beiden Blazor-Versionen und wie mühelos sich gemeinsamer Programmcode für beide Varianten schreiben lässt. Dabei wird er behandeln: Komponentenmodell, Zustände, Interoperabilität mit JavaScript, Nutzung von Datenbanken und WebAPIs, Authentifizierung und Benachrichtigungen sowie verfügbare Erweiterungen insbesondere der Steuerelemente.
Möchte man heutzutage eine skalierbare Webapplikation mit Angular schreiben, kommt man mit einfachen Angular-Modulen schnell an seine Grenzen. Architekturvorlagen wie Microfrontends oder Monorepos mit sogenannten Angular Libraries schaffen hierbei Abhilfe.
Shared Code und Angular-Bausteine, die man immer wieder verwenden möchte, lassen sich einfach in eine Angularv Library mit Hilfe der Angular-eigenen CLI anlegen.
In diesem Talk stellt Google Developer Expert (GDE) Martina Kraus die genauen Schritte zur Erstellung eine neuen Angular Library mit Ivy vor. Nach den Grundlagen wird sie zudem erläutern, wie man eine bereits bestehende Library, die mit einer älteren Angular-Version erstellt wurde, nach Angular Ivy migriert.
Am Ende des Talks haben die Teilnehmer einen soliden Überblick über das Thema und lernen anhand zahlreicher Codebeispiele Schritt für Schritt eine ältere Angular Library nach Angular Ivy zu migrieren.
Docker-basierte Dienste sind heutzutage unverzichtbar und Kubernetes ist zur Nummer eins der Containerorchestratoren geworden. Neben einer kurzen Einführung in den Azure Kubernetes Service (AKS) werden wir einen kompletten Cluster von 0 auf 100 bauen und in eine Azure Umgebung integrieren. Die behandelten Themen umfassen: AKS Deployment (ARM/CLI), AAD-Integration, öffentliche Endpunkte mit Application Gateway/WAF, Zertifikatsmanagement, Skalierung und Zero-Downtime Deployment.
It has been nearly 20 years since the first beta of the .NET Framework was released and a lot has changed in the world of web development since then. The ASP.NET ecosystem covers a wide spectrum from WebForms and MVC to modern web development with Angular, React, and Blazor. In this session we will discuss what’s happening with .NET Full-Framework, .NET Core, and Blazor as we transition to ASP.NET Core on .NET 5. We’ll identify which frameworks will be legacy and how to choose migration paths for a successful and stable path forward.
Immer mehr Unternehmenslösungen werden heutzutage als Single Page Applications realisiert. Es handelt sich dabei so gut wie immer um große Anwendungen, die langfristig wartbar sein müssen. Genau das muss sich auch in unseren Frontend-Architekturen widerspiegeln!
Hier erfahren Sie, wie Sie dieses Ziel erreichen, indem Sie Ihre Anwendung mit dem populären Werkzeug Nx und Monorepos in mehrere überschaubare Bibliotheken aufteilen und mit bewährten Ideen aus der Welt von Domain-driven Design, insbesondere Strategic Design, kombinieren.
Danach besprechen wir, wie sich die einzelnen Domänen auf verschiedene Microservices aufteilen lassen und wie Sie diese mit dem brand-neuem Webpack Module Federation ineinander integrieren können.
Am Ende haben Sie einen Überblick über bewährte Architekturkonzepte und wissen, wie Sie damit Ihre Angular-Anwendungen nachhaltiger gestalten können.
Sie möchten Ihre .NET-Core-Anwendung in Kubernetes betreiben und lernen, wie Sie das Potenzial des Container-Orchestrators nutzen können? Dann besuchen Sie diesen Talk von Kubernetes- und Cloud-native-Experte Thorsten Hans. Sie werden nicht nur den praktischen Umgang mit Kubernetes aus Sicht des Entwicklers lernen, sondern auch, wie Sie Patterns und Praktiken nutzen, um Ihre .NET-Core-Anwendungen optimal in Containern zu betreiben.
You are invested in .NET and Xamarin technology stacks. But there are some pain points in the present reality. Perhaps you crave for cohesiveness, maturity and want to have more confidence in the Xamarin and Xamarin.Forms ecosystem?
Let’s take a look at the future with .NET MAUI – the evolution of Xamarin.Forms. While early days, the promise is exciting. Developers would be able to write more cross-platform code to target a wider selection of platforms, across mobile/desktop/web. Major design patterns include traditional MVVM and also the newer MVU pattern for additional developer flexibility. MAUI also opens the funnel to invite more developers into the ecosystem by offering choices in the UI stack – web technologies are welcome. The tools you know get better, apps aim to be more performant and developer cycles get tighter loops. .NET MAUI is a combination of technologies to evolve the Xamarin stack for future – a state of mind for surf & fun. Let’s explore!
Traces, metrics, and logs from a production system are extremely useful in order to find and fix bugs in our applications, especially in today's micro-service environments. But collecting and correlating this data is not trivial. Observability offers the solution to this problem.
In this session, we will look at how you can create an observability system for your .NET applications and how you can extend it in order to trace any part of your code. We are going to see how you can monitor a .NET 5 application with Elastic APM and with Application Insights.
APIs sind einer der wichtigsten Bestandteile moderner Anwendungen. Das API Management von Microsoft Azure ist eine Plattform zur Verwaltung von APIs in Hybrid- und Multi-Cloud-Umgebungen. In diesem Vortrag lernen Sie zunächst die Bausteine einer API-Verwaltungsinstanz kennen. Daraufhin zeigt Ihnen Azure-Experte Gregor Biswanger, wie Sie Richtlinien verwenden, um Ihre APIs sicherer zu machen und die Clients hinsichtlich einer festen Anzahl von Aufrufen, Bandbreite und IP-Adressen beschränken, so dass Sie Ihre APIs professionell und komfortabel zur Verfügung stellen können.
Mit ML.NET bietet Microsoft einen relativ einfachen Einstieg in Machine Learning für .NET-Entwickler. Dabei lassen sich in Visual-Studio-Modelle trainieren, um verschiedenste Machine-Learning-Algorithmen zu nutzen. In dieser Session erhalten Sie einen Überblick über die Möglichkeiten und erfahren, wie Sie mit ML.NET in Ihren eigenen .NET-Anwendungen Machine Learning einsetzen können.
Wer sich die Preisliste von Azure im Detail ansieht, der wird feststellen, dass viele Services empfindlich teuer werden, wenn man sie in einem VNet betreibt. Wäre es fahrlässig, auf ein VNet in der Public Cloud zu verzichten? Kann eine Anwendung auch ohne VNet sicher betrieben werden? In dieser Session zeigt Rainer Stropek an einem durchgängigen Beispiel eines öffentlichen Web-API, wie Zero Trust Networking in Azure umsetzbar ist. Er vergleicht Lösungen mit und ohne VNet sowohl technisch als auch bzgl. der Betriebskosten.
Das Angular-Ökosystem hat noch einige Trümpfe im Ärmel, die es nach dem Erscheinen des Ivy-Compilers nach und nach ausspielen wird. Das schafft ein enormes Potenzial für Ihre Anwendungen!
In dieser Session zeigt Ihnen Manfred Steyer, Google Developer Expert und Trusted Collaborator im Angular-Team, wie Ihre Anwendungen davon profitieren werden, aber auch, wie Sie sich auf diese neue Welt vorbereiten können. Wir diskutieren die aufkommenden Möglichkeiten rund um dynamische Komponenten und HOC (Higher Order Components), leichtgewichtige und Framework-agnostische Web Components, das Arbeiten ohne NgModules sowie Zone-less Change Detection.
Kommen Sie in diese Session und dringen Sie mit Angular in neue Bereiche vor!
Die Anforderungen an Software ändern sich mit der Zeit und so muss sich die Software mit ändern. Das gilt ebenso für unsere Web-APIs. Doch sobald wir Endpunkte entfernen, Felder umbenennen oder gar das Verhalten ändern wollen oder müssen, haben wir bei APIs das Problem, dass sich ältere Clientanwendungen auf das Verhalten verlassen, das wir damals bereitgestellt hatten. Änderungen daran würden die Clients nicht verstehen und daher nicht mehr richtig funktionieren: Wir brauchen also unterschiedliche Versionen unseres API. In dieser Session zeigt Ihnen Sebastian Gingter anhand von Praxisbeispielen, wann überhaupt eine neue Version benötigt wird, welche verschiedenen Methoden es gibt, um ein ASP.NET-Core-Web-API zu versionieren, und welche verschiedenen Herangehensweisen im Code möglich sind, um unterschiedliche Versionen parallel bereitzustellen. Versionierung à la carte, angerichtet mit viel Praxiserfahrung und serviert mit einer kleinen Prise Nähkästcheninformationen.
Blazor unterstützt den Zugriff auf die JavaScript Runtime des Browsers, dies wird als JavaScript Interop bezeichnet. Doch wozu JavaScript Interop, wenn in Blazor direkt C# genutzt werden kann? Mit JavaScript Interop lassen sich einerseits bestehende Browser-APIs wie Local Storage oder Geolocation nutzen, die noch nicht direkt in Blazor für C# zur Verfügung stehen. Andererseits lassen sich mit JavaScript Interop x-beliebige JavaScript-Komponenten einbinden. Haben Sie beispielsweise eine Third-Party-JavaScript-Komponente im Einsatz oder haben sogar eine JavaScript-Komponente selbst entwickelt, dann können Sie diese in Ihrer Blazor-App dank JavaScript Interop weiterhin nutzen. In dieser Session lernen Sie in Livedemos die Grundlagen zu JavaScript Interop: Sie erfahren, wie Sie aus .NET auf JavaScript zugreifen, wie Sie aus JavaScript auf .NET zugreifen und wie Sie bestehende JavaScript-Komponenten nutzen und mit Razor-Komponenten kapseln.
Der weltweite Ausbruch von COVID-19 im Frühjahr 2020 wirft viele Probleme auf, und manche davon beziehen sich unmittelbar auf von Software dominierten Arbeitsumgebungen. Arbeiten von daheim entwickelt sich vielerorts von der Ausnahme zur Norm, Computer und Software machen es möglich. Oft stehen jedoch ungünstige Architekturentscheidungen solchem Einsatz im Weg, und es gibt viel darüber zu lernen, wie wir als Entwickler und Architekten in Zukunft besser auf ähnliche Situationen vorbereitet sein können. In dieser Session geht Oliver kritisch auf gängige Architekturmodelle ein, bewertet ihre Qualität im Kontext der COVID-19-Notlage und stellt Lösungswege vor.
NoSQL-Datenbanken verfolgen einen nichtrelationalen Ansatz. Sie brechen damit die lange Geschichte relationaler Datenbanken. Sie benötigen keine festgelegten Tabellenschemata, sondern haben eine ganz eigene Herangehensweise. In dieser Session zeigt der MongoDB-Experte Gregor Biswanger, wie ein NoSQL-Schema für dokumentenorientierte Datenbanken entworfen wird. Dazu werden einige bekannte Entwurfsmuster aus der Praxis vorgestellt.
Schick, performant und bitte auf allen Plattformen verfügbar! Moderne Anwendungen verlangen ihren Entwicklern einiges ab. Wo früher noch die Vorarbeit von Anbietern wie Microsoft in Form von UI-Baukästen geleistet wurde, muss heute selbst Hand angelegt werden. Andreas Wissel zeigt Ihnen in dieser Session, wie Sie mit Angular und Storybook eine pragmatische, skalierbare Komponentenbibliothek aufbauen, die den Vorbildern großer Anbieter in nichts nachsteht. Sowohl isolierte Entwicklung als auch Testing und Dokumentation sind damit fester Bestandteil Ihres Workflows.
Häufig wird Kanban als Alternative zu Scrum verstanden. In diesem Vortrag wird jedoch der Fokus darauf gelegt, wie Scrum-Teams von zusätzlichen Kanban-Praktiken profitieren können. Im Fokus steht dabei die Optimierung des Flows, also des Arbeitsflusses innerhalb des bestehenden Scrum-Prozesses. Die dabei vorgestellten Konzepte eröffnen neue Perspektiven und Möglichkeiten in der Planung, Steuerung und dem Monitoring von Projekten. Themen wie Schätzung und Prognosen werden aus anderen Blickwinkeln betrachtet. Neben den Praktiken zeigt der Vortrag auch Umsetzungsmöglichkeiten in Azure DevOps auf.
Angular ist eine sehr mächtige und populäre Plattform, um moderne Anwendungen mit Typescript für das Web zu schreiben. Bei den meisten Angular-Applikationen kommt jedoch der Punkt, an dem man die Applikation neben dem Web auch auf weiteren Plattformen wie dem mobilen Systemen und dem Desktop zur Verfügung stellen will. Eine Neuimplementierung für jedes System kann jedoch sehr aufwendig sein. In diesem Talk zeigt Fabian Gosebrink wie man eine Angular-Applikation so entwickelt, dass man sie mit Cordova auch auf mobile Systeme und mittels Electron auch auf den Desktop portieren kann. Hierbei werden auch die nativen Funktionen der Plattformen angesprochen, sodass am Ende eine Codebasis für alle Plattformen benutzt werden kann.
In recent times Angulars ecosystem gained a set of reactive primitives to help people create fully reactive fully zone-less applications. This brings not only a major performance impact but also new opportunities to structure logic and introduce architecture. In this talk we will get introduced to 3 new things: Push Pipe, Let Directive, State. Those things in combination enable us to create reactive components and applications without the hassle of handling subscriptions, or composition. As a major benefit, we get more robust, more maintainable and also dramatically more performant applications. A nice side effect of it is, we can easily switch to run zone-less. After this talk, you know all the details of the new set of tools as well as how to leverage their possibilities. Empower yourself to write fully reactive applications with game-changing performance.
Mit Azure DevOps Server 2019 und Azure DevOps Services stellt Microsoft ein neues Format zur Definition von Build- und Release-Pipelines zur Verfügung: YAML. Nebst dem großen Vorteil, die Pipeline-Definition in der Source-Code-Verwaltung zu versionieren und zu branchen, bieten YAML Pipelines viele weitere Vorteile gegenüber der aktuellen Pipeline-Definition. Diese Vorteile werden anhand von Praxisbeispielen demonstriert. Zudem klären wir die Frage, wann sich die Umstellung auf YAML Pipelines lohnt und was dabei beachtet werden muss.
Entity Framework Core 5.0 ist der Nachfolger der Version 3.1 des OR Mappers, die im November 2020 erscheinen soll, Version 4 wird übersprungen. DOTNET-DOKTOR Holger Schwichtenberg wird in diesem Vortrag die Neuerungen der Version 5.0 anhand der aktuellen Vorschauversion zeigen. Geplant ist u. a.:
HTML5 ist überall – im Web, Mobile und natürlich auch auf dem Desktop. Die große Stärke von HTML5 ist nicht nur, dass es Plattform übergreifend unterstützt wird, sondern dass es immer mehr Features aus der Desktopwelt bietet. Dennoch erfordert die Entwicklung von Desktopanwendungen auf Basis von HTML und JavaScript neue Frameworks und Sprachen. Das Open-Source-Projekt Electron.NET verbindet Ihr C#- & ASP.NET-Core-Know-how mit den Möglichkeiten von Electron. In Kombination mit C# und HTML5 können hochperformante Desktop-Geschäftsanwendungen für Windows, Mac und Linux entwickelt werden. In diesem Vortrag steigen Sie mit den Grundlagen von Electron.NET ein und werden dann mit den wichtigsten Tools und Vorgehensweisen vertraut gemacht. Mit diesen Infos steigen Sie rasch zum versierten Cross-Plattform-Entwickler mit .NET auf.
Mit Azure Functions stellt Microsoft ein flexibles und mächtiges Framework für Serverless Computing bereit, womit skalierbare und reaktive Anwendungen erstellt werden können. Mit Kubernetes Event-driven Applications (KEDA), können Sie Ihre Azure Functions problemlos in einem Kubernetes-Cluster betreiben. Doch KEDA kümmert sich nicht nur um den Betrieb. Durch geschickte Integration von sowohl externen als auch internen Nachrichten- und Ereignissystemen wie Azure Service Bus oder Azure Event Hub skaliert KEDA Ihre Azure Functions automatisch anhand der anfallenden Anfragen. In diesem Vortrag zeigt Thorsten Hans, wie Sie zukunftssichere, skalierbare und reaktive cloud-native Anwendungen erstellen.
Ein abgestürzter Build aufgrund eines SDK-Upgrades sowie der mühsame Weg, einen alten Codestand zu kompilieren, dürfte den meisten bekannt vorkommen. Damit das der Vergangenheit angehört, wird Configuration as Code für die Build-Infrastruktur umso wichtiger. Doch wie mache ich das? VM Images für jede OS- und SDK-Version? Schwerfällig. Docker hingegen ist leichtgewichtig und lässt sich mit modernen SDKs, wie z. B. .NET Core, ideal als Build-Infrastrukturumgebung einsetzen. Dieser Vortrag zeigt, wie Sie Docker in Ihrer Build-Pipeline integrieren, ob als Multicontainer-Build oder einfach als isolierte Umgebung für Build-Instruktionen. Mit Azure Pipelines können wir sogar noch einen Schritt weiter gehen und komplexe Umgebungen mit mehreren Containerinstanzen betreiben, um z. B. einen Integrations- oder Systemtest durchzuführen.
Entity Framework Core Migrations vereinfachen die Arbeit von uns Entwicklern sehr. Dank der Migrations müssen wir seltener SQL schreiben und stimmt die Anwendung immer mit der Datenbank überein. Aber wie so oft gibt es auch hier Stolpersteine und Herausforderungen:
Der Vortrag zeigt anhand von Beispielen aus der Praxis, wie diese vermieden werden können.
Live Verlosung BASTA! 2020 Aussteller Stempelkarte
Liebe Teilnehmer nutzen Sie noch die Zeit und lassen Sie sich Ihre Stempelkarte von 6 Ausstellern der BASTA! abstempeln und werfen Sie die Karte vollständig ausgefüllt in die Losbox am Check In Counter.
Ein Besuch der Aussteller lohnt sich in jedem Fall. Zu gewinnen gibt es Gutscheine für Schulungen, Softwarelizenzen, Gaming-Devices, Gadgets und vieles mehr.
Den Gewinn können Sie gleich vor Ort im Empfang nehmen oder er wird Ihnen persönlich zugeschickt. Wir freuen uns, dass Sie mit dabei sind und wünschen schon jetzt viel Glück.
Online Sponsoren Gewinnspiel auf der BASTA 2020
Ziehung der Gewinner, die am Online-Gewinnspiel teilgenommen haben. Zu gewinnen gibt es:
· DJI Mavic-2-Pro-Drohne im Wert von 1499 €
· Lego Mindstorms EV3-Set im Wert von 350 €
· Beats Solo3 Wireless Bluetooth On-Ear Kopfhörer im Wert von 195 €
In den letzten Jahren hat sich in der Softwareentwicklung viel verändert. Längst geht es nicht mehr darum, wer am schnellsten eine Funktion implementiert, wer den besten Code schreibt. Themen wie Teamarbeit, Cross-Funktionalität und Nutzenoptimierung sind vor allem im Kontext von Agilität immer wichtiger geworden. Diese Vortrag gibt einen Überblick über die Zusammenhänge verschiedener Entwicklungen und erläutert, wie diese Trends einzuordnen sind und was für Softwareentwickler in Zukunft entscheidend sein wird, um wirklich mehr zu erreichen und dabei auch noch Spaß zu haben.
Write once, run anywhere – dieser alte Java-Traum ist dank Webtechnologien längst Realität geworden. Neuerdings haben Cross-Platform-Entwickler aber die Wahl zwischen altbewährten Ansätzen wie Apache Cordova und GitHub Electron, bei denen Web-Apps in native Container verpackt werden, und den neuen Progressive Web Apps (PWA), bei denen eine Webanwendung aus dem Browser heraus installiert wird. Optisch geben sich beide Methoden nicht viel, doch sie unterscheiden sich hinsichtlich der Verteilung und im Funktionsumfang. Electron-Experte Thorsten Hans und PWA-Professional Christian Liebel erklären Ihnen, für welche Anwendungsfälle sich PWAs eignen und wann Sie ergänzend oder alternativ zu Electron oder Cordova greifen sollten.
In Zeiten zunehmender Sicherheitsverletzungen und Einbrüchen in Unternehmensnetzwerken werden sichere Datenaufbewahrung und Schutz von Daten immer wichtiger. Zum einen muss sichergestellt werden, dass Daten im Falle eines Einbruchs nicht gelesen werden können, zum anderen sollte das System damit zurechtkommen, dass Daten gelöscht werden, wenn ein Nutzer einen Löschantrag stellt. Datenbankenmodelle wie Event Sourcing oder Blockchain haben aber den Anspruch, dass Datenfragmente nicht gelöscht werden. Um diese Datenbanken gegen Zugriffe zu sichern und gleichzeitig die Rechte der Nutzer einzuhalten, eignet sich eine Datenverschlüsselung. Das bringt aber auch Komplexität und Latenz mit sich, daher ist eine gute Planung und Architektur nötig. In diesem Vortrag schauen wir uns Secure Event Sourcing an einem Praxisbeispiel an und besprechen die Hürden und Herausforderungen.
Moderne Businessanwendungen sind schon lange nicht mehr langweilig: Daten wollen visualisiert werden und zwar verständlich und ansprechend. Genau dabei helfen Web-Grafik-Engines wie BabylonJS. Sie ermöglichen, 2D-, 3D, Virtual- und Augmented-Reality-Inhalte verständlich darzustellen. Somit lassen sich unter anderem digitale Konzepte visualisieren, konfigurieren und testen – Cross-Plattform und performant. In dieser Session zeigt Max Schulte anhand einer Angular-Anwendung Kernaspekte und Wege sowie einen Architekturansatz, um neue Visualisierungs- und Bedienmöglichkeiten in Ihre Anwendung integrieren zu können.
Ab Version 3.0 unterstützt das Entity Framework Core die erste nichtrelationale Datenbank in Form der Azure CosmosDB. Kenntnisse und Erfahrungen mit dem OR Mapper erleichtern also seitdem auch den Einsatz dieser NoSQL-Datenbank. Wie genau das funktioniert und welche Möglichkeiten es dabei gibt, zeigt Thorsten Kansy in diesem Talk anhand des aktuellen Stands der Technik.
Entwickler und IT-Profis in einem Team zu vereinen macht sie nicht gleich zu einem DevOps-Team. Und selbst wenn sie reibungslos zusammenarbeiten, gibt es immer wieder das Spannungsfeld Sicherheit. Build- und Release-Pipelines kümmern sich um die Erstellung und Bereitstellung Ihrer Anwendung, aber sind Ihre Pipelines sicher? Und der Code, den Sie bereitstellen? Bei vielen Releases pro Tag können Sicherheitsverantwortliche nicht jedes Release überprüfen. Bei Rugged DevOps geht es darum, Ihre Assets und Ihre Pipeline zu sichern und Sicherheit wirklich in Ihren DevOps-Prozess einzubetten. In diesem Vortrag führe ich Sie durch die Konzepte von Rugged DevOps, die Risiken, denen Unternehmen derzeit ausgesetzt sind, und spreche über einige Strategien und Tools, die Ihnen helfen können, Sicherheit in Ihre DevOps-Prozesse zu integrieren.
Ausfallsichere und skalierbare Anwendungen zu betreiben und dabei ohne Ausfallzeiten neue Versionen Ihrer Software bereitzustellen, klingt auch heute noch für viele Lösungsanbieter nach einem schönen Traum. Mit Kubernetes und insbesondere den verwalteten Angeboten wie Azure Kubernetes Service (AKS) ist dieser Traum für Viele in greifbare Nähe gerückt. In diesem Tagesworkshop erklärt Thorsten Hans die Eigenschaften, Bestandteile und Möglichkeiten, die Kubernetes als Anwendungsplattform bietet. Nach dem Einstieg und den ersten Schritten mit Kubernetes werden Sie lernen, wie existierende Anwendungsbestandteile im Container-Orchestrator bereitgestellt und effektiv betrieben werden können. Essenzielle Themen, wie beispielsweise automatische Skalierung, der Umgang mit sensitiven Konfigurationsdaten, oder die Verwendung von externen, persistenten Datenspeichern, werden anhand von Beispielen aus der Praxis erläutert und können von Ihnen selbst erprobt werden.
Stellen Sie sich vor, Sie schreiben Ihre moderne Businessanwendung genau einmal – und sie läuft auf Windows, macOS, Linux, Android, iOS und im Browser. Diese Anwendungen werden per Fingertippen aus dem Browser auf dem Gerät installiert, können Pushbenachrichtigungen empfangen und funktionieren auch dann, wenn das Wi-Fi im Zug gerade mal wieder nicht funktioniert. Das klingt fantastisch? Dank Progressive Web Apps (PWA) wird all das Wirklichkeit. Mit Hilfe moderner Webtechnologien wird aus einer Webanwendung eine App, die einer nativen App in nichts nachsteht. In diesem Workshop zeigen wir anhand eines durchgängigen Beispiels die Grundlagen der PWA-Entwicklung mit Googles Single Page App Framework Angular, bei denen Sie aktiv mitentwickeln können. Jeder geht mit einer PWA nach Hause!