.NET дайджест #23: улучшения производительности в .NET Core 2.1, принципы проектирования аггрегатов

В выпуске: .NET Core Hidden Gems, Event sourcing using Kafka, Version control improvements in Rider 2018.1, книга „Introducing GitHub”.

.NET

Allocation-free awaitable async operations with ValueTask<T> and ValueTask

Migrating from aspnetcore docker repos to dotnet

.NET Core Docker Samples

System.IO in .NET Core 2.1 sneak peek

Custom directory enumeration in .NET Core 2.1

Go vs C#, part 1: Goroutines vs Async-Await

Develop ASP.NET Core Applications in a Container

Performance traps of ref locals and ref returns in C#

Performance Improvements in .NET Core 2.1
Помимо прочего, значительные улучшения производительности и уменьшения аллокаций в асинхронных методах и в работе с сетью (думаю, этому очень рад Dmitriy Onykyyenko).

ASP.NET Core 2.1.0-preview2: Improvements to the Kestrel HTTP server
Kestrel перевели с libuv на собственную реализацию сокетов, что сделало его заметно более шустрым, особенно на Линуксе.

Announcing .NET Core 2.1

.NET Core Hidden Gems
David Fowler рассказывает про разные полезности в новом релизе.

ObjectMethodExecutor
Оттуда же метод, позволяющий эффективно вызывать методы объектов, полученных через Reflection посредством построения Expression.

Framework Benchmarks Round 16
Производительность некоторых фреймворков, в том числе ASP.NET Core упирается в сетевой стек. И по остальным параметрам ASP.NET Core показывает невероятно крутые результаты. Ссылка в статье на результаты почему-то сломана, поэтому вот.

Architecture

Event sourcing using Kafka
Есть нюансы, так как Kafka не поддерживает Optimistic Concurrency.

Reactive DDD: Modeling Uncertainty

Comparing AWS Lambda performance of Node.js, Python, Java, C# and Go

Information Space-Time

Time, Clocks, and the Ordering of Events in a Distributed System

Effective Aggregate Design Part I, Part II, Part III
Отличное эссе о принципах проектирования аггрегатов. Хотел бы, чтобы оно попалось мне несколько лет назад. Очень рекомендую почитать.

Vertical Slice Architecture

Running Apache Kafka on Kubernetes

Tools

Introducing the JetBrains redistributable of MSBuild
Кастомный билд для тех, у кого нет лицензии на VS.

Learning best practices and language features using Rider code inspections

Remediating the May 2018 Git Security Vulnerability

Introducing the ReSharper performance series
Серия статей о планах и подходах для улучшения производительности R#.

Version control improvements in Rider 2018.1

UI

Pixelpusher: Real-time peer-to-peer collaboration with React

dom-testing-library

Books

Introducing GitHub, 2nd Edition

Designing Event-Driven Systems

Разное

Developer Survey Results 2018

What is „concurrent” access to mutable state?

The Cost of Living Around the World 2018
Украина на третьем месте среди самых дешевых стран.

People are not „Resources”

Emoji code review

Интересные твиты


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

LinkedIn

2 комментария

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

Спасибо за дайджест. Последние результаты на techempower впечатлили конечно — но я не уверен что это из-за managed sockets в net core, последний раз месяц- полтора назад у них наоборот по производительности они были хуже чем libuv, ну и в целом я сомневаюсь, что можно написать сейчас что-то новое для сетевого I/o что будет лучше работать чем годами проверенные решения, что есть стандартом. Скорее всего дело таки в том, что они оптимизировали аллокации. Видел обсуждения на GitHub, что пилят новый Json сериализатор, который в 4 раза быстрее newtonsoft — думаю, что им есть что ещё оптимизировать учитывая, что последний впилен в asp.net core из коробки и даже ещё не собирается переходить на spanы

В одном из бенчмарков для in-process сокет сервера производительность выросла в 12 раз с 228.03 ms до 17.93 ms. Плюс Span APIs, да.

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