.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

Consistency Models

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

Announcing TypeScript 3.0

Разное

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 минут обязательно стоит посмотреть, чтобы понимать, что нужно для хорошего рефакторинка. Дальше больше вода, но все равно можно глянуть.

События

26-27 октября в Киеве пройдет коференция .NET Fest 2018. Организаторы поделились 10%-й скидкой на билеты по промокоду DOUDIGEST.

Как мы мигрировали

В этом дайджесте материала меньше, чем обычно. Лето ведь. Поэтому я решил поделиться радостью: мы с командой наконец-то решились перевести проект на 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
Похожие статьи:
[Шлях стажера — постійна рубрика, в якій IT-спеціалісти діляться своїм досвідом стажувань як у закордонних, так і в українських...
Внимание, это официальный тренинг от ScrumAlliance, проводящийся на русском языке. Тренинг завершается допуском к онлайн-тесту для...
Детальну аналітику про ІІІ квартал 2023 року читайте за посиланням. Відповідно до даних Нацбанку, у вересні обсяг ІТ-експорту...
DOU регулярно публікує списки запитань для співбесід — і цього разу наша стаття присвячена професії User Experience Designer (UI/UX)....
Телекоммуникационный оператор МТС сообщил о завершении проекта по строительству собственной сети спутниковой связи...
Яндекс.Метрика