📜 ⬆️ ⬇️

29 reports DotNext 2017 Piter: From .NET Standard and containers to security and performance

When we started doing DotNext, we took the path of technical hardcore and brainstorming complexity, just like we did in the Java world with Joker and JPoint. The years went by, the conference grew, we received feedback and made the conference better, changed the program, reports, speakers ... And recently, communicating with people on DotNext and JPoint, I came to an interesting conclusion for myself - .NET developers do not want an uprooted 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 the details under the cut.
')


In the beginning was ... keynote!


Jon Skeet - Back to basics:

Keynout, dedicated to the relationship of a complex external world and data represented only by zeros and ones. Admit it, because you also take numbers, text and date / time for granted? Virtually any data model relies on these pillars. The question is, why is Stack Overflow so full of questions about “broken” arithmetic? In his report, John (who has already answered almost 40 thousand questions to SO ) will try to tell you what is wrong with our world, find the guilty and offer several ways to “not burn yourself” on this whole thing.

If you think that Jon Skeet is just another developer, read the interview with John about the current state of the .NET, C # and IT community. The depth and completeness of his answers to seemingly simple questions is surprising.



Sasha goldshtn Goldshtein - The Performance Investigator's Field Guide

After conducting a hundred performance studies, you will begin to turn out your patterns in working with productivity, saving time and energy on finding a problem. In this report, Sasha will talk about his experience of working with the productivity gained over the years of working on completely different projects and the tools he used.

First of all, we consider the anti-methods for performance investigations and the checklist designed to find bottlenecks in Windows and .NET applications. After that, Sasha will go to the overview of the ideal tool for analyzing performance and show how close to ideal applications are available today: first of all, it’s about Event Tracing for Windows, but apart from him Sasha will show some of his own open source developments, which he previously reports are not presented.

At the end of the report we will talk about deshboards and visualization, as well as unobvious errors that can be made while working with statistical data. Along the way, you will see several of the most difficult tasks that the speaker has decided in his lifetime.

From myself I want to add that Sasha is an outstanding performance engineer who invariably occupies top positions at all conferences, no matter where he speaks. We interviewed him several times, I advise you to familiarize yourself with: a couple of videos of 2015 , videos of 2016 , interviews about working with a performance, and a review of the tools of the .NET performance engineer .



Alexey Savvateev - The task of collective responsibility

The steep keyout that exploded the scene at the JPoint 2017 comes to St. Petersburg on DotNext!

Imagine that you are a police officer on duty in the turnstile hall. The free-riders try to jump through the turnstiles, you catch them. You are one, they are many. Is it possible for them to set such “rules of the game” so that they do not dare to try to jump, even if you know in advance that you will catch only one of them in any case? It turns out possible.

A report on mathematics and game-theoretical foundations that stand behind the invention of various ingenious control algorithms. In this report, you will not get an academic education, you will not learn how to write more efficient algorithms. However, you get an idea of ​​how rich the mathematical apparatus exists.

If you are interested in the topic of game theory, if you are interested in learning about research, for which you have already been awarded the Nobel Committee for Economics award several times, then welcome to the report.



.NET Platform: Present and Future


As long as Microsoft continues to actively work on the platform, reports on the latest changes will consistently occupy a well-deserved place in our programs. This time the topic is .NET Core, ASP.NET Core, .NET Standard, etc. 5 reports are devoted.

Adam Ralph - What is .NET Standard?

.NET Standard is one of the new technologies, released in the assembly 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 is able to solve many problems associated with the development of universal cross-platform projects. Let's see how it all works and how to tally with .NET Core - Adam Ralph, the FakeItEasy maintainer and xBehave.net, the first pull-request adopted by the .NET Core Framework, will help us.



Alex Thissen - Shifting gears for .NET: a changed application landscape for .NET developers

Distributed systems have recently 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 easy to make. In this report, Alex Thissen will show how you can build a .NET development around Docker and containers. You will learn how to create, package, deploy and execute .NET applications using Visual Studio 2017, .NET Core and Docker.



Denis Ivanov - ASP.NET Core Applications for Linux in Production

With the release of .NET Core, all the possibilities of the Unix world have opened up for us. Our applications can work fine on Linux - which means we can use Docker and Kubernetes to deploy our services. The report will explain how to make a REST service on ASP.NET Core and run it in production on the Kubernetes platform.

Let's discuss the details of the ASP.NET Core infrastructure and several popular libraries, let's talk about multithreading, optimization and caching to reduce the service response time. Let's discuss how to solve the problems of the application build and the assembly of Docker images. And, of course, we will dwell in detail 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, except that authentication and authorization is quite another matter, since Microsoft has been able to peel a lot in the field of ASP.NET Core security. ASP.NET Identity allows you to do authentication for one application and includes many features out of the box, but isn't it better to use central authentication with tokens based on OpenId Connect?

In the report, Roland will give a detailed answer to this question, as well as show how the ASP.NET Core identity and IdentityServer frameworks help you write your token service. As a result, you will know what ways you can implement authentication on ASP.NET Core, how to prepare them correctly and how to enforce the rules of authorization in applications on ASP.NET Core.



Mikhail yu5k3 Shcherbakov - Under the hood of ASP .NET Core Security

On the built-in security mechanisms ASP .NET Core written few articles. Even the official documentation has spaces. Michael in the report will go through the main components related to security and will analyze how it works inside. If you are using the good old ASP.NET, then the information on the internal structure of the security components and the best practices for their use will be useful for you.

The report will answer the following 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 can there be? How was the protection mechanism for CSRF 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 to refresh the attacks from the list of OWASP Top 10 before the report.



Performance and Memory Optimization


Work with performance - a delicious piece of cake called "software development", difficult to prepare and support. Although performance is not among the top three required requirements for an application / service, it can become one of the features 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, can generally hang your application and generally cause a lot of headaches.

In addition to the review keyout from Sasha Goldstein, which we talked about above, we have 4 more reports that will allow you to make your code faster and more efficiently.

Andrey DreamWalker Akinshin - Let's talk about memory

In many modern applications, performance rests on memory. Measuring the speed of work and writing the correct benchmarks in this case is not so simple: too many factors affect the total running time. In this report we will talk about what makes up the performance of working with memory.

We will discuss both low-level hardwares (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, features of the heap 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 available only under Windows, and for other systems CoreCLR profiling capabilities are severely limited.

The report will focus on a tool that allows you to get information about the performance of C # code in the CoreCLR environment running on Linux ARM architecture. In particular, we can get hot methods on operating time and allocated memory, hot path, load on the CPU, information on the operation of JIT and GC. All this can be done directly from Visual Studio 2015.

Alexey will tell about the opportunities that their tool provides and about the approaches to profiling 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 some exceptions, the application crashed, the status of threads, interesting objects, synchronization mechanisms, and much more ... But if you do it with pens, you have to spend dozens of hours on it - I don’t think the developer has anything else to do except how to dig digs.

It would be nice to automate all this, or at least sort them into groups: by components, types of crashes or something else. In this report, Dina will explain how to automate the analysis of .NET crash dumps under Windows and Linux, as well as how to make a deeper analysis using WinDbg, lldb, and SOS.



Sergey Shchegrikovich - 5 commandments of the PDB

PDB files are an important part of debugging infrastructure. I will show how to effectively use PDB files, demonstrate their structure and why we need them, show a new format of 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 Efficiency Skills for a .NET Programmer

If you are a lazy (in a good way) programmer who wants to save work time and not do routine work again and again, then this report is for you. You will learn new IDE features and look at other familiar points from the other 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 follows logically that the main task of IDE is to help as quickly as possible to materialize the thought that occurred to you. Let's try to optimize the number of actions per unit of meaning. We will solve puzzles, 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 from Kubernetes.



Maarten Balliauw - NuGet beyond Hello World

NuGet packages are used by everyone, right? It is not difficult. Do you know how to create and share your packages? How will all this affect the appearance of .NET Standard? How to correctly version, create, publish and distribute a package?

At the report, Maartin will answer these questions and go deeper: how to use the NuGet client API to extract data from NuGet? Can I build my own plugin system for an application based on NuGet? What pearls are hidden in the NuGet server API? Can I create a complete 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 discuss the differences between the Entity Framework and the Entity Framework Core, as well as which framework to choose for your project. Let's discuss the Entity Framework Core features that Thomas will show in demos on different DBMSs under Linux.

In addition, we will take a look at the project roadmap, discuss what to expect in the future and whether all this is ready for production.



Nikita kekekeks Tsukanov - AvaloniaUI: the first cross-platform XAML UI framework with .NET Core support

We live in a time when the support of a whole zoo of platforms and devices has become relevant, and .NET Core and .NET Standard greatly simplify the portability of the C # code between them. However, each of the platforms offers some kind of own development tools, and most of them are mentally stuck somewhere in the MFC and Windows Forms times, 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 is somehow ... not that.

.NET developers are accustomed to the ability to stylize controls anywhere and in any way, to normal binding of lists to collections, rich binding system. This is exactly what the AvaloniaUI project is trying to achieve, continuing WPF ideas in open source. The project path is not easy and thorny - besides the system for the work of the bindings, you need to independently handle all user input, think about how to effectively draw the interface, deal with various kinds of absurdities on the part of the target platforms, deal with the differences in rendering systems (because of inadequate ArcTo support had to adapt the code, originally intended for the correct drawing of the orbits of comets).

About what has already been achieved, what you can already use from now, as well as about difficulties and interestingness in developing such a project - a report from one of its participants.



Dmitry Soshnikov - Accessible 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 like a miracle: recognizing a person's age by face, understanding natural language, or machine translation. We will look at how these tasks can be solved differently on the .NET platform: from using ready-made cognitive services to finishing on big data training and deep neural network training using the Microsoft Cognitive Toolkit. WARNING: some demonstrations 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 excellent code analysis capabilities. This talk will discuss how to use the new .NET Roslyn compiler to create your own inspections and code analyzers. With the help of their inspections, you can control the codestyle, find logical errors in the code, reassign files in the project. Philip will tell you what is needed to create your code analyzer and tell you if all this can work somewhere else, except in Visual Studio.

You can read more about Filip and about what he does in our Habrainterview with him .



Mikhail Filippov - Learn 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 are faced with obscure problems or limitations of what Visual Studio allows you to set up, and at this point they begin to try to customize their build scripts. And then their build starts to slow down or work incorrectly.

The report will explain how to solve various problems that arise when writing your own build task. It shows how to debug build problems - and how you can build a project using MSBuild not only on Windows.



Approaches and Patterns


The section on approaches is never empty either. In the end, choosing the right pattern / architecture can save you from dozens of hours of suffering: be it the ease of support, expansion or debugging of your project.

The problem is that if at the top you can learn everything, then applying this or that approach with understanding is often impossible on the first attempt. 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 rakes, as you know, are children).

Igor Yakovlev - AOP in .NET

Have you ever heard of aspect-oriented programming? And tried to use it in practice? We will start from the very beginning - with theoretical definitions and examples of problems, where AOP can help; We will try to figure out how to get AOP under .NET. We will also solve several problems using the main AOP frameworks: learn how to generate wrappers during execution through dynamic proxies, embed code into our classes at compile time using PostSharp and Fody. We'll take Nemerle for a snack, and, having figured out the scary-looking words like “quasi-quotation” and “metaprogramming”, we will solve our AOP problems without frameworks!



Dylan Beattie - Real World REST and Hands-On Hypermedia

Here you have written down your HTTP API, and it even seems to work. And here it turns out that you have a whole bunch of problems: you need to replace Customer completely to replace the email address, the basket needs 25 API calls to render, the web page draws 50 HTTP requests, and how to find the bottlenecks now?

The REST architecture is understandable, but not every developer can translate REST principles into real-world code. In this report, Dylan will show you the elements of REST, one way or another connected with hypermedia and the principle of HATEOAS ("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. Look at the tools that will help you design, deploy, and debug your HTTP APIs and code a little.



Vagif Abilov - Typed or dynamic API? Give two!

For several years, developers can use elements of dynamic languages ​​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 advantages of statically defined types. Is it possible to combine the two approaches? If so, how hard is it? And how with this approach to avoid duplication of the code? This is all about the report. The presentation is based on the implementation principles of a multi-platform open source library written and maintained by Vagif himself. The report shows how to write a similar library from scratch for processing SQL commands.



Jon Skeet - The changing state of immutability C #

A report on what immutability is, what its advantages are and how it developed in C #. In addition, we will talk about the various options for implementing the immutability of 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 - Interprocess conversations: causes 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, there is a problem of transferring information between them. .NET provides several ways to organize this interaction. We will look at where the task of communicating processes may appear, 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 both for HoloLens and Xbox One without installing special SDKs or toolkits? These are the usual Windows 10 devices for the Universal Windows Platform. Come to the report and learn about the basics of development for Xbox One and HoloLens, including a live demonstration on real hardware. Find out what you can do with Unity 3D and Windows Mixed Reality, including the new Windows 10 Creators Update.



Adam Sitnik - My awesome journey with Open Source

Until recently, the .NET community was closed, but everything changed. Now our compiler, our runtime, GC and much more has become open. Have you tried to contribute? Would you like, but do not know where to start? What do you get from OSS and why do you need it? What you should not do, but what should you pay attention to in the first place? 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 mobile application development

Let's take a quick look at how using your .NET + C # skills, experience with XAML, Visual Studio, and Xamarin.Forms to develop native mobile applications for popular platforms. Using the example of a simple cross-platform application, let's take a look at its structure, see how things are going with the UI, talk about various kinds of problems that arise in the process of cross-platform development on Xamarin.Forms. Recall a great couple of DI & MVVM, then we’ll take a look at the tools that facilitate the developer’s work 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 there is a task in the .NET service to convert XML to PDF, but there is already a time-proven solution in Java - Apache FOP. You can rewrite everything in C #, cross-compile, or use the Java library directly from Java. You can raise the Java service and interact with it from a .NET application, or you can try to raise the same Java service inside the .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, let's deal with Marshal, a rake and other nuances of this kind of integration.



That's all, it seems. If you are interested in how the reports are located in 3 tracks, see the program on the conference website .

Source: https://habr.com/ru/post/328448/


All Articles