Az évek során a szoftverfejlesztő közösség számos eszközt hozott létre, amelyek megkönnyítik és hatékonyabbá teszik a munkájukat. Ennek eredményeként az alkalmazások építése minden eddiginél egyszerűbb lett. De annyi lehetőség közül választhat, melyik lenne a legjobb a projektemhez? A rugalmasság és a költséghatékonyság szempontjából a hibrid alkalmazások jelentik a jövőt. Interjút készítettünk a „Tauri” társ-alkotójával, „Daniel Thompson-Yvetot”-val, hogy megtanítson minket a memóriaoptimalizálásról és a hibrid alkalmazások biztonságáról, valamint arról, hogy az eszköze mit hoz az asztalra.

Szerkesztett átirat

Daniel Thompson-Yvetot a „Tauri” társalapítója, amely egy hibrid alkalmazások készítésére szolgáló keretrendszer. Daniel a 2000-es évek eleje óta tagja a nyílt forráskódú közösségnek. „Mindig is megvolt bennem ez a vegyes törekvés, hogy elősegítsem a közösségeket, és ezt kreatív módon tegyem” – emlékszik vissza.

Daniel korai napjai óta számos módon látta az iparág változását. Tapasztalata szerint az alkalmazások készítése sokkal könnyebbé vált, vagy legalábbis csökkent a belépési korlát. A múltban, mondja Daniel, „valamiféle C++ nindzsának kellett lenni, vagy valami alacsony szintű programozási nyelven kellett írni”. A programozás összetettségének kezelése érdekében a fejlesztői közösség erőfeszítéseket tett olyan eszközök tervezésére, amelyek manapság lehetővé teszik a fejlesztők számára, hogy kevesebb idő alatt többet hozzanak létre.

Hogyan működik a Tauri

Az olyan webnyelveken írt, mint a HTML, CSS és JavaScript, de képesek hozzáférni a rendszer képességeihez, a hibrid alkalmazások kisebbek lehetnek, mint a natív és a webes alkalmazások. Ily módon a Tauri egyrészt arra szolgál, hogy minimálisra csökkentse az alkalmazásai memóriaterületét, másrészt megkönnyítse az alkalmazások létrehozását. „Szeretnénk, ha a lehető legkisebb méretű biztonságos alkalmazást szállítaná, amely tökéletesen működik minden olyan eszközön, amelyre szállítja, és ez az a magabiztosság, amelyet az alkalmazás készítése során szeretnénk megőrizni.” Daniel összegzi.

Ellentétben az Electron és a Node.js keretrendszerekkel, amelyek JavaScript, illetve Node.js nyelven íródnak, a Tauri háttérrendszer Rust nyelven íródott. Másrészt a Tauri a rendszer böngészőmotorját (WebView néven ismert) használja az alkalmazások tárolására (WebView2 Windowson, WK WebKit Macen és WebKitGTK Linuxon), míg az Electron a Node.js-t és a Chromiumot használja.

Daniel szerint a Tauri és a többi keretrendszer közötti különbség az alkalmazások méretében kezdődik. „Az Electron alkalmazások mérete soha nem lesz kisebb, mint amennyire a Node.js-ből és a Chromiumból szüksége van” – mondja. E követelményeknek megfelelően az ilyen keretrendszerek által készített alkalmazások mérete legalább 30–40 MB. A Tauri viszont a rendszer WebView-ját használja, amely lehetővé teszi, hogy alkalmazásai dedikált böngészőmotor nélkül működjenek. Ráadásul a Rust képességeinek köszönhetően Daniel megerősíti, hogy „egy Tauri alkalmazás magja több száz kilobájt is lehet”.

A Tauri WebView-motoros alkalmazásai HTML-en, CSS-en és JavaScript-en futnak. A rendszerelemekkel, például a fájlrendszerrel való interakcióhoz a Tauri általában JavaScriptet használ. A WebView parancsengedélyek a Tauri alkalmazás konfigurációjában vannak beállítva.

Üzenet átadása

A Tauri az üzenettovábbítást alkalmazta a Rust és az alkalmazás WebView közötti kommunikációjához. Az üzenettovábbítás egy olyan technika, amellyel üzeneteket küldhetünk egy programfolyamatnak kód futtatása céljából. Amikor egy felhasználó műveletet hajt végre a kezelőfelületen, a WebView üzenetet küld a JavaScripten keresztül, amely kommunikálja az interakciót, pl. egy meghívó függvényt, és a függvény jogosultságait. Ezt követően a másik oldalon, a Tauri alkalmazás fő hurkában egy „hallgató” ellenőrzi a fájlrendszer jogosultságait, és egy strukturált üzenetet küld vissza a kéréssel.

Ugyanazt a rendszert mindkét irányban használva Daniel azt mondja, hogy csökkentették a kognitív terhelést. Sőt, elmagyarázza, hogy az üzenettovábbítást választották más lehetőségek helyett, „hogy elszigeteljék a hátteret a potenciálisan veszélyes felhasználói felülettől”. Daniel azt mondja, hogy a háttér leválasztásával a fejlesztők „minősíthetik az API-hívás forrását, hogy például az illegális kód ne tudjon olyan shell-parancsot létrehozni, amely törli az et cetera mappát”.

Alkalmazáscsomagolás

Egy másik biztonsági probléma az alkalmazásépítés során az alkalmazáscsomagolás. Daniel szerint az Electron az alkalmazás bináris kódját .ASAR fájlformátumban teszi közzé, amelyet az alkalmazás kötegelésére használnak. Daniel számára ez a fájl „triviális visszafejteni; csak egy parancs van az ASAR parancssorban." A támadó felhasználhatja a fájlt a teljes forráskód visszafejtésére, ami azt jelenti, hogy „a nem nyílt forráskódú projektek esetében, amelyek potenciálisan védettek, bárki lemásolhatja az alkalmazást”. Az alkalmazás másolásával és beillesztésével a rosszindulatú szereplők újracsomagolhatják azt, és olyan tiltott alkalmazást készíthetnek, amely az eredetihez hasonlóan néz ki.

Amikor a Tauri-alkalmazásokat kötegelni kell, nehéz visszafordítani őket. Ezen túlmenően, az alkalmazások frissítéséhez anélkül, hogy az aláírások összehasonlítása során sérülékenységnek tenné ki őket, a Tauri beépített frissítővel biztosítja, hogy szinte lehetetlen hozzáférni az alkalmazás alacsony szintű rendszereihez és visszafejteni. Ahogy Daniel elmagyarázza, „frissítéskor a frissítési blobok felkerülnek a frissítési vagy terjesztési szolgáltatásra, és a legfrissebb verziók ellenőrző összegekkel és nyilvános pólókkal stb. egy JSON-fájlba kerülnek, amelyet ezután elérhetővé tesz az alkalmazás felhasználóinak, és az alkalmazás által használt rendszernek." A fejlesztők ezt a JSON-fájlt is használhatják annak konfigurálására, hogy az alkalmazás mely platformokra kerüljön szállításra. Ezenkívül a frissítő rugalmasságot biztosít más döntések meghozatalában, például annak megválasztásában, hogy kényszeríti-e a frissítéseket azáltal, hogy lefagyasztja az alkalmazást a frissítésig.

Kezdő lépések Taurival

A Tauri minden platformon elérhető. Az egyetlen követelmény a) "Rust" és b) egy JavaScript-alapú front-end keretrendszer, például a "Node.js". Daniel számára a Tauri használatának megkezdése abból fakad, hogy jól érzi magát a JavaScript vagy a "TypeScript" használatában. Mindazonáltal azoknak, akik most ismerkednek a Rusttal, azt javasolja, hogy látogassanak el a Github Rustlings tárházába, hogy megtanulják a nyelv alapjait.

A Rust működésének megértéséhez Daniel azt tanácsolja, hogy ismerkedjen meg a fordítójával. Daniel szerint a Rust fordító volt a fő megkülönböztető tényező, amely ezt választotta más nyelvek fölé a tauri íráshoz. „Valóban segít megérteni, hol vannak a hibák” – hangsúlyozza.

Megjegyzés: Tauri Kezdő lépések dokumentációját itt tekintheti meg.

Alsó vonal

Látogassa meg a Tauri.app webhelyet, ahol többet megtudhat a projektről, megtekintheti a dokumentációját, és megtudhatja az alkalmazás elkészítésének első lépéseit. Látogass el a Tauri Github tárházába itt, nézd meg a beszélgetéseket, és ha problémába ütköztél a program használata során, egy probléma bejelentésével segíthetsz a közösségnek. Kövesse Taurit a Twitteren, és vegye fel a kapcsolatot a közösséggel a Discord oldalán. Danielt a Linkedinén is elérheted.

Eredetileg a https://semaphoreci.com oldalon tették közzé 2022. november 15-én.