ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΡΠΈΠ²ΠΎ ΠΏΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ .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