.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 software destroying
Щодо старе, але дуже актуальне відео про те, що варто розробляти сервіси так, щоб їх можна було легко видалити і переписати наново замість того, щоб витрачати час і розбиратися, як там що працює всередині.

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 problem of 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/консолідація packages which will perform incredibly fast comparing to doing it via UI. Still excited about it ?

Ось, власне, стаття, у якій описані деталі — How NuGet resolves package dependencies . Тому дуже рекомендую. Якщо є питання — пишіть в коментарях, спробую допомогти.


? Попередній випуск: .NET Дайджест #23

Опубліковано: 11/08/18 @ 07:00
Розділ Різне

Рекомендуємо:

Ruby/Rails дайджест #20: перша передрелізна версія Rails 5.2.1, версія 2.0.0 гема Pundit, цікаві матеріали з RubyHACK 2018
Финстрип Липень 2018. 65К. Літо — доходи стоять
Введення в культуру DevOps: вибираємо стратегію тестування
Кар'єрні рішення на прикладі комп'ютерних ігор початку 2000-х
DOU Проектор: tabXpert – Chrome-розширення для ефективного управління вкладками