.NET дайджест #24: улучшения в Rider и protobuf-net tools, миграция проекта на PackageReference
В выпуске: .NET Container Images, Rest vs. GraphQL, почему шардинг — это непросто, коференция .NET Fest 2018.
.NET
Dissecting new generic constraints in C# 7.3
Staying up-to-date with .NET Container Images
Hosting services in .NET Core console application
System.IO.Pipelines: High performance IO in .NET
How to: Enable and Disable Automatic Binding Redirection
Architecture
Is there any good open source C# sharding framework?
Интересный ответ, почему шардинг — это непросто.
Microservices, events, and upside-down databases
The Proper Care and Feeding of Akka.NET Clusters: Understanding Reachability vs. Membership
Greg Young — The art of destroying software
Относительно старое, но очень актуальное видео о том, что стоит разрабатывать сервисы так, чтобы их можно было легко удалить и переписать наново вместо того, чтобы тратить время и разбираться, как там что работает внутри.
From Secure Messaging to Secure Collaboration
REST vs. GraphQL: A Critical Review
Спорное мнение о том, что GraphQL — для тех, кто не умеет в REST.
Event Sourcing in Action with eBay’s Continuous Delivery Team
Любопытный подход к реализации EventSourcing’а c MongoDB и Akka.
7 best practices for building containers
Goodbye Microservices: From 100s of problem children to 1 superstar
CRDTs and the Quest for Distributed Consistency
Tools
Unit test coverage and continuous testing. Now in Rider!
Пришло счатье к пользователям Райдера. Сильно уступает NCrunch, конечно, но уже что-то. Так как я переполз на Райдер уже больше полутора лет назад, для меня это просто потрясающая новость.
An update on what’s happening with protobuf-net
Еще одна бімба. Теперь можно просто описать сообщение в .proto файле и C# класс будет сгенерен перед компиляцией в /obj папку. Не нужно больше захламлять проект сгенеренными файлами.
Version control improvements in Rider 2018.1
Крутая штука. Полностью перешел на работу с гитом их Райдера. Все невероятно шутро работает даже на больших проектах. До этого пользовался SorceTree и GitKraken.
UI
React Native: A retrospective from the mobile-engineering team at Udacity
Разное
Backdoored images downloaded 5 million times finally removed from Docker Hub
How Good Are Your Estimation Skills?
The State of Developer Ecosystem in 2018
Technical debt isn’t technical — Einar W. Høst
Первые 15 минут обязательно стоит посмотреть, чтобы понимать, что нужно для хорошего рефакторинка. Дальше больше вода, но все равно можно глянуть.
События
Как мы мигрировали
В этом дайджесте материала меньше, чем обычно. Лето ведь. Поэтому я решил поделиться радостью: мы с командой наконец-то решились перевести проект на PackageReference, чтобы дальше мигрировать на .NET Standard/.NET Core. Проект довольно большой — больше ста проектов (простите за тавтологию). Миграция у меня заняла чуть больше дня. Были некоторые трудности с переводом Web API проектов, так как они не поддреживаются из коробки, поэтому применялись некоторые хаки. И какое-то время заняла правильная настройка binding redirects. А в целом все прошло довольно гладко. После этого мигрировал некоторые проекты на .NET Standard 2.0 — все замечательно вместе работает. Я делился впечатлениями в командном чате, вот несколько цитат:
One of the benefits of package reference is that now we’ll predictably get the version of the package if multiple versions are present in the solution. Which makes it easier to deal with binding redirects. Previously assembly could have been overwritten by earlier version and break the redirect setting.
Another cool feature of PackageReference is when you reference project that has a dependency on a package you don’t need to add that other dependency to your project. E.g.: if Model project defines a reference to MongoDB.Driver we don’t have to reference MongoDB.Driver in any other project in the entire solution to use it. Clean.
So migration of projects to .NET Standard was a breathe after the work I’ve been doing past few days. Really happy about it. And more exciting thing is that we can do it gradually when it makes sense for particular project.
With PackageReference it is possible to perform a regex find-and-replace to update/modify package version to update/consolidate packages which will perform incredibly fast comparing to doing it via UI. Still excited about itПохожие статьи:У КПІ імені Сікорського відбувся другий тур виборів ректора. За результатами голосування переміг проректор з навчальної роботи...The economic landscape is changing the way that many companies approach marketing strategies. From the explosion of e-commerce to the heavy reliance on mobile devices, finding the right digital marketing agency has never been more...Смартфон Xiaomi Redmi 3 уже на рынке и эта модель не имеет модной функциональности в виде сканера отпечатков пальцев. Но, похоже, внутри...IT Ukraine Association разом з юридичними партнерами запустили ініціативу Bron’ Legal Support. Проєкт створений, щоб надавати правову допомогу...