Интересное чтиво про производительность .NET 7 - судя по всему некоторые проекты могут получить буст на десятки процентов, просто обновившись до .NET 7 #dotnet #start
https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/
https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/
Microsoft News
Performance Improvements in .NET 7
.NET 7 is fast. Really fast. This post deep-dives into hundreds of performance improvements that contributed to that reality.
Лёгкая, понятная и удобная штука нарисовать простые временнЫе диаграммы #ui #tools
https://swimlanes.io/
https://swimlanes.io/
👍1
MagicOnion - RPC Framework based on gRPC, по заверениям автора - быстрый и компактный. У того же автора есть MessagePipe (pipeline сообщений) и MemoryPack (бинарный сериализер, который в 10 раз быстрее MessagePack). #dotnet
🔥1
Отличная штука для реверс-инжиниринга протоколов, данных и даже исполнимых файлов (включая пост-обработку и экспорт) #tools
https://github.com/WerWolv/ImHex
https://github.com/WerWolv/ImHex
Длинночтиво по структурам .net, garbage collector и другим кишкам от Maoni Stephens (главной разработчицы GC в .NET) #dotnet
https://github.com/Maoni0/mem-doc
https://github.com/Maoni0/mem-doc
Решение задачи коммивояжера с помощью самоорганизующихся карт на #python
https://github.com/diego-vicente/som-tsp
https://github.com/diego-vicente/som-tsp
Удивительно красивый проект - вероятностный язык программирования, в котором программы представляют собой комбинации правил перезаписи, а вывод выполняется посредством распространения ограничений. С полным объяснением как это происходит, на примере генерации рандомных правдоподобных зданий #dotnet
https://github.com/mxgmn/MarkovJunior
https://github.com/mxgmn/MarkovJunior
Интересный подход к хранению дополнительных данных в enum дотнета. Используется #sourcegenerator для compile-time генерации исходников. #dotnet
https://github.com/MMaximus111/StaticDictionaries
https://github.com/MMaximus111/StaticDictionaries
👍2
Design Patterns Library - с несколькими примерами на C# по каждому паттерну #dotnet
upd: взгляд с другой стороны
upd: взгляд с другой стороны
MassTransit - отличная шина сообщений, которая умеет работать как InMemory (например внутри монолита), так и использовать RabbitMQ/Azure/SQS для микросервисной архитектуры. Вообще думаю, что если есть шанс масштабирования проекта - можно пилить CQRS сразу с использованием MassTransit - потом будет значительно легче распилить на микросервисы и задействовать вышеуказаные брокеры сообщений.
Умеет всё, что полагается - адресную и broadcast отправку сообщений, хорошее логирование и интеграцию в MS DI, возможность навесить интерцепторы (например для диагностики) и т.д. Также есть возможность назначить сообщениям correlation id, если множество сообщений имеет отношение к какой-то одной операции. Уже есть встроенный mediator, который тоже интегрируется соответственно как с MS DI так и с MassTransit. Есть пакет Automatonymous, который представляет собой state-машину для реализации в т.ч. паттерна Saga.
Вообщем проект живёт и развивается, все детские болячки уже вылечены. Настоятельно рекомендуется к использованию :) #dotnet
upd: вдогонку - твиттер-тред по настройке RabbitMQ
Умеет всё, что полагается - адресную и broadcast отправку сообщений, хорошее логирование и интеграцию в MS DI, возможность навесить интерцепторы (например для диагностики) и т.д. Также есть возможность назначить сообщениям correlation id, если множество сообщений имеет отношение к какой-то одной операции. Уже есть встроенный mediator, который тоже интегрируется соответственно как с MS DI так и с MassTransit. Есть пакет Automatonymous, который представляет собой state-машину для реализации в т.ч. паттерна Saga.
Вообщем проект живёт и развивается, все детские болячки уже вылечены. Настоятельно рекомендуется к использованию :) #dotnet
upd: вдогонку - твиттер-тред по настройке RabbitMQ
Регулярно читая в соседних каналах боль людей, которые используют штатные EF Core миграции - никак не могу донести до них и понять, почему они не используют прекрасный инструмент FluentMigrator.
В нём тоже есть всё что нужно, но это всё не требует костылей и телодвижений - все миграции являются code first. Помимо штатных средств работы с полями, таблицами, индексами - и если возникнет нужда сделать что-либо очень специфичное (например провести конвертацию данных во время миграции) - можно сделать и это да, внутри миграции и внутри транзакции. Ну и плюсом - миграции из коробки поддерживаются для полутора десятков СУБД. Использовал FluentMigrator лично на нескольких проектах, свои новые проекты (если они подразумевают работу с БД) - всегда начинаю с FluentMigrator :)) #dotnet
В нём тоже есть всё что нужно, но это всё не требует костылей и телодвижений - все миграции являются code first. Помимо штатных средств работы с полями, таблицами, индексами - и если возникнет нужда сделать что-либо очень специфичное (например провести конвертацию данных во время миграции) - можно сделать и это да, внутри миграции и внутри транзакции. Ну и плюсом - миграции из коробки поддерживаются для полутора десятков СУБД. Использовал FluentMigrator лично на нескольких проектах, свои новые проекты (если они подразумевают работу с БД) - всегда начинаю с FluentMigrator :)) #dotnet
👍1🔥1