ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΡΠΈΠ²ΠΎ ΠΏΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ .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
Orleans - ΡΠΆΠ΅ ΡΡΠ΅ΡΠΈΠΉ Π³ΠΎΠ΄ Π²ΡΡ Ρ
ΠΎΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΆΠΈΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΡΠΎΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π°ΠΊΡΠΎΡΠΎΠ² (ΡΡΠ° ΡΠ΅ΠΌΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ°ΡΠ°Ρ ΠΊΡΡΠ°ΡΠΈ, ΡΠΎΠ΄ΠΈΠ»Π°ΡΡ Π΅ΡΡ Π² 70-ΡΠ΅ Π³ΠΎΠ΄Ρ).
ΠΠΊΡΠ°ΡΡΠ΅, ΠΏΡΠΎΡΡΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΈ Π΄Π»Ρ ΡΠ΅Ρ ΠΊΡΠΎ Π½Π΅ Π²ΠΊΡΡΡΠ΅, ΡΡΡΡ ΠΈΠ΄Π΅ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°: Π²ΡΠ½Π΅ΡΡΠΈ Π»ΠΎΠ³ΠΈΠΊΡ ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² (grain's) Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ (silo = Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎ "Π±ΡΠ½ΠΊΠ΅Ρ"), ΠΊΠΎΡΠΎΡΡΠ΅ (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) ΠΆΠΈΠ²ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·Π»Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΡΠ΅Π΅Π΄Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ. ΠΠ»ΠΈΠ΅Π½Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ ΠΏΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΌΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ, ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ (Π΅ΡΠ»ΠΈ ΡΠ΄ΠΎΡ ΠΎΠ΄ΠΈΠ½ silo - Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ grain ΠΎΠΆΠΈΠ²ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ), Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΡΡΡΠΊΠΈ. Π§ΡΠΎ Π΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ: Π² Orleans ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ compile-time Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΠΊΡΠΈ-DTO Π΄Π»Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ grain'ΠΎΠ² - Π² ΠΎΠ΄Π½ΠΎΠΌ silo ΠΌΠΎΠ³ΡΡ ΠΆΠΈΡΡ grain'Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ API.
ΠΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π΄Π°Π²Π°ΡΡ ΡΡΠΎΠΊ ΠΆΠΈΠ·Π½ΠΈ grain'ΠΎΠ² ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠΉ strategy placement, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΡΠ½ΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ ΠΊΠ°ΠΊ Π΄Π΅Π»ΠΈΡΡ grain's ΠΌΠ΅ΠΆΠ΄Ρ silo ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ grain's ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΠΎΠ΄ΠΈΠ½ silo, grain's Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ - Π² Π΄ΡΡΠ³ΠΎΠΉ). Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π΄Π»Ρ MS DI ΡΡΠΎ Π²ΡΡ ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Configure<T>.
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ persistance Π΄Π»Ρ grain'ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΊΠΎΡΠΎΠ±ΠΎΡΠ½ΡΠΉ, Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ (ΡΠ°ΠΌ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ), ΡΡΠΎ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ ΡΡΠΎ grain ΠΏΡΠΈ ΡΠ΅ΡΡΠ°ΡΡΠ΅ silo ΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΎΠΆΠΈΠ²Π°Π΅Ρ Ρ ΡΠΆΠ΅ Π½ΡΠΆΠ½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΎΡΡ Π΄Π»Ρ ΡΠ΅Π»Π΅Π³ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΠ΅ΠΉ ΠΎΡΠ»ΠΈΡΠ½ΠΎ Π»ΠΎΠΆΠ°ΡΡΡΡ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π°ΠΊΡΠΎΡΠΎΠ² - state Π°ΠΊΡΠΎΡΠ° Ρ ΡΠ°Π½ΠΈΡΠ° Π² ΠΠ, ΠΏΠΎ id ΡΠ·Π΅ΡΠ° ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ ΠΏΠΈΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΠ, ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ·Π΅ΡΠ° grain Π΄ΠΈΡΠΏΠΎΠ·ΠΈΡΠ° (Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ Π±Π΅Π· ΡΠ°Π±ΠΎΡΡ Π°ΠΊΡΠΎΡΠ° Π·Π°Π΄Π°ΡΡΡΡ) ΠΈ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ - Ρ ΠΎΡΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΡΠ·Π΅ΡΠΎΠ² Π°ΠΊΡΠΎΡΠΎΠ² ΠΆΠΈΠ²ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ silo.
ΠΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠ΅ ΡΡΠΈ Π³ΠΎΠ΄Π° Microsoft Π΄ΠΎΠ»ΠΎΠΆΠΈΠ» Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΠΏΠΎΠ»ΡΠΎΡΠ° Π΄Π΅ΡΡΡΠΊΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², Π½Π°ΠΏΠΈΡΠ°Π» ΠΏΡΠΈΠ»ΠΈΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΠ°ΠΊΠΆΠ΅ Π½ΠΈΠΊΡΠ΄Π° Π½Π΅ Π΄Π΅Π»ΠΈΡΡ tutorials (ΠΈ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ ΡΠ°ΠΌ 2017ΠΉ Π³ΠΎΠ΄ - ΠΎΠ½ΠΈ ΠΏΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ), ΠΏΡΠΈΠΊΡΡΡΠΈΠ» ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, ΠΏΡΠΈΡΠ΅ΡΠ°Π» ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π» Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π‘Π°ΠΌ Microsoft ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Orleans ΠΊΠ°ΠΊ Π±Π°ΠΊΠ΅Π½Π΄ Π΄Π»Ρ ΠΈΠ³ΡΡ Halo. Π ΡΠΆΠ΅ Π°ΠΏΠ΄Π΅ΠΉΡΠ½ΡΠ» Π΅Π³ΠΎ Π΄ΠΎ .NET 7. ΠΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²ΡΡ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΈΠ²ΠΎ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ - Π»ΡΡΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΄ΠΎΠΊΡ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΉ Π΄Π΅ΡΡΡΠΎΠΊ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² - ΠΎΠ½ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΈ ΠΈΠ·ΠΎΠ±ΠΈΠ»ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ). #dotnet
ΠΠΊΡΠ°ΡΡΠ΅, ΠΏΡΠΎΡΡΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΈ Π΄Π»Ρ ΡΠ΅Ρ ΠΊΡΠΎ Π½Π΅ Π²ΠΊΡΡΡΠ΅, ΡΡΡΡ ΠΈΠ΄Π΅ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°: Π²ΡΠ½Π΅ΡΡΠΈ Π»ΠΎΠ³ΠΈΠΊΡ ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² (grain's) Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ (silo = Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎ "Π±ΡΠ½ΠΊΠ΅Ρ"), ΠΊΠΎΡΠΎΡΡΠ΅ (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) ΠΆΠΈΠ²ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·Π»Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΡΠ΅Π΅Π΄Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ. ΠΠ»ΠΈΠ΅Π½Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ ΠΏΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΌΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ, ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ (Π΅ΡΠ»ΠΈ ΡΠ΄ΠΎΡ ΠΎΠ΄ΠΈΠ½ silo - Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ grain ΠΎΠΆΠΈΠ²ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ), Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΡΡΡΠΊΠΈ. Π§ΡΠΎ Π΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ: Π² Orleans ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ compile-time Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΠΊΡΠΈ-DTO Π΄Π»Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ grain'ΠΎΠ² - Π² ΠΎΠ΄Π½ΠΎΠΌ silo ΠΌΠΎΠ³ΡΡ ΠΆΠΈΡΡ grain'Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ API.
ΠΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π΄Π°Π²Π°ΡΡ ΡΡΠΎΠΊ ΠΆΠΈΠ·Π½ΠΈ grain'ΠΎΠ² ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠΉ strategy placement, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΡΠ½ΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ ΠΊΠ°ΠΊ Π΄Π΅Π»ΠΈΡΡ grain's ΠΌΠ΅ΠΆΠ΄Ρ silo ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ grain's ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΠΎΠ΄ΠΈΠ½ silo, grain's Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ - Π² Π΄ΡΡΠ³ΠΎΠΉ). Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π΄Π»Ρ MS DI ΡΡΠΎ Π²ΡΡ ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Configure<T>.
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ persistance Π΄Π»Ρ grain'ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΊΠΎΡΠΎΠ±ΠΎΡΠ½ΡΠΉ, Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ (ΡΠ°ΠΌ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ), ΡΡΠΎ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ ΡΡΠΎ grain ΠΏΡΠΈ ΡΠ΅ΡΡΠ°ΡΡΠ΅ silo ΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΎΠΆΠΈΠ²Π°Π΅Ρ Ρ ΡΠΆΠ΅ Π½ΡΠΆΠ½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΎΡΡ Π΄Π»Ρ ΡΠ΅Π»Π΅Π³ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΠ΅ΠΉ ΠΎΡΠ»ΠΈΡΠ½ΠΎ Π»ΠΎΠΆΠ°ΡΡΡΡ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π°ΠΊΡΠΎΡΠΎΠ² - state Π°ΠΊΡΠΎΡΠ° Ρ ΡΠ°Π½ΠΈΡΠ° Π² ΠΠ, ΠΏΠΎ id ΡΠ·Π΅ΡΠ° ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ ΠΏΠΈΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΠ, ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ·Π΅ΡΠ° grain Π΄ΠΈΡΠΏΠΎΠ·ΠΈΡΠ° (Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ Π±Π΅Π· ΡΠ°Π±ΠΎΡΡ Π°ΠΊΡΠΎΡΠ° Π·Π°Π΄Π°ΡΡΡΡ) ΠΈ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ - Ρ ΠΎΡΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½
ΠΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠ΅ ΡΡΠΈ Π³ΠΎΠ΄Π° Microsoft Π΄ΠΎΠ»ΠΎΠΆΠΈΠ» Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΠΏΠΎΠ»ΡΠΎΡΠ° Π΄Π΅ΡΡΡΠΊΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², Π½Π°ΠΏΠΈΡΠ°Π» ΠΏΡΠΈΠ»ΠΈΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΠ°ΠΊΠΆΠ΅ Π½ΠΈΠΊΡΠ΄Π° Π½Π΅ Π΄Π΅Π»ΠΈΡΡ tutorials (ΠΈ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ ΡΠ°ΠΌ 2017ΠΉ Π³ΠΎΠ΄ - ΠΎΠ½ΠΈ ΠΏΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ), ΠΏΡΠΈΠΊΡΡΡΠΈΠ» ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, ΠΏΡΠΈΡΠ΅ΡΠ°Π» ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π» Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π‘Π°ΠΌ Microsoft ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Orleans ΠΊΠ°ΠΊ Π±Π°ΠΊΠ΅Π½Π΄ Π΄Π»Ρ ΠΈΠ³ΡΡ Halo. Π ΡΠΆΠ΅ Π°ΠΏΠ΄Π΅ΠΉΡΠ½ΡΠ» Π΅Π³ΠΎ Π΄ΠΎ .NET 7. ΠΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²ΡΡ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΈΠ²ΠΎ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ - Π»ΡΡΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΄ΠΎΠΊΡ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΉ Π΄Π΅ΡΡΡΠΎΠΊ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² - ΠΎΠ½ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΈ ΠΈΠ·ΠΎΠ±ΠΈΠ»ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ). #dotnet
Docs
Orleans overview - .NET
An introduction to .NET Orleans.
π₯2
Π ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠ΅ΠΌΡ - Π΅ΡΡ Π΄Π²Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π° Π°ΠΊΡΠΎΡΠ°Ρ
, ΠΏΡΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠ΅Π³ΠΎ Ρ.ΠΊ. Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π½ΠΈ Π² ΠΆΠΈΠ²ΡΡ
Π½ΠΈ Π² ΡΠ΅ΡΡΠΎΠ²ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
, Π½ΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ.
Akka.NET - Π·Π°ΡΠ²Π»ΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎ capability ΡΡΠΎ ΠΏΠΎΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Akka Ρ Java/Scala ΠΈ ΠΎΠ½ΠΎ ΡΠΌΠ΅Π΅Ρ 50 million msg/sec on a single machine. Small memory footprint; ~2.5 million actors per GB of heap, ΡΡΠΎ ΠΏΡΡΠΌΠΎ ΡΠ°ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠ΅ΠΉ-tutorial'ΠΎΠ² (ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΠ°ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ):
ΠΠ΅ΠΏΠ»ΠΎΡ ΠΎΠ΅ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ + ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ.
Actor-Model System with Akka.
Working with Akka.NET and Akka.Cluster
First steps, Calling actors from another actor ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ A.BrandΓ£o Lustosa
Proto.Actor - Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ (ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Orleans ΠΈΠ»ΠΈ Akka), Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ Π»ΠΈΠ±ΠΎ ΡΠ΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΈΠΌΠ΅ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Ρ Π²Π°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ°ΠΌ ΡΡΡΠΊ 30, Π½Π° Π»ΡΠ±ΠΎΠΉ Π²ΠΊΡΡ. Π’ΠΎΠΆΠ΅ ΡΠΌΠ΅Π΅Ρ persistence ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π² ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ΅ΡΡΠ° ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΡΠ±Π΅ΡΠ° ΠΈΠ»ΠΈ Consul.
#dotnet
Akka.NET - Π·Π°ΡΠ²Π»ΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎ capability ΡΡΠΎ ΠΏΠΎΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Akka Ρ Java/Scala ΠΈ ΠΎΠ½ΠΎ ΡΠΌΠ΅Π΅Ρ 50 million msg/sec on a single machine. Small memory footprint; ~2.5 million actors per GB of heap, ΡΡΠΎ ΠΏΡΡΠΌΠΎ ΡΠ°ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠ΅ΠΉ-tutorial'ΠΎΠ² (ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΠ°ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ):
ΠΠ΅ΠΏΠ»ΠΎΡ ΠΎΠ΅ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ + ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ.
Actor-Model System with Akka.
Working with Akka.NET and Akka.Cluster
First steps, Calling actors from another actor ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ A.BrandΓ£o Lustosa
Proto.Actor - Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ (ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Orleans ΠΈΠ»ΠΈ Akka), Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ Π»ΠΈΠ±ΠΎ ΡΠ΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΈΠΌΠ΅ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Ρ Π²Π°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ°ΠΌ ΡΡΡΠΊ 30, Π½Π° Π»ΡΠ±ΠΎΠΉ Π²ΠΊΡΡ. Π’ΠΎΠΆΠ΅ ΡΠΌΠ΅Π΅Ρ persistence ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π² ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ΅ΡΡΠ° ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΡΠ±Π΅ΡΠ° ΠΈΠ»ΠΈ Consul.
#dotnet
π2