29 DotNext 2017 Piter Talks: From .NET Standard and Containers to Security and Performance
When we started making DotNext, we took the path of technical hardcore and brain complexity, just like we did in the Java world with Joker and JPoint. Years passed, the conference grew, we received feedbacks and made the conference better, changed the program, reports, speakers ... And recently, talking to people on DotNext and JPoint, I came to an interesting conclusion - .NET developers do not want a hardcore hardcore:
But there are many other interesting things:
Therefore, we decided to build a new conference program a little differently. It turns out that DotNext 2017 Piter is no longer just hardcore. And if not hardcore, then who? See details under the cut.
Jon Skeet - Back to basics: the mess we've made of our fundamental data types
Keynote, dedicated to the relationship of the complex external world and data represented only by zeros and ones. Admit it, you also take numbers, text, and date / time for granted? Almost any data model relies on these pillars. The question is, why is it that Stack Overflow is full of questions about “broken” arithmetic? In his report, John (who has already answered almost 40 thousand questions on SO ) will try to tell what is wrong with our world, find the guilty and offer several ways to “not get burned” on this all.
If you think Jon Skeet is just another developer, read an interview with Johnabout the current state of .NET, C # and the IT community. The depth and completeness of his answers to seemingly simple questions are surprising.
Sasha goldshtn Goldshtein - The Performance Investigator's Field Guide After completing hundreds of research studies, you will begin to develop your own patterns in working with productivity, which will save time and effort in finding a problem. In this report, Sasha will talk about his experience with productivity gained over the years of work on completely different projects, and the tools that he used.
First of all, we will look at anti-methods for conducting performance investigations and a checklist designed to find bottlenecks in Windows and .NET applications. After that, Sasha will go on to review the ideal tool for analyzing performance and show how close the applications that are available today are ideal: we will talk primarily about Event Tracing for Windows, but besides him, Sasha will show several of his own open source developments, which he previously did not present reports.
At the end of the talk, we’ll talk about dashboards and visualization, as well as non-obvious mistakes that can be made when working with statistics. Along the way, you will see some of the most difficult tasks that the speaker has solved in his lifetime.
I want to add on my own behalf that Sasha is an outstanding performance engineer, who invariably occupies top positions at all conferences, wherever he speaks. We interviewed him several times, I advise you to read: a couple of videos of 2015 , videos of 2016 , interviews about working with performance and an overview of .NET performance engineer tools .
Alexey Savvateev - The Collective Responsibility
Challenge A cool keynote, who blew up the scene at JPoint 2017, comes to St. Petersburg on DotNext!
Imagine that you are a policeman on duty in a turnstile room. Stowaways try to jump through the turnstiles, you catch them. You are one, there are many of them. Is it possible for them to set such “rules of the game” so that they dare not try to jump, even if it is known in advance that you will catch only one of them in any case? It turns out, perhaps.
Report on mathematics and game-theoretic foundations behind the invention of various ingenious control algorithms. In this report, you will not receive an academic education, you will not learn how to write more efficient algorithms. However, you will get an idea of how rich the mathematical apparatus is.
If you are interested in the topic of game theory, if you are interested in learning about studies for which the Nobel Committee on Economics has already been awarded several times, then welcome to the report.
While Microsoft continues to work actively on the platform, reports on the latest changes will steadily occupy a well-deserved place in our programs. This time the theme is .NET Core, ASP.NET Core, .NET Standard, etc. devoted to 5 reports.
Adam Ralph - What is .NET Standard?
.NET Standard is one of the new technologies released in the host of open source .NET initiatives. In fact, it is a more efficient and more convenient framework for cross-platform work with NuGet packages, which in the future will be able to solve many problems associated with the development of universal cross-platform projects. Let's see how it all works and how it fits with .NET Core - Adam Ralph, the FakeItEasy maintainer and xBehave.net, the author of the first .NET Core Framework pull-request, will help us.
Alex Thissen - Shifting gears for .NET: a changed application landscape for .NET developers
Recently, distributed systems have been actively moving from the server structure to container clusters and serverless computing. All this can be done on .NET in Docker, although the first steps are not so simple. In this talk, Alex Thissen will show how you can build .NET development around Docker and containers. You will learn how to create, package, deploy, and execute .NET applications with Visual Studio 2017, .NET Core, and Docker.
Denis Ivanov - ASP.NET Core Linux Applications in Production
With the release of .NET Core, all the features of the Unix world have been opened for us. Our applications can run perfectly on Linux - which means we can use Docker and Kubernetes to deploy our services. The report will show how to make a REST service on ASP.NET Core and run it in production on the Kubernetes platform.
We will discuss the details of the ASP.NET Core infrastructure and several popular libraries, we will talk about multithreading, optimization and caching to reduce the response time of the service. Let's discuss how to solve the problems of the build of the application and the assembly of Docker images. And, of course, we will dwell on what Kubernetes is, how this technology can be useful to us, and how to use it.
Roland Guijt - Authentication and Authorization in ASP.NET Core
You most likely already know how applications work on ASP.NET Core, but authentication and authorization are a completely different matter, as Microsoft has a lot to do with ASP.NET Core security. ASP.NET Identity allows authentication for one application and includes many features out of the box, but is it not better to use centralized authentication with tokens based on OpenId Connect?
In the report, Roland will give a detailed answer to this question, and also show how the ASP.NET Core identity and IdentityServer frameworks help write your token service. As a result, you will know how you can implement authentication on ASP.NET Core, how to prepare them correctly and how to enforce authorization rules in applications on ASP.NET Core.
Mikhail yu5k3 Shcherbakov - Under the hood of ASP .NET Core Security
Few articles have been written on the built-in ASP .NET Core security mechanisms. Even the official documentation has gaps. In the report, Mikhail will go over the main components related to security and will analyze how it works inside. If you use the good old ASP.NET, then information on the internal structure of security components and best practices for their use will be useful to you.
The report will answer the questions: How are modern anti-XSS mechanisms implemented and how to use them correctly in ASP.NET Core? How to work with cookies and what pitfalls there can meet? How was the CSRF protection mechanism rewritten? How to work with cryptographic algorithms? I will also tell you about the experience of participating in bug bounty in searching for vulnerabilities in ASP .NET Core. I recommend that you refresh the attacks from the OWASP Top 10 list before the report.
Working with productivity is a delicious piece of cake called "software development", not easy to prepare and support. Although performance is not among the top three requirements for an application / service, it can be the feature that makes your project special. The second aspect that I have included in this section is working with memory, leaks can not only lead to a decrease in speed, they can generally hang your application and even cause a bunch of headaches.
In addition to the review keynote from Sasha Goldstein, which we spoke about above, we have 4 more reports that will allow you to make your code faster and more efficient.
Andrey DreamWalker Akinshin - Let's talk about memory
In many modern applications, performance is limited by memory. In this case, measuring the speed of work and writing the correct benchmarks is not so simple: too many factors affect the final time of work. In this report, we will talk about what constitutes memory performance.
We will discuss both low-level hardware (CPU cache and its associativity, alignment, store forwarding, 4K aliasing, prefetching, cache / page splits, cache bank conflicts, etc.), and more .NET-specific problems (pinned objects, large object heap, heap features in the full .NET Framework and Mono).
Alexey Vereshchagin - Remote profiling of applications on CoreCLR for Linux ARM
CoreCLR now provides support for various architectures and systems, including Linux. The problem is that full profiling support for .NET Core is only for Windows, and for other systems, CoreCLR profiling options are very limited.
The report will focus on a tool that allows you to get information about the execution of C # code in the CoreCLR environment running on Linux ARM architecture. In particular, we can get hot methods by operating time and allocated memory, hot path (hot path), CPU load, information about the operation of JIT and GC. All this can be done directly from Visual Studio 2015.
Alexey will talk about the opportunities that their tool provides, and about the profiling approaches that he used.
Dina Goldshtein - Automate Your Dumps
When the application crashes, you have several ways to understand what happened: reproduce the problem, read the logs or analyze the crash dump. In the dump you will find with what exception the application has fallen, the state of flows, objects of interest to you, synchronization mechanisms, and much more ... But only if you do this with pens, you have to spend tens of hours on it - I don’t think that the developer has anything to do except how to dig dumps.
It would be nice to automate all this, or at least sort it into groups: by components, types of caches, or whatever. In this talk, Dean will talk about how to automate .NET crash dump analysis for Windows and Linux, and how to do deeper analysis with WinDbg, lldb, and SOS.
Sergey Shchegrikovich - 5 commandments PDB
PDB-files - an important part of the debugging infrastructure. I will show how to effectively use PDB files, demonstrate their structure and why they are needed, show a new format for debugging symbols in .NET Core. The report will help save time on creating a debugging infrastructure within the company.
Dmitry Ivanov - JetBrains Rider IDE: Personal Effectiveness Skills for a .NET Programmer
If you are a lazy (in a good way) programmer who wants to save work time and not engage in routine activities again and again, then this report is for you. You will learn the new features of the IDE and look at other familiar angles from a different angle. It will be about how to use Rider under different operating systems and how it surpasses the usual IDE. All features will be shown in the context of work tasks.
We will proceed from the assumption that the main task of the programmer is not to knock on the keys, but to think. It logically follows from here that the main task of the IDE is to help as quickly as possible materialize the thought that came to your mind. Let's try to optimize the number of actions per unit of meaning. We will solve the problem of how to achieve the desired result in the minimum number of clicks.
Mete Atamel - Containerised ASP.NET Core apps with Docker and Kubernetes
Kubernetes is an open container orchestration platform that has long been available on Linux. ASP.NET Core allows you to use it under .NET. This report will show how to wrap ASP.NET Core applications in Docker containers and deploy them to Kubernetes. In addition, talk about automating application deployment, scaling, creating a cluster of containers and other convenient features that open with Kubernetes.
Maarten Balliauw - NuGet beyond Hello World
NuGet packages everyone uses, right? This is not difficult. Do you know how to create and share your packages? How will all this be affected by the advent of .NET Standard? How to version, create, publish and distribute a package?
At the talk, Maartin will answer these questions and dive even deeper: how to use the client’s NuGet API to retrieve data from NuGet? Can I build my plugin system for the application on the basis of NuGet? What gems are hidden in the NuGet server API? Can I create a full copy of NuGet.org?
Tomas Herceg - Entity Framework Core: Is It Ready Yet?
This report is intended for those who have not yet worked with the Entity Framework Core, but would like to try. It will talk about the differences between Entity Framework and Entity Framework Core, as well as which framework to choose for your project. Let's discuss the features of the Entity Framework Core, which Thomas will show in demos on different DBMSs under Linux.
In addition, we’ll take a look at the project’s roadmap, discuss what to expect in the future and whether all of this is ready to work on production.
Nikita kekekeks Tsukanov - AvaloniaUI: the first cross-platform XAML UI framework with support for .NET Core
We live in a time when support for the whole zoo of platforms and devices became relevant, and .NET Core and .NET Standard greatly simplify portability of C # code between them. However, each platform offers some proprietary development tools, most of which are mentally stuck somewhere in the days of MFC and Windows Forms, and do not have normal integration with C #. There are a number of solutions trying to bring these platforms to a common denominator and at least somehow add adequate support for MVVM and XAML-layout, but all this somehow ... not that.
.NET developers are accustomed to the ability to style controls anywhere and anytime, to the normal bindings of lists to collections, a rich system of binders. This is exactly what the AvaloniaUI project, which continues the ideas of WPF in open source, is trying to achieve. The project path is not easy and thorny - in addition to the system for working with bindings, you need to independently process all user input, think about how to efficiently render the interface, deal with various kinds of absurdities from the target platforms, and deal with the differences between rendering systems (for example, because of inadequate ArcTo support had to adapt the code originally designed to correctly render the orbits of comets).
About what you have already managed to achieve, what you can already use from this, as well as difficulties and interests in developing such a project - a report from one of its participants.
Dmitry Soshnikov - Affordable Artificial Intelligence on the .NET Platform: From Chat Bots and Cognitive Services to Deep Neural Networks The
breakthroughs made in recent years in the field of artificial intelligence and machine learning make it relatively easy to solve cognitive tasks that used to seem miraculous: recognizing a person's age by face natural language understanding or machine translation. We will look at how these tasks can be solved differently on the .NET platform: from the use of ready-made cognitive services, to training on big data and deep training on neural networks using the Microsoft Cognitive Toolkit. ATTENTION: some demos will be shown on F # and may break your brain.
Filip W - Building code analysis tools with the .NET Compiler Platform (Roslyn)
We love Resharper and its great code analysis capabilities. This talk will focus on how to use the new Roslyn .NET compiler to build your inspections and code analyzers. With the help of your inspections, you can control the codestyle, find logical errors in the code, reassign files in the project. Philip will tell you what it takes to create your own code analyzer and tell you if all this can work somewhere else, except in Visual Studio.
You can read more about Philip and what he does in our Habrainterview with him .
Mikhail Filippov - Learning to cook MSBuild
MSBuild is a tool that .NET developers use every day, but not everyone understands how it works and what it can do. This continues until the developers encounter incomprehensible problems or limitations of what Visual Studio allows you to configure, and at that moment they begin to try to customize their build scripts. And then their build starts to slow down or work incorrectly.
The report will tell you how to solve various problems that arise when writing your own build task. It shows how to debug problems in the build - and how to build a project using MSBuild, not only on Windows.
The approach section is never empty either. In the end, choosing the right pattern / architecture can save you from dozens of hours of suffering: whether it's the ease of maintaining, expanding, or debugging your project.
The problem is that if everything can be studied at the top, then applying this or that approach often with the first attempt fails. The reports in this section are designed to show you the most modern approaches and give you enough knowledge so that you do not step on the most popular and painful rakes (the most terrible rake, as you know, are children’s).
Igor Yakovlev - AOP in .NET
Have you ever heard of aspect-oriented programming? Have you tried to put it into practice? We will start from the very beginning - with theoretical definitions and examples of problems where AOP can help; We’ll try to figure out how to get AOP under .NET. We will also solve several problems using the main AOP frameworks: we will learn how to generate wrappers at runtime through dynamic proxies, we will implement code in our classes at compile time using PostSharp and Fody. We’ll take Nemerle for a snack, and after sorting out scary-looking words like “quasi-quoting” and “metaprogramming”, we will solve our AOP problems without frameworks!
Dylan Beattie - Real World REST and Hands-On Hypermedia
So you’ve flashed your HTTP API, and it seems to even work. And then it turns out that you have a whole heap of problems: to replace the email address you need to replace Customer completely, rendering the basket requires 25 API calls, rendering a web page makes 50 HTTP requests, and how now to look for bottlenecks?
The REST architecture is understandable, but not every developer can translate REST principles into really working code. In this report, Dylan will show you the REST elements, one way or another connected with hypermedia and the HATEOAS principle (“hypermedia as the engine of application state”) - and tell you why this is all important and why you need to implement all this in your system. Let's look at the tools that help you design, deploy, and debug your HTTP APIs and a little bit of a walk.
Vagif Abilov - Typed or dynamic API? Give me two!
For several years now, developers have been able to use dynamic language elements in C #, so by defining an API you can make it available for data of type dynamic. It is tempting for individual scenarios, but I really would not want to give up the benefits of statically defined types. Can two approaches be combined? If so, how laborious is it? And how to avoid duplication of code with this approach? The report is devoted to all this. The presentation is based on the principles of implementing a multi-platform open source library written and supported by Vagif himself. The presentation process shows how to write a similar library from scratch for processing SQL commands.
Jon Skeet - The changing state of immutability C #
Report on what immutability is, what are its advantages and how it developed in C #. In addition, we will talk about various options for implementing immutable objects / states, their pros and cons (especially in cases where the language or platform does not encourage it), as well as what will happen to this concept in the future.
Igor Labutin - Inter-process conversations: reasons and methods
More and more modern applications go beyond the simple "one process" model. Developers find many reasons why one process is not enough. And if there are several of them, the problem of transferring information between them arises. .NET provides several ways to organize this interaction. We will consider where the task of communicating processes may come from, discuss ways to solve it, and also make sure that not all methods are equally convenient and useful.
Mikhail Samarin - Xbox One and HoloLens, platforms for .NET developers
Do you know that if you have the latest version of Visual Studio installed, you can develop for both HoloLens and Xbox One without installing special SDKs or toolkits? These are regular Windows 10 devices for the Universal Windows Platform. Come to the talk and learn about the basics of development for Xbox One and HoloLens, including a live demonstration on real hardware. Learn what you can do with Unity 3D and Windows Mixed Reality, including the innovations of Windows 10 Creators Update.
Adam Sitnik - My awesome journey with Open Source
Until recently, the .NET community was closed, but everything has changed. Now our compiler, our runtime, GC and much more has become open. Have you tried smuggling? Would you like but don’t know where to start? What do you get from OSS and why do you need it? What is not worth doing, but what is worth paying attention to first of all? What projects will make you a good developer? Adam will answer these questions based on his own development experience in Core CLR, BenchmarkDotNet and corefxlab.
Damir Beilkhanov - Xamarin.Forms: features of cross-platform development of mobile applications
We will take a short tour on how to use your .NET + C # skills, experience with XAML, Visual Studio, and Xamarin.Forms to develop native mobile applications for popular platforms. Using an example of a simple cross-platform application, we will get acquainted with its structure, see how things are with the UI, and talk about various kinds of problems that arise in the process of cross-platform development on Xamarin.Forms. Recall a wonderful couple of DI & MVVM, then digress at the tools that facilitate the work of the developer and the development process as a whole. At the end of the report, we will choose a convenient IDE for the Xamarin developer.
Grigory Koshelev - Integration of .NET and Java Virtual Machines
Suppose that the task in the .NET service is to convert XML to PDF, but there is already a time-tested Java solution - Apache FOP. You can rewrite everything in C #, use cross-compilation, or use the Java library directly from Java. You can pick up a Java service and interact with it from a .NET application, or you can try to pick up the same Java service inside a .NET process. The first option is not always suitable: under .NET, infrastructure, monitoring, etc. can be sharpened, operational issues arise. Let's start the Java virtual machine inside the .NET-process, along the way we will deal with Marshal, rake and other nuances of this kind of integration.
That's all, it seems. If you are interested in how the reports are arranged in 3 tracks, see the program on the conference website .
- There is no crazy zoo frameworks whose work must be known at the source level;
- no 5 GC, each of which has its own characteristics;
- the quality of the documentation of the standard library and developed frameworks is on average higher;
- most of the tools work well and performance counters usually don’t lie (I’m mostly talking about the .NET Framework, with Core it’s not so rosy so far);
- the language itself, in the end, is pleasant and understandable (although under the JVM you can use the same Kotlin).
But there are many other interesting things:
- If you work at a low level, memory models do not go anywhere;
- Work on improving performance and optimizing from memory is still with us;
- The platform itself is developing at a tremendous pace - you need to stay informed;
- Cross-platform comes with new tools and new challenges.
Therefore, we decided to build a new conference program a little differently. It turns out that DotNext 2017 Piter is no longer just hardcore. And if not hardcore, then who? See details under the cut.
In the beginning was ... keynote!
Jon Skeet - Back to basics: the mess we've made of our fundamental data types
Keynote, dedicated to the relationship of the complex external world and data represented only by zeros and ones. Admit it, you also take numbers, text, and date / time for granted? Almost any data model relies on these pillars. The question is, why is it that Stack Overflow is full of questions about “broken” arithmetic? In his report, John (who has already answered almost 40 thousand questions on SO ) will try to tell what is wrong with our world, find the guilty and offer several ways to “not get burned” on this all.
If you think Jon Skeet is just another developer, read an interview with Johnabout the current state of .NET, C # and the IT community. The depth and completeness of his answers to seemingly simple questions are surprising.
Sasha goldshtn Goldshtein - The Performance Investigator's Field Guide After completing hundreds of research studies, you will begin to develop your own patterns in working with productivity, which will save time and effort in finding a problem. In this report, Sasha will talk about his experience with productivity gained over the years of work on completely different projects, and the tools that he used.
First of all, we will look at anti-methods for conducting performance investigations and a checklist designed to find bottlenecks in Windows and .NET applications. After that, Sasha will go on to review the ideal tool for analyzing performance and show how close the applications that are available today are ideal: we will talk primarily about Event Tracing for Windows, but besides him, Sasha will show several of his own open source developments, which he previously did not present reports.
At the end of the talk, we’ll talk about dashboards and visualization, as well as non-obvious mistakes that can be made when working with statistics. Along the way, you will see some of the most difficult tasks that the speaker has solved in his lifetime.
I want to add on my own behalf that Sasha is an outstanding performance engineer, who invariably occupies top positions at all conferences, wherever he speaks. We interviewed him several times, I advise you to read: a couple of videos of 2015 , videos of 2016 , interviews about working with performance and an overview of .NET performance engineer tools .
Alexey Savvateev - The Collective Responsibility
Challenge A cool keynote, who blew up the scene at JPoint 2017, comes to St. Petersburg on DotNext!
Imagine that you are a policeman on duty in a turnstile room. Stowaways try to jump through the turnstiles, you catch them. You are one, there are many of them. Is it possible for them to set such “rules of the game” so that they dare not try to jump, even if it is known in advance that you will catch only one of them in any case? It turns out, perhaps.
Report on mathematics and game-theoretic foundations behind the invention of various ingenious control algorithms. In this report, you will not receive an academic education, you will not learn how to write more efficient algorithms. However, you will get an idea of how rich the mathematical apparatus is.
If you are interested in the topic of game theory, if you are interested in learning about studies for which the Nobel Committee on Economics has already been awarded several times, then welcome to the report.
.NET Platform: Present and Future
While Microsoft continues to work actively on the platform, reports on the latest changes will steadily occupy a well-deserved place in our programs. This time the theme is .NET Core, ASP.NET Core, .NET Standard, etc. devoted to 5 reports.
Adam Ralph - What is .NET Standard?
.NET Standard is one of the new technologies released in the host of open source .NET initiatives. In fact, it is a more efficient and more convenient framework for cross-platform work with NuGet packages, which in the future will be able to solve many problems associated with the development of universal cross-platform projects. Let's see how it all works and how it fits with .NET Core - Adam Ralph, the FakeItEasy maintainer and xBehave.net, the author of the first .NET Core Framework pull-request, will help us.
Alex Thissen - Shifting gears for .NET: a changed application landscape for .NET developers
Recently, distributed systems have been actively moving from the server structure to container clusters and serverless computing. All this can be done on .NET in Docker, although the first steps are not so simple. In this talk, Alex Thissen will show how you can build .NET development around Docker and containers. You will learn how to create, package, deploy, and execute .NET applications with Visual Studio 2017, .NET Core, and Docker.
Denis Ivanov - ASP.NET Core Linux Applications in Production
With the release of .NET Core, all the features of the Unix world have been opened for us. Our applications can run perfectly on Linux - which means we can use Docker and Kubernetes to deploy our services. The report will show how to make a REST service on ASP.NET Core and run it in production on the Kubernetes platform.
We will discuss the details of the ASP.NET Core infrastructure and several popular libraries, we will talk about multithreading, optimization and caching to reduce the response time of the service. Let's discuss how to solve the problems of the build of the application and the assembly of Docker images. And, of course, we will dwell on what Kubernetes is, how this technology can be useful to us, and how to use it.
Roland Guijt - Authentication and Authorization in ASP.NET Core
You most likely already know how applications work on ASP.NET Core, but authentication and authorization are a completely different matter, as Microsoft has a lot to do with ASP.NET Core security. ASP.NET Identity allows authentication for one application and includes many features out of the box, but is it not better to use centralized authentication with tokens based on OpenId Connect?
In the report, Roland will give a detailed answer to this question, and also show how the ASP.NET Core identity and IdentityServer frameworks help write your token service. As a result, you will know how you can implement authentication on ASP.NET Core, how to prepare them correctly and how to enforce authorization rules in applications on ASP.NET Core.
Mikhail yu5k3 Shcherbakov - Under the hood of ASP .NET Core Security
Few articles have been written on the built-in ASP .NET Core security mechanisms. Even the official documentation has gaps. In the report, Mikhail will go over the main components related to security and will analyze how it works inside. If you use the good old ASP.NET, then information on the internal structure of security components and best practices for their use will be useful to you.
The report will answer the questions: How are modern anti-XSS mechanisms implemented and how to use them correctly in ASP.NET Core? How to work with cookies and what pitfalls there can meet? How was the CSRF protection mechanism rewritten? How to work with cryptographic algorithms? I will also tell you about the experience of participating in bug bounty in searching for vulnerabilities in ASP .NET Core. I recommend that you refresh the attacks from the OWASP Top 10 list before the report.
Performance and memory optimizations
Working with productivity is a delicious piece of cake called "software development", not easy to prepare and support. Although performance is not among the top three requirements for an application / service, it can be the feature that makes your project special. The second aspect that I have included in this section is working with memory, leaks can not only lead to a decrease in speed, they can generally hang your application and even cause a bunch of headaches.
In addition to the review keynote from Sasha Goldstein, which we spoke about above, we have 4 more reports that will allow you to make your code faster and more efficient.
Andrey DreamWalker Akinshin - Let's talk about memory
In many modern applications, performance is limited by memory. In this case, measuring the speed of work and writing the correct benchmarks is not so simple: too many factors affect the final time of work. In this report, we will talk about what constitutes memory performance.
We will discuss both low-level hardware (CPU cache and its associativity, alignment, store forwarding, 4K aliasing, prefetching, cache / page splits, cache bank conflicts, etc.), and more .NET-specific problems (pinned objects, large object heap, heap features in the full .NET Framework and Mono).
Alexey Vereshchagin - Remote profiling of applications on CoreCLR for Linux ARM
CoreCLR now provides support for various architectures and systems, including Linux. The problem is that full profiling support for .NET Core is only for Windows, and for other systems, CoreCLR profiling options are very limited.
The report will focus on a tool that allows you to get information about the execution of C # code in the CoreCLR environment running on Linux ARM architecture. In particular, we can get hot methods by operating time and allocated memory, hot path (hot path), CPU load, information about the operation of JIT and GC. All this can be done directly from Visual Studio 2015.
Alexey will talk about the opportunities that their tool provides, and about the profiling approaches that he used.
Dina Goldshtein - Automate Your Dumps
When the application crashes, you have several ways to understand what happened: reproduce the problem, read the logs or analyze the crash dump. In the dump you will find with what exception the application has fallen, the state of flows, objects of interest to you, synchronization mechanisms, and much more ... But only if you do this with pens, you have to spend tens of hours on it - I don’t think that the developer has anything to do except how to dig dumps.
It would be nice to automate all this, or at least sort it into groups: by components, types of caches, or whatever. In this talk, Dean will talk about how to automate .NET crash dump analysis for Windows and Linux, and how to do deeper analysis with WinDbg, lldb, and SOS.
Sergey Shchegrikovich - 5 commandments PDB
PDB-files - an important part of the debugging infrastructure. I will show how to effectively use PDB files, demonstrate their structure and why they are needed, show a new format for debugging symbols in .NET Core. The report will help save time on creating a debugging infrastructure within the company.
Tools and frameworks
Dmitry Ivanov - JetBrains Rider IDE: Personal Effectiveness Skills for a .NET Programmer
If you are a lazy (in a good way) programmer who wants to save work time and not engage in routine activities again and again, then this report is for you. You will learn the new features of the IDE and look at other familiar angles from a different angle. It will be about how to use Rider under different operating systems and how it surpasses the usual IDE. All features will be shown in the context of work tasks.
We will proceed from the assumption that the main task of the programmer is not to knock on the keys, but to think. It logically follows from here that the main task of the IDE is to help as quickly as possible materialize the thought that came to your mind. Let's try to optimize the number of actions per unit of meaning. We will solve the problem of how to achieve the desired result in the minimum number of clicks.
Mete Atamel - Containerised ASP.NET Core apps with Docker and Kubernetes
Kubernetes is an open container orchestration platform that has long been available on Linux. ASP.NET Core allows you to use it under .NET. This report will show how to wrap ASP.NET Core applications in Docker containers and deploy them to Kubernetes. In addition, talk about automating application deployment, scaling, creating a cluster of containers and other convenient features that open with Kubernetes.
Maarten Balliauw - NuGet beyond Hello World
NuGet packages everyone uses, right? This is not difficult. Do you know how to create and share your packages? How will all this be affected by the advent of .NET Standard? How to version, create, publish and distribute a package?
At the talk, Maartin will answer these questions and dive even deeper: how to use the client’s NuGet API to retrieve data from NuGet? Can I build my plugin system for the application on the basis of NuGet? What gems are hidden in the NuGet server API? Can I create a full copy of NuGet.org?
Tomas Herceg - Entity Framework Core: Is It Ready Yet?
This report is intended for those who have not yet worked with the Entity Framework Core, but would like to try. It will talk about the differences between Entity Framework and Entity Framework Core, as well as which framework to choose for your project. Let's discuss the features of the Entity Framework Core, which Thomas will show in demos on different DBMSs under Linux.
In addition, we’ll take a look at the project’s roadmap, discuss what to expect in the future and whether all of this is ready to work on production.
Nikita kekekeks Tsukanov - AvaloniaUI: the first cross-platform XAML UI framework with support for .NET Core
We live in a time when support for the whole zoo of platforms and devices became relevant, and .NET Core and .NET Standard greatly simplify portability of C # code between them. However, each platform offers some proprietary development tools, most of which are mentally stuck somewhere in the days of MFC and Windows Forms, and do not have normal integration with C #. There are a number of solutions trying to bring these platforms to a common denominator and at least somehow add adequate support for MVVM and XAML-layout, but all this somehow ... not that.
.NET developers are accustomed to the ability to style controls anywhere and anytime, to the normal bindings of lists to collections, a rich system of binders. This is exactly what the AvaloniaUI project, which continues the ideas of WPF in open source, is trying to achieve. The project path is not easy and thorny - in addition to the system for working with bindings, you need to independently process all user input, think about how to efficiently render the interface, deal with various kinds of absurdities from the target platforms, and deal with the differences between rendering systems (for example, because of inadequate ArcTo support had to adapt the code originally designed to correctly render the orbits of comets).
About what you have already managed to achieve, what you can already use from this, as well as difficulties and interests in developing such a project - a report from one of its participants.
Dmitry Soshnikov - Affordable Artificial Intelligence on the .NET Platform: From Chat Bots and Cognitive Services to Deep Neural Networks The
breakthroughs made in recent years in the field of artificial intelligence and machine learning make it relatively easy to solve cognitive tasks that used to seem miraculous: recognizing a person's age by face natural language understanding or machine translation. We will look at how these tasks can be solved differently on the .NET platform: from the use of ready-made cognitive services, to training on big data and deep training on neural networks using the Microsoft Cognitive Toolkit. ATTENTION: some demos will be shown on F # and may break your brain.
Filip W - Building code analysis tools with the .NET Compiler Platform (Roslyn)
We love Resharper and its great code analysis capabilities. This talk will focus on how to use the new Roslyn .NET compiler to build your inspections and code analyzers. With the help of your inspections, you can control the codestyle, find logical errors in the code, reassign files in the project. Philip will tell you what it takes to create your own code analyzer and tell you if all this can work somewhere else, except in Visual Studio.
You can read more about Philip and what he does in our Habrainterview with him .
Mikhail Filippov - Learning to cook MSBuild
MSBuild is a tool that .NET developers use every day, but not everyone understands how it works and what it can do. This continues until the developers encounter incomprehensible problems or limitations of what Visual Studio allows you to configure, and at that moment they begin to try to customize their build scripts. And then their build starts to slow down or work incorrectly.
The report will tell you how to solve various problems that arise when writing your own build task. It shows how to debug problems in the build - and how to build a project using MSBuild, not only on Windows.
Approaches and Patterns
The approach section is never empty either. In the end, choosing the right pattern / architecture can save you from dozens of hours of suffering: whether it's the ease of maintaining, expanding, or debugging your project.
The problem is that if everything can be studied at the top, then applying this or that approach often with the first attempt fails. The reports in this section are designed to show you the most modern approaches and give you enough knowledge so that you do not step on the most popular and painful rakes (the most terrible rake, as you know, are children’s).
Igor Yakovlev - AOP in .NET
Have you ever heard of aspect-oriented programming? Have you tried to put it into practice? We will start from the very beginning - with theoretical definitions and examples of problems where AOP can help; We’ll try to figure out how to get AOP under .NET. We will also solve several problems using the main AOP frameworks: we will learn how to generate wrappers at runtime through dynamic proxies, we will implement code in our classes at compile time using PostSharp and Fody. We’ll take Nemerle for a snack, and after sorting out scary-looking words like “quasi-quoting” and “metaprogramming”, we will solve our AOP problems without frameworks!
Dylan Beattie - Real World REST and Hands-On Hypermedia
So you’ve flashed your HTTP API, and it seems to even work. And then it turns out that you have a whole heap of problems: to replace the email address you need to replace Customer completely, rendering the basket requires 25 API calls, rendering a web page makes 50 HTTP requests, and how now to look for bottlenecks?
The REST architecture is understandable, but not every developer can translate REST principles into really working code. In this report, Dylan will show you the REST elements, one way or another connected with hypermedia and the HATEOAS principle (“hypermedia as the engine of application state”) - and tell you why this is all important and why you need to implement all this in your system. Let's look at the tools that help you design, deploy, and debug your HTTP APIs and a little bit of a walk.
Vagif Abilov - Typed or dynamic API? Give me two!
For several years now, developers have been able to use dynamic language elements in C #, so by defining an API you can make it available for data of type dynamic. It is tempting for individual scenarios, but I really would not want to give up the benefits of statically defined types. Can two approaches be combined? If so, how laborious is it? And how to avoid duplication of code with this approach? The report is devoted to all this. The presentation is based on the principles of implementing a multi-platform open source library written and supported by Vagif himself. The presentation process shows how to write a similar library from scratch for processing SQL commands.
Jon Skeet - The changing state of immutability C #
Report on what immutability is, what are its advantages and how it developed in C #. In addition, we will talk about various options for implementing immutable objects / states, their pros and cons (especially in cases where the language or platform does not encourage it), as well as what will happen to this concept in the future.
Igor Labutin - Inter-process conversations: reasons and methods
More and more modern applications go beyond the simple "one process" model. Developers find many reasons why one process is not enough. And if there are several of them, the problem of transferring information between them arises. .NET provides several ways to organize this interaction. We will consider where the task of communicating processes may come from, discuss ways to solve it, and also make sure that not all methods are equally convenient and useful.
And something else ...
Mikhail Samarin - Xbox One and HoloLens, platforms for .NET developers
Do you know that if you have the latest version of Visual Studio installed, you can develop for both HoloLens and Xbox One without installing special SDKs or toolkits? These are regular Windows 10 devices for the Universal Windows Platform. Come to the talk and learn about the basics of development for Xbox One and HoloLens, including a live demonstration on real hardware. Learn what you can do with Unity 3D and Windows Mixed Reality, including the innovations of Windows 10 Creators Update.
Adam Sitnik - My awesome journey with Open Source
Until recently, the .NET community was closed, but everything has changed. Now our compiler, our runtime, GC and much more has become open. Have you tried smuggling? Would you like but don’t know where to start? What do you get from OSS and why do you need it? What is not worth doing, but what is worth paying attention to first of all? What projects will make you a good developer? Adam will answer these questions based on his own development experience in Core CLR, BenchmarkDotNet and corefxlab.
Damir Beilkhanov - Xamarin.Forms: features of cross-platform development of mobile applications
We will take a short tour on how to use your .NET + C # skills, experience with XAML, Visual Studio, and Xamarin.Forms to develop native mobile applications for popular platforms. Using an example of a simple cross-platform application, we will get acquainted with its structure, see how things are with the UI, and talk about various kinds of problems that arise in the process of cross-platform development on Xamarin.Forms. Recall a wonderful couple of DI & MVVM, then digress at the tools that facilitate the work of the developer and the development process as a whole. At the end of the report, we will choose a convenient IDE for the Xamarin developer.
Grigory Koshelev - Integration of .NET and Java Virtual Machines
Suppose that the task in the .NET service is to convert XML to PDF, but there is already a time-tested Java solution - Apache FOP. You can rewrite everything in C #, use cross-compilation, or use the Java library directly from Java. You can pick up a Java service and interact with it from a .NET application, or you can try to pick up the same Java service inside a .NET process. The first option is not always suitable: under .NET, infrastructure, monitoring, etc. can be sharpened, operational issues arise. Let's start the Java virtual machine inside the .NET-process, along the way we will deal with Marshal, rake and other nuances of this kind of integration.
That's all, it seems. If you are interested in how the reports are arranged in 3 tracks, see the program on the conference website .