Imagine a wonderland where reference types aren't implicitly 'nullable'... Somewhere where you explicitly need to define them as nullable, just like you do with value types. Imagine no unnecessary null-checks, while getting warnings in your IDE where you should check for nulls. No more NullReferenceExceptions!
Since C# 8 you can opt-in for this utopian experience!
Let's go down the rabbit hole of the non-nullable reference types and discover all of its goodness. It's more than just adding a '?' here or a '!' there.
Space is a team tool that integrates chats, meetings, git hosting, automation, and much more. It has a HTTP API that lets you integrate third party apps and workflows. That API is huge, though!
In this session, we'll focus on just the API. You will see how we built the .NET SDK for Space, and how we make that massive API more digestible. You will see how we used code generation, and various C# language features, to incrementally make the API feel like a real .NET SDK.
We'll walk through the setup and features of EF Core 5 and discuss some of the pitfalls development teams might fall into that cost them time and problems.
Some of the issues are technical and some are stubbornly organizational.
Async and await are now common elements of .NET ecosystem. Do you know how they work? Do you know what is synchronization context, how to wait for async void methods or how to implement custom task scheduler?
In this talk, I show internals of async and await. I present state machine created by the compiler, consider allocation issues and show typical deadlock scenarios. We will see how to call async methods from synchronous code, how to wait for async void, how to implement custom synchronization context or task scheduler to handle exceptions, and how to run task without allocation at all.
Level 400, very intense session.
An identity provider enables you to do centralized authentication with single sign-on using industry standards. Cloud services are great as long as you don't need customization beyond of what it offers. This is where creating your own with IdentityServer comes in.
I'll show you the ins and outs of creating the service but not before I make sure you understand the terminology around it. Once you get the basics we'll get into beyond the basics mode and I'll show you some of the other marvelous things that a custom identity provider brings.
After this session you're ready to implement a identity provider in ASP.NET Core that supports authentication across your organization.
Azure API Management is the gatekeeper to our data and processes, and as such it's really important that we set this up securely. But how do we know which features of API Management will allow us to reach our goal? And how should we implement them in such a way that we stay secure, while still providing the best experience for our developers?
This session will show you how to set up an API Management environment, using real life use cases. You will learn how to expose and protect your services, which policies help make our life easier, and how to handle your application lifecycle management.
We've all been using online video conferencing tools over the past few months. Some of us use Teams, others use Zoom.
Many of these platforms are built on WebRTC, even though we might not realize it, nor do we know how it works.
In this session I'll introduce you to WebRTC, how it can be used and show you how to use it in a browser.
There are multiple options in Azure to create your resources like VMs, databases or Web Apps. The Azure Resource Manager is one of them and ideal for infrastructure as code scenarios. In this session we will spend a few minutes on the basics of ARM and then quickly go into more depth on the advanced ARM-template topics! First, we will talk about how to organize your templates. As with normal code, we will try to create nicely structured and reusable templates. Linked templates can help tremendously with that so we will dive in those as well. We will look at quite some interesting template functions because they will make our templates more powerful and reusable. KeyVault comes in to play to show you how we can store our secrets or certificates there and have them available during deployment of our infrastructure. Last but not least I will show you how to use the array and object parameters to handle input in more complex scenarios and deploy your templates using Azure DevOps.
Compared to a decade ago, the meaning of authentication has changed significantly. Modern applications not only authenticate users but also rely on authentication for API access and inter-service communication. Authentication mechanisms still include passwords, but also rely on API keys, signed JWT tokens, and cryptographic authenticators. With so many options to choose from, making the right choice becomes a difficult challenge.
In this session, we explore several authentication recipes for different scenarios. We will discuss authentication in API-based applications, microservice architectures, and, of course, modern user authentication scenarios. At the end of this session, you will be able to choose the right authentication mechanism for your application according to current best practices.
Building a multi-tenant PaaS is not a walk in the part, certainly if the platform you are building on is constantly changing.
In this session I'll walk you through the adventure we've been on where you'll learn about the challenges we've had and how we approached them and whether or not our decisions worked out or not.
– How to design for scale
– How to operate the platform
– How to grow a platform mindset and force ownership
– How to provide user-friendly webhooks
– How to roll out changes
– How to design for multi-tenancy
– How to approach constant change
Cloud platforms are never finished so you'd better come prepared.
Reflection is slow, but sometimes this is the only option for dynamically discovering what to do. But with Expressions, you can generate very efficient code from your reflections and get blazingly fast execution. You should come to this session if your code requires reflection and is currently too slow.
I want something you have. You want something I have. It can be a product, a service, money, time, … It’s not rocket science. It’s basic human to human interaction. No IQ required. It’s all about EQ. Understanding the other side of the table and making sure that the other side understands you. It’s not a battle, not because there aren’t any winners, it’s because after a good negotiation we don’t have losers.
Data lakes are becoming more and more mainstream with Azure Data Factory doing the orchestration. Therefore it’s necessary to take data pipeline development to the next level.
In this session you will learn about the advantages of CI/CD and discover how to integrate data factory development with Azure DevOps.
Building cloud-native applications and services that will run in the cloud, both public and private, is an important decision to make in order to achieve continuous delivery, reliability and faster time to market. In this session, we will talk about building cloud-native services for Azure, using the latest version of .NET. What are containers? What is all this Kubernetes talk? Should you use microservices for all your future projects? How do you manage your data? How do you implement logging, metrics and secret management? There will be slides and there will be lots of demos!
So, you want to migrate to Azure? You’ve read the success stories, and you see the benefits yourself.
But just how do you get started? And how do you convince those who don’t see the benefits as you do?
In this talk, we will get started on the Azure development route. Usinga site that communicates with a Web API and then, using message queues and functions, to store data from the user in table storage. And creating the resources needed to deploy the app within the Azure portal!
So that when you leave you can explore for yourself!
Getting your .NET Core application to run in a Docker cluster is only the beginning of a journey. It takes more to build and run your application in Azure using DevOps practices. In this session I will show you how we created a mission critical .NET Core application in a Kubernetes cluster in Azure using Visual Studio 2019 and the Azure DevOps platform. You will learn how to design your .NET application architecture to run on Azure, which software patterns to implement for environment flexibility, how to build Continuous Integration and Deployment pipelines for zero-downtime, provision your Infrastructure declaratively using ARM templates and what to do to integrate metrics and instrumentation in your application for real-time monitoring. I will share our lessons learned, so you can get a jump-start running your own application in a similar way.
Are you working with people in a different location? Do you want to learn how to work and lead your virtual team to a successful resolution and end goal? During this session, you'll receive practical tips for how to lead virtual teams and what you need to know to make your projects and initiatives a success.
Was there ever any doubt that desktop development is alive and kicking? With .NET Core 3.0 all that doubt, if there was any, should melt away like snow in the sun. Let's have a look at all the juicy goodness that .NET Core 3.0 brings to UWP, WPF and even WinForms! We'll also take a look behind the curtain for what's coming in .NET 5. This talk is aimed at developers who have done, or are doing, desktop development and want to see how bright their future shines.
In 2005 Microsoft introduced MVVM as a software architectural pattern to support the development of XAML apps, originally in WPF and later also in Silverlight.
In 2020 the Microsoft.Toolkit.Mvvm package is a modern, fast, and modular .NET Standard MVVM library that runs on any app platform (UWP, WinForms, WPF, MAUI, Uno, and WinUI) and on any runtime (.NET Native, .NET Core, .NET Framework, and Mono) with an API surface that is the same in all these environments.
In this session we'll walk through this brandnew package to discuss and demonstrate its features regarding data binding, commanding, messaging, and dependency injection.
The world is wild about Containers, and so is Azure! Where container support has been part of the Azure platform for almost 3 years now, based on the recent amount of questions I got on the topic, it seems most partners and customers are only looking at it now. Which comes with the related confusion in terminology and capabilities. And that's exactly what I will show you during my session: how to run Docker (DCK) containers in Azure, by using the different Azure Container solutions available. Starting from the basics, moving to more complex architectures and scenarios. And as usual in Peter's sessions, more live demos than PPTX-talk...
This session will give a short introduction to the Python programming language from the perspective of a C# programmer.
We will go over the core Python language and compare its features with C#. Although many things are similar, you will learn about some interesting and surprising differences between the two languages. Along the way, you'll see what makes Python so wonderfully dynamic and so much fun to work with.
Come join us for a tour around C# 9.0, including record types, immutable data types, improved pattern matching, better target typing, and more. In Bart's usual style, this will be a demo-intensive hands-on talk.