A szokásos megoldás: négy külön alkalmazás
Egy alkalmazást négy platformra általában négyszer írnak meg: Swiftben iOS-re és macOS-re, Kotlinban Androidra, Windowsra pedig C#-ban vagy webes technológiával. Ez négy kódbázis, gyakran négy csapat, és minden új funkciót négyszer kell elkészíteni, tesztelni és karbantartani. A változatok közben szinte biztosan eltérnek egymástól.
A mi megoldásunk: egy Rust-kódbázis
A ChatLord natív kliensében a felület és a logika is Rustban készül. A felületet az egui könyvtár rajzolja ki, amely minden platformon ugyanúgy működik, így ugyanaz a kód fordul le mind a négy rendszerre. Egy új funkciót egyszer kell megírni, és egyszerre jelenik meg mindenhol.
A böngészős változat külön webes kliens, de ugyanahhoz a Rust-szerverhez kapcsolódik, ugyanazzal a protokollal. Amit a szerver tud, azt minden kliens ugyanúgy látja.
Ami platformonként eltér
Az egy kódbázis nem azt jelenti, hogy a platformok közötti különbségekkel nem kell foglalkozni. Ezeket a részeket külön kezeljük, hogy az alkalmazás mindenhol természetesen működjön:
- Az értesítések iOS-en az Apple, Androidon a Firebase, böngészőben a Web Push szolgáltatásán keresztül érkeznek
- Windowson a rendszer saját értesítései és telepítője, macOS-en lemezkép
- Telefonon a képernyő-billentyűzet, tableten az egér és a fizikai billentyűzet
- A telefonnal készült fotók tájolása feltöltéskor
- A hanghívás WebRTC-n megy, és minden eszközön kicseng
Mit nyer ezzel a megrendelő?
Ha egy cégnek mobilapp és asztali program is kell, így nem két-három külön projektet fizet, hanem egyet. A fejlesztés gyorsabb, a karbantartás olcsóbb, és nem fordul elő, hogy egy funkció már működik iPhone-on, Androidon viszont még hónapokig nem.
- Egy kódbázis, egy csapat, egy hibalista
- Az új funkciók minden platformon egyszerre jelennek meg
- Megmarad a natív sebesség, nincs böngészőbe csomagolt felület
Mikor kell mégis külön natív kód?
Ha egy alkalmazás egy platform nagyon speciális lehetőségeire épül, például mély rendszerintegrációra vagy egyedi grafikai effektekre, ott a platform saját eszközei jobbak lehetnek. Az üzleti alkalmazások többségénél azonban ez nem kérdés, és a közös kódbázis előnyei jóval nagyobbak.