В выпуске: .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
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 на собственную реализацию сокетов, что сделало его заметно более шустрым, особенно на Линуксе.
.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
Time, Clocks, and the Ordering of Events in a Distributed System
Effective Aggregate Design Part I, Part II, Part III
Отличное эссе о принципах проектирования аггрегатов. Хотел бы, чтобы оно попалось мне несколько лет назад. Очень рекомендую почитать.
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
Books
Introducing GitHub, 2nd Edition
Designing Event-Driven Systems
Разное
What is „concurrent” access to mutable state?
The Cost of Living Around the World 2018
Украина на третьем месте среди самых дешевых стран.
Интересные твиты
„I don’t ask permission to write a test or refactor any more than I ask permission to write an if statement or a for loop” -@RonJeffries quoted at #sgcanMarch 26, 2018
Do you know that you can use decostruction syntax to initialize more than one field/property in expression-body constructor?
And, BTW, the C# compiler is smart enough to eliminate a deconstruction code from the final assembly;)April 8, 2018
know the difference between forward and back slashOctober 20, 2016
„Pipelined plaintext, that’s fast, but the performance would be gone making a database call?”
Non-pipelined, db query -> html escape -> utf-8 encode -> format into html doc and table: 3.12Gb/s on a commodity server!
#aspnetcore is a 🚀
/cc @shayrojanskyJune 7 2018
← Предыдущий выпуск: .NET Дайджест #22