Conference for DevOps, Software Architects and Engineers. Register until August, 22!
×Закрыть

.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 😊

Вот, собственно, статья, в которой описаны детали — How NuGet resolves package dependencies. Поэтому очень рекомендую. Если есть вопросы — пишите в комментариях, попробую помочь.


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

LinkedIn

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

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

Спасибо за дайджест и удачной дальнейшей миграции :)

У нас первая попытка была еще в сентябре-октябре, когда только появился .NET Standard 2.0. До этого не хватало многих API. Но там была проблема и с reference assembly и с build targets которые поправили/добавили только спустя несколько месяцев и у нас время попробовать снова появилось только вот недавно. Отдельные сервисы у нас крутятся на .NET Core уже довольно долго, но само ядро системы пока все еще на Full Framework, так что дальше миграция пойдет сильно проще, спасибо 😊.

Ну тогда будем ждать статью о опыте миграции на реальной крупной прод системе :)

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