Victor Dudochkin 03 ноября 2021
Бпонсорский ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»

πŸ“± Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ хостинг для мобильного прилоТСния. Π§Π°ΡΡ‚ΡŒ пСрвая: тСхнологичСский стСк

Для Π²Ρ‹Π±ΠΎΡ€Π° хостинга Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ потрСбности мобильного прилоТСния, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ придСтся Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ процСсс Π΅Π³ΠΎ создания ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈ этом стСк Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.
πŸ“± Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ хостинг для мобильного прилоТСния. Π§Π°ΡΡ‚ΡŒ пСрвая: тСхнологичСский стСк

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части, созданного совмСстно с ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Selectel Ρ†ΠΈΠΊΠ»Π° статСй, ΠΌΡ‹ рассмотрим Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ сСтСвой стСк для взаимодСйствия с сСрвСрной стороной. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… частях ΠΌΡ‹ ΠΎΡ†Π΅Π½ΠΈΠΌ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, систСмы ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ языки программирования ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ сСрвСрной части ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ прСдставлСниС ΠΎ ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Ρ… трСбованиях ΠΊ бэкСнду ΠΈ смоТСм ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ хостинга.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ†ΠΈΠΊΠ»Π°:

ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΡ‹.

Π˜Π³Ρ€ΠΎΠ²Ρ‹Π΅ прилоТСния

К ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ прилоТСния ΠΈΠ·-Π·Π° ΠΈΡ… спСцифики: Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, возмоТностям ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… сСтСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ…. НапримСр, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅ΠΆΠΈΠΌ боя Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ), Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° основС сСтСвого стСка UDP. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях для связи с сСрвСрной Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΏΠΎΠ²Π΅Ρ€Ρ… стСка TCP/IP.

Помимо этого ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ – это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ стСк Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ клиСнтской части. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ прилоТСния написаны Π½Π° языках ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ использованиС Π΄Π²ΠΈΠΆΠΊΠΎΠ² Unity (C#), Unreal Engine ΠΈ ΠΌΠ΅Π½Π΅Π΅ распространСнных, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Cocos2dx (Π‘++). ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΆΠ°Π½Ρ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ языки ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π‘Ρ‚ΠΎΠΈΡ‚ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ всСм ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ 2048, Π½ΠΎ это скорСС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΡ€Π°Π²ΠΈΠ».

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

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ прилоТСния

Ко Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ относятся офисныС ΠΈ Ρ€Π°Π·Π²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прилоТСния, инструмСнты ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Ρ‚.Π΄.

НативныС

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ являСтся использованиС Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… языков ΠΈ ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Java, Kotlin, Objective-C ΠΈ Swift. К прСимущСствам использования Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… языков ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΎΡ‡Π΅Π½ΡŒ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ исполнСния ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°Π»Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ здСсь стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ассСттов (ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² ΠΈ Ρ‚.Π΄.).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π½Π°Π½ΠΈΠ΅ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… языков являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ здСсь являСтся Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ спСциалистов. К нСдостаткам ΠΌΠΎΠΆΠ½ΠΎ отнСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ – Π²Π°ΠΌ придСтся ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° спСцифичном для Π½Π΅Π΅ языкС.

Flutter

πŸ“± Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ хостинг для мобильного прилоТСния. Π§Π°ΡΡ‚ΡŒ пСрвая: тСхнологичСский стСк

Π Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ позволяСт ΠΎΡ‡Π΅Π½ΡŒ популярный Ρ‚Ρ€Π΅Π½Π΄ – использованиС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Flutter. Он сокращаСт Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ благодаря Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ для Android ΠΈ iOS, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Помимо этого ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° проСктирования Block ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ для Π²Π΅Π±-Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Flutter ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ язык Dart ΠΈ построСн ΠΏΠΎΠ²Π΅Ρ€Ρ… графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Skia с ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π½Π° C++.

Π Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Π² Skia производится срСдствами GPU, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹ΠΌ. Помимо ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Flutter ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Lottie, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π² Adobe After Effects.

К прСимущСствам использования Flutter для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ мобильного прилоТСния ΠΌΠΎΠΆΠ½ΠΎ отнСсти достаточно Π½ΠΈΠ·ΠΊΠΈΠ΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹, Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния ΠΈ возмоТности Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ нСдостатков, ΠΊΡ€ΠΎΠΌΠ΅ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ увСличСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° прилоТСния Π·Π° счСт Flutter runtime.

React-Native

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ распространСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ – Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° основС Π²Π΅Π±-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Π—Π΄Π΅ΡΡŒ Π»ΠΈΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ React Native. ΠŸΡ€ΠΈΠ·Π½Π°ΡŽΡΡŒ чСстно, я Π½Π΅ большой ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊ React, Π½ΠΎ ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Π½Π΅ прСдвзято ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ использованиС. НСоспоримым прСимущСством являСтся Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π²Π»Π°Π΄Π΅ΡŽΡ‰ΠΈΡ… этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ программистов ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² для создания мобильного прилоТСния. Π’ основном поэтому Π½Π° React Native Π΄Π΅Π»Π°ΡŽΡ‚ Π² основном MVP (minimum viable product).

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° (full-stack), Ρ‚ΠΎ ΠΈ для сСрвСрной части Π²Ρ‹ скорСС всСго ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Node.js. React Native Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Lottie. К соТалСнию, Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ нСоспоримым нСдостатком являСтся ΠΎΡ‡Π΅Π½ΡŒ скудная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· своСго ΠΎΠΏΡ‹Ρ‚Π°, ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ тСхнологичСским стСком приходится ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅.

PWA

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ PWA (progressive web app). Они Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ. Π­Ρ‚ΠΎ прогрСссивныС Π²Π΅Π±-прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. PWA ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с использованиСм Ρ‚Π°ΠΊΠΈΡ… языков ΠΊΠ°ΠΊ JavaScript, TypeScript ΠΈ Dart. Π­Ρ‚ΠΎ достаточно ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для создания MVP, Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ прилоТСния.

Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ стСк мобильного прилоТСния

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ трСбования ΠΊ сСти, ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ рассмотрим ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ состояния прилоТСния:

  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ авторизуСтся Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ находится Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС прилоТСния.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚ΠΎΠ²Π°Ρ€.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ добавляСт Ρ‚ΠΎΠ²Π°Ρ€ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ оформляСт ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих состояний ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ достаточно ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ запрос ΠΊ сСрвСрной части, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. БобствСнно говоря, это стандартный Rest API ΠΏΠΎΠ²Π΅Ρ€Ρ… HTTPS. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ общСния с ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚ΠΎΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°:

  • ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния сСрвСру.
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сообщСния ΠΎΡ‚ сСрвСра.

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ осущСствлСна с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Π½Π°ΠΌ Rest API, Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π΅ΡΡ‚ΡŒ для получСния сообщСния ΠΎΡ‚ сСрвСра?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Push Notification ΠΈ Π½Π°ΠΌ Π² любом случаС придСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ для получСния сообщСний Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ offline. Однако, использованиС Push Notification для сообщСний Π² online-Ρ€Π΅ΠΆΠΈΠΌΠ΅ являСтся нСцСлСсообразным ΠΈΠ·-Π·Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ доставки.

Ping-pong

πŸ“± Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ хостинг для мобильного прилоТСния. Π§Π°ΡΡ‚ΡŒ пСрвая: тСхнологичСский стСк

Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ рСгулярныС запросы ΠΊ сСрвСру Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Каким Π±Ρ‹ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΌ Π½Π΅ казалось Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΎ Π½Π° сущСствованиС. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти Π’Πš. К прСимущСствам ΠΌΠΎΠΆΠ½ΠΎ отнСсти Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Π΄Π΅Ρ€ΠΆΠΈΠΌ постоянноС соСдинСниС с сСрвСром ΠΈ трСбования ΠΊ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Π² Π½Π΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π½ΠΈΠΆΠ΅. Из нСдостатков ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΉ расход Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ мобильного устройства.

Longpoll

Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ longpoll появился Π΄ΠΎ HTML5: ΠΎΠ½ отличаСтся ΠΎΡ‚ ping-pong Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ соСдинСния Π½Π΅ инициируСтся со стороны ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ сСрвСра. Оно остаСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ, ΠΈ Π² Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ врСмя ΠΆΠΈΠ·Π½ΠΈ соСдинСния (TTL). Настройки TTL ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° сторонС сСрвСра. ПослС закрытия соСдинСния клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ расход энСргии Π½Π° клиСнтской сторонС прилоТСния, Π° использованиС ΠΏΠ°ΡƒΠ· ΠΌΠ΅ΠΆΠ΄Ρƒ запросами – ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ трСбования ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти сСрвСра. К нСдостаткам ΠΌΠΎΠΆΠ½ΠΎ отнСсти всС Ρ‚Π΅ ΠΆΠ΅ трСбования Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ соСдинСния Π½Π° сторонС сСрвСра, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Ρ‹Π²Ρ‹ соСдинСния.

WebSocket

ПослС Ρ€Π΅Π»ΠΈΠ·Π° стандарта HTML5 ΠΈ появлСния возмоТности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WebSocket я Π±Ρ‹Π» Π² нСописуСмом восторгС ΠΈ примСнял этот ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΎΡ‡Π΅Π½ΡŒ агрСссивно. WebSocket ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π΄Π²ΡƒΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŽΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ клиСнтской ΠΈ сСрвСрной Ρ‡Π°ΡΡ‚ΡŒΡŽ, ΠΈ Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ всС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ просто Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Если Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‚ΠΎ WebSocket постоянно Π΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠ°Π½Π°Π» Π½Π° запись ΠΈ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π° сторонС сСрвСра, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚ использования рСсурсов Π²ΠΎ врСмя сСссии оставляСт ΠΆΠ΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ. Для клиСнтского прилоТСния это Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ ΠΊΠ°ΠΊ для сСрвСрного. Помимо этого, клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ доступности соСдинСния Π² состоянии простоя.

SSE

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP/2 ΠΎΡ‚ HTTP являлось сниТСниС Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π·Π° счСт обСспСчСния ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ запросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° посрСдством сТатия ΠΏΠΎΠ»Π΅ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² HTTP ΠΈ добавлСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ запросов ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° сСрвСр. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΎΠ±Π»Π°Π΄Π°Π» ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ – ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ субпротокола Server Socket Events.

Новый ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» частично исправил нСдостатки WebSocket. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, отсутствиС двухстороннСй связи ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ количСство ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… соСдинСний Π·Π° счСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… трСбуСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС рСсурсов.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ WebSocket, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² тСкстовом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π’Π°ΠΊΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ большая Ρ‡Π°ΡΡ‚ΡŒ потрСбностСй Π±Ρ‹Π»Π° связанна с доставкой тСкстовых ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΏΠΎ подобию Push Notification. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ WebSocket. ΠŸΡ€ΠΈ использовании SSE для поддСрТания ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΌΡ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ Π½Π°ΠΌ Rest API для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запросов Π½Π° сСрвСр.

На ΠΌΠΎΠΉ взгляд, это самая ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ схСма взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ клиСнтским ΠΈ сСрвСрным ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, которая ΠΊ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ²Π΅Ρ€Ρ… HTTP/2. Server Socket Events обСспСчиваСт ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ трСбованиями ΠΊ рСсурсам ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, прСдоставляя возмоТности асиммСтричной двустороннСй связи.

Π˜Ρ‚ΠΎΠ³ΠΈ

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² клиСнтской части для создания бэкСнда?

По ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ здСсь Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Node.js. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈ Flutter-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ. Dart позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ сСтСвыС сСрвСрныС прилоТСния, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ΠΈ удивят вас своСй ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Node.js.

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго Flutter-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ этим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π°ΠΌ, Π²Π²ΠΈΠ΄Ρƒ нСвострСбованности Ρ‚Π°ΠΊΠΎΠ³ΠΎ использования языка Dart. НС Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ сСрвСрной части Π½Π° Java ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·-Π·Π° Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊ рСсурсам сСрвСра ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ систСмы Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π·Π°Ρ‚Ρ€Π°Ρ‚ ΠΈ ΠΏΡ€ΠΈ отсутствии спСциализированных Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² ΡˆΡ‚Π°Ρ‚Π΅, ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ созданиС MVP Π½Π° React-Native ΠΈ сСрвСрной части Π½Π° основС Node.js. Однако ΠΏΡ€ΠΈ отсутствии Π² ΡˆΡ‚Π°Ρ‚Π΅ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±Ρ‹Π»ΠΎ Π±Ρ‹ использованиС Flutter Π² качСствС основы.

ΠžΡ†Π΅Π½ΠΈΠ²Π°Ρ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ сСтСвого взаимодСйствия ΠΌΡ‹, СстСствСнно, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π½Π° ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ для Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° стСк ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

Π‘Ρ‚ΠΎΠΈΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» QUIC, построСнный ΠΏΠΎΠ²Π΅Ρ€Ρ… UDP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСсСт Π΅Ρ‰Π΅ большиС Π²Ρ‹Π³ΠΎΠ΄Ρ‹ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с рассмотрСнными Π²Ρ‹ΡˆΠ΅ схСмами сСтСвого взаимодСйствия. QUIC – Π½ΠΎΠ²Ρ‹ΠΉ транспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» связи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отличаСтся ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ, большСй Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ – ΠΎΠ½ взят Π·Π° основу Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ стандарта HTTP/3. Учитывая, Ρ‡Ρ‚ΠΎ QUIC Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ²Π΅Ρ€Ρ… UDP, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… прилоТСниях. Пока использованиС QUIC для Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² остаСтся вопросом Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ принят Π² качСствС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ стандарта Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠ°Π΅ 2021 Π³ΠΎΠ΄Π°.

Legacy-ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Ρ‚Π°ΠΊΠΈΡ… схСм ΠΊΠ°ΠΊ ping-pong ΠΈ longpoll Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ. Помимо этого Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ нСэффСктивности использования рСсурсов ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ WebSocket. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ Π»ΠΈΠ΄Π΅Ρ€ΠΎΠΌ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сСтСвого взаимодСйствия Π½Π° сСгодняшний дСнь являСтся Server Socket Events Π² связкС с REST API. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΆΠ΅ стоит ΠΏΡ€ΠΈΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΡΡ ΠΊ QUIC.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ систСмы ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.

***
Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° инфраструктуры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ соотвСтствуСт трСбованиям вашСго рСсурса: объСм накопитСля, процСссор ΠΈ количСство ядСр, объСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ СТСмСсячного Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования, быстрая тСхничСская ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ написана совмСстно с нашим ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΎΠΌ – ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Selectel.

Selectel ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ сСрвСры, оснащСнныС 4-768 Π“Π‘ ΠžΠ—Π£, 2-72 ядрами ЦП, Π° Ρ‚Π°ΠΊΠΆΠ΅ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ графичСский ΡƒΡΠΊΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒ ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² качСствС сСрвСра Π΄Π°ΠΆΠ΅ Raspberry Pi 4 (4/64 Π“Π‘) ΠΈ Mac Mini для iOS-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

ΠœΠ•Π ΠžΠŸΠ Π˜Π―Π’Π˜Π―

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π’ΠΠšΠΠΠ‘Π˜Π˜

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ вакансию

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•