Добавление функций

Π Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ систСмам Π² производствС трСбуСтся Π½Π΅Ρ‡Ρ‚ΠΎ большСС, Ρ‡Π΅ΠΌ просто сгСнСрированныС endpoints CRUD. Им Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, асинхронная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ задания, публикация событий ΠΈ, Π² сцСнариях SaaS, изоляция ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.


Lino добавляСт эти возмоТности Π² качСствС стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. КаТдая функция обновляСт ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄, добавляСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈ обСспСчиваСт ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ сСрвСрной части, внСшнСго интСрфСйса, ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΈ сохранСния с ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ.

АутСнтификация ΠΈ авторизация

Ѐункция Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ добавляСт основу бСзопасности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ Lino для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ API, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, контроля доступа ΠΊ опСрациям ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ с Π²Π΅Π±-прилоТСниями Blazor. УстанавливаСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

lino feature auth add --service <ServiceName> --module <ModuleName>

Π­Ρ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ lino feature auth add. ΠšΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π²Π΅Ρ‚Π²ΡŒ – это feature auth; CLI Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт псСвдонимы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ feature security ΠΈ feature identity.

Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Lino аутСнтификация ΠΈ авторизация ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° асинхронный ΠΎΠ±ΠΌΠ΅Π½ сообщСниями. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° опСративная: Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ сСрвисов ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ событиями ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, поэтому ΠΏΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ бСзопасности Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ сообщСниями.

Π§Ρ‚ΠΎ просит волшСбник

CLI провСряСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, провСряСт, Π½Π΅ установлСна ​​ли функция, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚, Π³Π΄Π΅ слСдуСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ бСзопасности, ΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ основныС настройки Ρ‚ΠΎΠΊΠ΅Π½Π°.

  • Услуга: слуТба, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ рСсурсы бСзопасности.
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ: Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Ссли выбранная слуТба являСтся ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ.
  • Π‘Ρ€ΠΎΠΊ дСйствия Ρ‚ΠΎΠΊΠ΅Π½Π° доступа: срок дСйствия Π²Ρ‹Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² доступа Π² ΠΌΠΈΠ½ΡƒΡ‚Π°Ρ….
  • ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ срок дСйствия Ρ‚ΠΎΠΊΠ΅Π½Π°: срок дСйствия Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для возобновлСния сСансов.
  • Π’ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² качСствС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ int, long ΠΈΠ»ΠΈ Guid.

Бозданная модСль бСзопасности

ПослС подтвСрТдСния Lino обновляСт ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, создаСт значСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ бСзопасности, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ исходного ΠΊΠΎΠ΄Π° ΠΈ выполняСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. БгСнСрированная модСль Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ бСзопасности:

  • User Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ профиля.
  • Role ΠΈ ассоциации Ρ€ΠΎΠ»Π΅ΠΉ для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ» доступа.
  • Permission ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ролями ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ для Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • UserToken для управлСния Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ обновлСния ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Ρ‚ΠΎΠΊΠ΅Π½Π°.

Π­Ρ‚Π° функция Ρ‚Π°ΠΊΠΆΠ΅ создаСт свСдСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для настройки бСзопасности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сСкрСт для подписи Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ сроки дСйствия access token ΠΈ refresh token. Π§ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния Π²Ρ‹Π΄Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… сСкрСтов AppHost, Π° Π½Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ нСпосрСдствСнно Π² Ρ„Π°ΠΉΠ»Ρ‹ с вСрсиями.

ПовСдСниС Π²ΠΎ врСмя выполнСния

API ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JWT Bearer-Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² систСму, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ access token ΠΈ refresh token ΠΈ отправляСт запросы ΠΊ API с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Authorization: Bearer <token>. БСрвСрная Ρ‡Π°ΡΡ‚ΡŒ провСряСт Ρ‚ΠΎΠΊΠ΅Π½, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ контСкст ΠΈ примСняСт ΠΏΡ€Π°Π²ΠΈΠ»Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ процСсс остаСтся простым: Π²Ρ…ΠΎΠ΄ Π² систСму Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈΠ»ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ страницу, Π²Ρ‹Π΄Π°Ρ‡Π° JWT с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ утвСрТдСниями, ролями ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ‚ΠΎΠΊΠ΅Π½Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° подписи ΠΈ срока дСйствия с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Lino ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дСйствия ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ особоС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ People.Read ΠΈΠ»ΠΈ People.Create; ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· AddAuthorization; ΠΈ endpoints ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ, объявив .RequireAuthorization.

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹Π΅ endpoints ΠΈ страницы ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π° сгСнСрированный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Blazor ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ страницы, ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ нСдоступныС дСйствия ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ экраны для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ€ΠΎΠ»Π΅ΠΉ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΉ, Ссли Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π΅ΡΡ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Если Background Jobs ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹, Lino Ρ‚Π°ΠΊΠΆΠ΅ добавляСт задания, связанныС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ обслуТивания ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ просрочСнных Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ².

Background processing ΠΈ Outbox

Background processing выполняСт Ρ€Π°Π±ΠΎΡ‚Ρƒ, которая Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ основной ΠΏΠΎΡ‚ΠΎΠΊ запросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²: ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ событий ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, очистку старых записСй, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² с ΠΈΡΡ‚Π΅ΠΊΡˆΠΈΠΌ сроком дСйствия, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, созданиС ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ², ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ с внСшними систСмами ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Lino добавляСт эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ посрСдством Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ задания:

lino feature background-job add --service <ServiceName>

Команда Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠ°ΠΊ lino feature background-job add ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. CLI прСдоставляСт псСвдонимы ΠΊΠ°ΠΊ job-scheduler ΠΈ worker.

Для этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±Ρ‹Π» Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΎΠ±ΠΌΠ΅Π½ сообщСниями, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π΅ основная ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ β€” бСзопасная публикация сообщСний, зарСгистрированных ΠΏΠΎ стандарту Transactional Outbox.

Π§Ρ‚ΠΎ просит волшСбник

  • Услуга: сСрвис, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ установлСна ​​инфраструктура Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ.
  • Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ: рСализация, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для выполнСния ΠΈ планирования Π·Π°Π΄Π°Π½ΠΈΠΉ. Бозданная Π² настоящСС врСмя инфраструктура ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Hangfire.
  • Outbox ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°: опрСдСляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ слуТба Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ события для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ.
  • CronOutboxБообщСния: Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈΠ»ΠΈ расписания, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия Π½ΠΎΠ²Ρ‹Ρ… сообщСний Outbox.
  • Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π°: количСство записСй Outbox, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π·Π° Ρ†ΠΈΠΊΠ», ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов.

Hangfire Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°

Lino создаСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ инфраструктуру для рСгистрации Hangfire, настройки Π΅Π³ΠΎ устойчивости, прСдоставлСния ΠΏΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ планирования Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… слуТбой. БгСнСрированная конфигурация содСрТит свСдСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для планирования jobs, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний Outbox ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ доступа ΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°.

Π’ созданных Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… схСма ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Hangfire ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния. ПанСль ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅, Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅, Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ задания Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ эксплуатации.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ прСимущСства Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ асинхронных Π·Π°Π΄Π°Ρ‡, Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ панСль ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ сохранСниС Π·Π°Π΄Π°Π½ΠΈΠΉ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Outbox

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ асинхронной ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, Lino ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ шаблон Outbox. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ использования Π² бизнСсС сохраняСт измСнСния Π΄ΠΎΠΌΠ΅Π½Π° ΠΈ записываСт событиС ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Outbox Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π—Π°Ρ‚Π΅ΠΌ Background Job считываСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Outbox ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ событиС Ρ‡Π΅Ρ€Π΅Π· Π½Π°ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΡˆΠΈΠ½Ρƒ сообщСний, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ RabbitMQ, с MassTransit, Ссли для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

  1. Команда измСняСт состояниС Π΄ΠΎΠΌΠ΅Π½Π° ΠΈ сохраняСт это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  2. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ рСгистрируСт событиС ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² Outbox, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ событиС, связанноС с созданиСм Π·Π°ΠΊΠ°Π·Π°.
  3. Π—Π°Π΄Π°Π½ΠΈΠ΅ Hangfire Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… сообщСний ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ эти сообщСния ΠΊΠ°ΠΊ находящиСся Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.
  4. КаТдоС сообщСниС дСсСриализуСтся ΠΈ публикуСтся шиной событий.
  5. Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹Π΅ сообщСния ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅; БообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ стратСгии ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ записанными событиями, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π½Π΅ Ρ‚Π΅Ρ€ΡΡ‚ΡŒ события Π² случаС сбоя, ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ нСскольким потрСбитСлям ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ сообщСния.

Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ удалСния старых сообщСний Outbox, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹, ΠΈ освобоТдСния сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ застряли Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Ρ‡Ρ‚ΠΎ сниТаСт риск постоянных Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ послС сбоСв ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Если установлСна ​​провСрка подлинности, функция Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ задания Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ задания ΠΏΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡŽ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², сохраняя Π΄Π°Π½Π½Ρ‹Π΅ бСзопасности Π² чистотС с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Благодаря этим Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ функциям Lino обСспСчиваСт Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ для критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ соврСмСнных производствСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Multi-tenancy

Multi-tenancy β€” это функция, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ нСсколько ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΈΠ»ΠΈ срСд, сохраняя ΠΏΡ€ΠΈ этом ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ tenantΠ°. Π’ Lino Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​поддСрТка tenantΠΎΠ²:

lino feature tenant add --service <ServiceName> --module <ModuleName>

Π­Ρ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ lino feature tenant add. Π’Π΅Ρ‚ΠΊΠ° CLI Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт псСвдонимы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ tenancy.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° tenantΠΎΠ² зависит ΠΎΡ‚ Π΄Π²ΡƒΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… возмоТностСй:

  • АутСнтификация ΠΈ авторизация, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ доступ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ€ΠΎΠ»ΠΈ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ интСрСсы tenantΠΎΠ².
  • ОбмСн сообщСниями, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ информация ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ посрСдством событий ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ.

Если эти ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, ΠΊΠΎΠΌΠ°Π½Π΄Π° отклоняСтся. Π­Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π§Ρ‚ΠΎ гСнСрируСтся

Lino создаСт модСль tenancy, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, события, ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с API ΠΈ frontend-рСсурсы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ управлСния tenants.

  • Tenant Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ tenantΠ°, имя, slug, статус, Ρ€Π΅ΠΆΠΈΠΌ изоляции ΠΈ ссылку Π½Π° строку ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.
  • TenantBranding Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ€Π΅Π½Π΄ΠΈΠ½Π³Π° для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ повСдСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ tenantΠ°.
  • TenantDomain сопоставляСт хосты ΠΈΠ»ΠΈ Π΄ΠΎΠΌΠ΅Π½Ρ‹ tenantΠ°ΠΌ.
  • TenantStatus ΠΈ IsolationMode ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» tenantΠ° ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ изоляции Π΄Π°Π½Π½Ρ‹Ρ….
  • БгСнСрированная конфигурация ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ tenantΠΎΠ² ΠΈ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ tenantΠΎΠ²

АрСнда мСняСт способ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² контСкстС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°; ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ доступ Π² ΠΎΠ΄Π½ΠΎΠΌ tenantΠ΅, Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ автоматичСски доступ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ tenantΡƒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ обновлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подлинности, повСдСния Ρ‚ΠΎΠΊΠ΅Π½Π° обновлСния, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈ ссылок, созданных для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

Π’ созданныС прилоТСния Blazor ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ экраны с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ tenantΠΎΠ² для управлСния tenantΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. На Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сторонС сгСнСрированныС endpoints ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ контСкст ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° основС настроСнного повСдСния хоста, сСгмСнта ΠΈΠ»ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… ΠΏΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ ΠΈ распространСниС Π΄Π°Π½Π½Ρ‹Ρ…

Lino ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ tenantΠΎΠ², позволяя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΎ собствСнности для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ tenantΠ°. Π’ сцСнариях SaaS это позволяСт бизнСс-Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, относящиСся ΠΊ tenantΡƒ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅.

БгСнСрированная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ события ΠΈ шаблон Outbox для распространСния Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… tenantΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρƒ модулями Π±Π΅Π· привязки всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ исходным Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ Identity ΠΈΠ»ΠΈ Tenancy. Π­Ρ‚ΠΎ сохраняСт Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ модуля Ρ‡Π΅Ρ‚ΠΊΠΈΠΌΠΈ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ экраны, API, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ запросы ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с контСкстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

ПослС добавлСния tenancy создайтС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ migrations для Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΠΎΠ³ΠΎ сСрвиса, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ сгСнСрированныС secrets ΠΈ API keys, запуститС AppHost ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π° tenants, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, roles, permissions ΠΈ бизнСс-записи ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ.

  • ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ: ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ тСсты, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ tenantΠ°.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° просмотр: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€ΠΎΠ»ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… tenantΠ°Ρ….
  • НС довСряйтС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ: ΠšΠ»ΠΈΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ сообщаСтся ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚, хост, ΠΏΡƒΠ» ΠΈΠ»ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ совмСстим с Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.
Произошла необработанная ошибка. Обновить πŸ—™