C#8, .NET 5, DevSecOps, Azure Functions та мікросервіси на конференції .NET fwdays | Online

.NET дайджест #31: релиз .NET Core 3.1, партнёрство Azure и Salesforce, прекращение поддержки .NET Core 2.2

Привет! Меня зовут Андрей Губский, и теперь я буду готовить выпуски .NET дайджеста вместо Андрея Литвинова, благодаря которому этот дайджест и появился на просторах ДОУ.

Расскажу в двух словах о себе. Коммерческой разработкой на .NET я занимаюсь с 2008 года, с 2017 года являюсь Microsoft MVP в категории Developer Technologies, в рамках проекта //devdigest поддерживаю несколько телеграм-каналов посвященных .NET Core, Azure, Xamarin, в 2016 создал сообщество .NET Core Ukrainian User Group, модератором и администратором которого являюсь. Я постараюсь сохранить уровень наполненности и динамики дайджеста, заданный моим тезкой.

Что касается непосредственно дайджеста, то я хотел бы отметить два события, произошедшие в конце этого года, которые показались мне довольно значимыми.

Очевидно, что главным событием декабря в мире .NET можно по праву считать выход в релиз .NET Core 3.1. Это не просто новый минорный релиз, это еще и LTS (Long Term Support) версия, которую Майкрософт будет поддерживать как минимум три года. А это значит, что именно до этой версии стоит обновиться всем, кто сейчас работает на версии 2.2 (поддержка этой версии заканчивается как раз 23 декабря, и, скорее всего, когда вы читаете этот текст, поддержка версии 2.2 уже завершилась).

Вторым событием, которое мне показалось, весьма важным, я бы назвал стратегическое партнерство между Salesforce и Microsoft, которое было подписано еще в ноябре. Azure теперь становится облачным провайдером для Salesforce Marketing Cloud. Microsoft все активнее откусывает кусочки от облачного пирога Amazon.

С остальными событиями и материалами декабря предлагаю ознакомиться ниже.

.NET

The Architecture behind the nopCommerce eCommerce Platform — nopCommerce — система управления интернет-магазинами с открытым исходным кодом, разработанная на ASP.NET Core. В этом видео вам предлагается узнать, как реализована архитектура этой системы.

Introducing the AWS Toolkit for Rider — JetBrains представила набор инструментов для работы с AWS в Rider.

Building Full-stack C# Web Apps with Blazor in .NET Core 3.0 — видео, в котором подробно рассматривается создание full stack приложения на базе Blazor.

Announcing .NET Core 3.1 — анонс .NET Core 3.1 в официальном блоге Microsoft. Стоит обратить внимание на изменения в Windows Forms для .NET Core, из-за которых часть кода может быть несовместима с новой версией. Это касается в первую очередь компонентов DataGrid и MainMenu.

Pulumi: Cloud Infrastructure with .NET Core — Pulumi — это инструмент, который позволяет описывать инфраструктуру, как код. В статье множество примеров использования на C#.

.NET Core 2.2 will reach End of Life on December 23, 2019 — 23 декабря заканчивается жизненный цикл .NET Core 2.2. Не забудьте обновиться до LTS-версии .NET Core 3.1.

Microsoft emits long-term support .NET Core 3.1, Visual Studio 16.4 — а вот для .NET Core 3.1 и Visual Studio 16.4 поддержка продлится гораздо дольше.

ASP.NET Community Standup — Dec 3rd, 2019 — Blazor Update with Daniel Roth — в новом выпуске ASP.NET Community Standup ведущие наглядно рассказали о процессе разработки Blazor-приложения.

We made Windows Server Core container images >40% smaller — если вы все еще не перешли на .NET Core, но вам нужна контейнеризация, то у Майкрософт для вас хорошие новости. Команда разработки Windows Server смогла уменьшить размер docker образов Windows Server на 40%.

What’s New in Rider — вышла новая версия Rider 2019.3 В релизе: поддержка профилирования .NET Core проектов под macOS и Linux, улучшена общая производительность IDE, поддержка Xamarin и C# 8, да в общем все в новой версии улучшено. Качайте и устанавливайте!

Implementing Microservices with gRPC and .NET Core 3.0 — в .NET Core 3.0 на уровне платформы появилась поддержка gRPC. В блоге Auth0 по этому поводу вышла отличная статья с наглядным примером реализации простой системы с использованием gRPC и объяснением основ работы этого фреймворка.

Evolution Software improves hazelnut quality with ML.NET — история успеха: как ML.NET в выращивании фундука помог.

.NET Conf: Focus on Blazor — не пропустите следующую онлайн-конференцию .NET Conf, которая будет посвящена Blazor. Конференция пройдет 14 января 2020 года.

ConfigureAwait FAQ — разбор вопросов про async/await в C#, а также полезные нюансы работы SynchronizationContext, TaskScheduler, ConfigureAwait и многое другое.

jamesmh/coravel — интересный проект, который позволяет значительно облегчить запуск задач по расписанию. Радует удобное декларативное описание запуска задач. Естественно, все на C#.

Gamlor’s Blog: C# Loves Code Patterns — статья, из которой вы узнаете применение паттернов в LINQ, foreach и асинхронных методах.

Avalonia UI Framework — Avalonia 0.9.0 Release — состоялся релиз кросс-платформенного .NET UI-тулкита AvaloniaUI 0.9.

Optimizing garbage collection in a high load .NET service — история отладки сервиса Pyrus и особенности сборки мусора, которые выяснили разработчики во время дебага.

Delegates And Events In C# — тонкости применения делегатов, событий и лямбда выражений в C#.

An Introduction to System.Threading.Channels — введение в System.Threading.Channels — набор структур данных, позволяющий реализовать схему взаимодействия producer/consumer в вашей системе.

Xamarin

The competitive landscape of cross-platform development: Xamarin, Flutter and React Native — cравнение эффективности использования Xamarin, Flutter и React Native с точки зрения бизнеса.

Reactive UI and Reactive Extensions for Xamarin.Forms — обучающее видео про использование Reactive UI и Reactive Extensions в Xamarin.Forms.

Azure

Salesforce announces it’s moving Marketing Cloud to Microsoft Azure — новости почти месяц, но как-то на наших просторах она осталась почти без внимания. Salesforce — компания, которая с 2012 года является мировым лидером рынка CRM-систем. Salesforce Marketing Cloud — ее дочерняя компания, которая теперь переезжает в Azure.

Azure Functions 3.0 go-live release is now available — Azure Functions 3.0 теперь поддерживают .NET Core 3.1.

Effective DevOps—Building a DevOps Culture at Scale — книга Effective DevOps доступна для бесплатного скачивания с сайта Майкрософт.

AWS Lambda vs. Azure Functions: 10 Major Differences — сравнение сервисов Azure Function и AWS Lambda.

Machine Learning, Data Science, Big Data, etc.

Azure Quantum — квантовые вычисления доступны в Azure уже сегодня.

Microsoft scientist accepts Hamburg Prize for Theoretical Physics for quantum contributions — Microsoft Quantum — доктор Маттиас Тройер, исследователь квантовых вычислений в Microsoft, получил одну из самых престижных наград в области теоретической физики в Германии — Гамбургскую премию — за значительный вклад в развитие квантового метода Монте-Карло.

9 Advanced Tips for Production Machine Learning — девять советов для тех, кто начинает работать над проектом, в котором планируется использование машинное обучение, с примерами использования сервисов Azure.

Вместо послесловия

Надеюсь, сегодняшний дайджест был для вас полезным. Буду благодарен за обратную связь. Также буду рад получать от вас ссылки на материалы, которые вы считаете интересными и достойными публикации в дайджесте.

А чтобы не пропустить ничего до выхода следующего выпуска — следите за новостями про .NET, Azure, Xamarin в телеграме. Все главные публикации ДОУ читайте здесь. До встречи в новом, 2020 году, да пребудет с вами Сила!


← Предыдущий выпуск: .NET Дайджест #30

LinkedIn

11 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Если говорить про кросплатформенный десктоп, то это релиз Авалонии.

Если про WinForms, то в .NET Core 3.1 — внесли кое какие изменения , из-за которых часть существующего кода может быть несовместима с этой версией. Это касается компонентов DataGrid и MainMenu.

Что мне нравится в Майкрософт последние 2-3 года это то как они поработали над документацией, примерами кода, обучающими материалами. Реально скорость изучения их технологий стала очень высокой, и просто приятным сам процесс.
Ну и скорость развития всего вокруг. Net core и azure тоже впечатляет.
Пробовал недавно посмотреть на grpc чисто ради интереса — довольно прикольная технология, нужно бы где-то попробовать для коммуникации между микросервисами

Пробовал недавно посмотреть на grpc чисто ради интереса — довольно прикольная технология, нужно бы где-то попробовать для коммуникации между микросервисами

Там есть четкие сценарии, grpc надо аккуратно рассматривать как альтернативу всему взаимодействию — high perf стриминг, транспорт для вызовов между gateway -back end api, сценарии mesh и тд. Сама технология основана на типичных ограничениях rpc протоколов и привносит синхронное взаимодействие между сервисами , что в конечном итоге не спроста есть антипаттерном для бизнес операций в микросервисах.

Да согласен, что куда угодно их применять не стоит :)

Хотелось бы уточнить Ваш комментарий, а именно что gRPC позволяет оперировать именно асинхронными методами работы из коробки.

вот как пример:
docs.microsoft.com/...​lient?view=aspnetcore-3.1

Каждый метод унарной службы в *именованном файле приведет к появлению двух методов .NET для конкретного типа клиента gRPC для вызова метода: асинхронного метода и метода блокировки. Например, GreeterClient существует два способа вызова SayHello:

GreeterClient.SayHelloAsync— вызывает Greeter.SayHello службу асинхронно. Можно ожидать.
GreeterClient.SayHello— вызывает Greeter.SayHello службу и блокируется до завершения. Не используйте в асинхронном коде.

Имелся в виду не sync IO, а синхроноее общение между сервисами (request/response). Хотя gRPC позволяет и асинхронное общение организовывать, но для этого нужно немного больше инфраструктуры написать. Proto.Actor как раз использует gRPC для общения между нодами кластера.

Только акторы тут конечно тоже особо не к месту, работают они одинаково что поверх http что поверх grpc транспорта — там все решает программная модель и их не стоит засовывать просто что бы сделать сихнронные http вызовы асинхронными.
ниже картинка все обьясняющая по поводу grpc и асинхронности, по своему дизайну grpc транспорт и апи будет работает как вариант 1 на картинке при коммуникации между микросервисами.
docs.microsoft.com/...​-across-microservices.png

А Porto.Actor привёл как пример использования gRPC, так-то они по определению асинхронны, да. Тем не менее стримить сообщения по http не с руки.

👏 крутяк, спасибо что перенял эстафету! Уверен, что теперь он выйдет на качественно новый уровень!

Подписаться на комментарии