Piattaforma edge cloud di Fastly

Che cos'è WASI?

L’integrazione rappresenta una sfida significativa per i titolari di aziende che desiderano semplificare le Operazioni in vari ambienti. Quando gli strumenti sono isolati, i dipendenti si trovano ad affrontare inefficienze e frustrazioni, che possono portare a opportunità mancate.

L'interfaccia di sistema WebAssembly (WASI) offre una soluzione fornendo Standard comuni per eseguire modulo WebAssembly al di fuori dei browser web, consentendo un'integrazione più fluida con altri sistemi e software utilizzati dalla tua azienda.

Continua a leggere per saperne di più su WASI e scoprire come la sua adozione può aiutarti a ottimizzare i processi, aumentare la produttività degli sviluppatori e portare la tua azienda a nuovi livelli.

Che cos'è WASI?

L'interfaccia di sistema WebAssembly (WASI) è un'iniziativa progettata per espandere ciò che WebAssembly (Wasm) può fare al di fuori del browser. Fornisce un'interfaccia di sistema (API) standardizzata per i modulo Wasm, consentendo loro di interagire con le risorse di sistema in modo sicuro ed efficiente su varie piattaforma, mantenendo al contempo un comportamento coerente.

Wasm vs WASI

Sebbene Wasm e WASI possano sembrare simili, hanno obiettivi distinti che contribuiscono a ottimizzare le Operazioni. Comprendere le loro differenze è cruciale per sfruttare i loro punti di forza combinati. Diamo un’occhiata più da vicino:

Wasm

Wasm consente al codice di essere eseguito in modo rapido ed efficiente su qualsiasi CPU, permettendo lo sviluppo di applicazioni che offrono prestazioni elevate ovunque. Il suo obiettivo principale è eseguire istruzioni binarie su hardware diversi. 

Le caratteristiche principali includono:

  • Uso universale: scrivi una volta ed esegui ovunque sia supportato WebAssembly.

  • Velocità: Raggiunge prestazioni quasi native grazie al suo formato compatto e alla compilazione diretta.

  • sicurezza: isola il codice in uno spazio protetto per ridurre le vulnerabilità.

  • Modularità: divide il lavoro in componenti riutilizzabili.

In sostanza, WebAssembly fornisce un'astrazione rispetto all'ampia varietà di CPU in uso nel settore, consentendo al codice di essere portabile tra queste CPU

In che modo WASI migliora Wasm?

WASI estende le funzionalità di WebAssembly consentendo al codice di interagire con i sistemi sottostanti. Mentre Wasm si concentra su un'esecuzione rapida su più piattaforma, WASI fornisce funzionalità aggiuntive. 

I suoi principali punti di forza includono:

  • Accesso al sistema: Consente di leggere e scrivere file, usare la rete e altro.

  • Standardizzazione: API coerenti garantiscono un comportamento uniforme tra le piattaforme.

  • sicurezza: Riduce al minimo i rischi concedendo solo le autorizzazioni necessarie.

  • Flessibilità: utilizza un approccio modulare per implementare solo le interazioni di sistema richieste.

Nonostante le loro differenze, Wasm e WASI sono progettati per funzionare insieme. Wasm gestisce un'esecuzione universale efficiente, mentre WASI fornisce capacità a livello di sistema, migliorando la funzionalità ovunque il tuo codice esegua attività critiche. Il loro uso combinato consente di creare applicazioni potenti e multipiattaforma, adattate alle tue esigenze.

Qual è l'obiettivo di WASI?

WASI è stato sviluppato per affrontare sfide specifiche emerse quando WebAssembly (Wasm) ha iniziato a diffondersi tra le aziende. Sebbene Wasm eccella nell'eseguire codice in modo efficiente su più piattaforma, i suoi limiti ne ostacolano un'adozione più ampia. 

Esaminiamo le limitazioni di Wasm:

  • Accesso limitato: Wasm opera in un ambiente sicuro, fondamentale per la sicurezza, in particolare nei browser. Tuttavia, questo significa che Wasm non può accedere direttamente a risorse di sistema come file o rete. 

  • Interazione nativa limitata: Progettato principalmente per il web, Wasm ha un'interazione minima con le funzioni di sistema. Senza accesso diretto alle API di sistema, i modulo Wasm non possono eseguire attività come l'accesso al file system o la comunicazione di rete al di fuori dei browser. 

  • Strumenti frammentati: La mancanza di un modo standardizzato per Wasm di interagire con le risorse ha portato gli sviluppatori a fare affidamento su estensioni specifiche dell’ambiente o soluzioni personalizzate. Questi diversi approcci hanno prodotto strumenti frammentati, facendo sì che il comportamento dei moduli Wasm variasse in base all'ambiente e complicando lo sviluppo multipiattaforma.

Con l'espansione di Wasm oltre i browser, la richiesta di un'interfaccia di sistema uniforme è diventata fondamentale. Questa esigenza ha portato allo sviluppo di WASI, che è essenziale per i seguenti scopi:

  • Affrontare la frammentazione: WASI fornisce un unico insieme di API utilizzabili su più piattaforma, garantendo che i modulo Wasm si comportino allo stesso modo ovunque vengano eseguiti. Questo semplifica lo sviluppo e riduce i problemi di compatibilità, consentendoti di costruire applicazioni per server, dispositivi edge e altro.

  • Migliorare la sicurezza e la portabilità: Inoltre potenzia la sicurezza definendo un'interfaccia Standard per le interazione di sistema. Segue un modello di sicurezza basato sulle capacità, concedendo ai moduli Wasm solo le autorizzazioni necessarie e riducendo il rischio. 

Le API di WASI

WASI è costituito da diverse parti essenziali che lavorano insieme per fornire un ambiente potente per l'esecuzione della tua applicazione WebAssembly. Questi componenti migliorano la funzionalità, la sicurezza e la flessibilità di WebAssembly, rendendolo adatto a molti usi oltre i browser. Di seguito sono riportati i suoi componenti principali:

API

L'interfaccia WASI fornisce API che consentono al modulo WebAssembly di interagire con i sistemi sottostanti. Queste API fungono da interfaccia attraverso cui i modulo eseguono varie attività, assicurando che dispongano degli strumenti per operare efficacemente nel loro ambiente. Le API principali includono:

  • I/O dei file: WASI consente ai modulo di leggere e scrivere file sul sistema host. Questa funzionalità consente ai tuoi moduli di gestire lo storage dei dati, i file di configurazione e i contenuti creati dagli utenti, il che è essenziale per le applicazioni che si basano su dati persistenti.

  • Rete: L'interfaccia include API di rete, che consentono al modulo di stabilire e gestire connessioni di rete. Questa capacità è fondamentale per le applicazioni che devono comunicare tramite internet o reti locali, supportando attività che vanno da semplici richieste HTTP a operazioni di rete più complesse.

  • Ora: Questa interfaccia fornisce ai modulo WebAssembly la possibilità di interagire con gli orologi di sistema per recuperare l’ora corrente o misurare intervalli di tempo. Questa API è fondamentale per attività come il logging degli eventi, la pianificazione delle attività o la misurazione della durata delle Operazioni. 

  • Casualità: Questa interfaccia è ideale per attività che richiedono casualità di alta qualità, come generare chiavi di crittografia, creare identificatore univoco o implementare protocolli sicuri.

  • Input/output del terminale: queste API gestiscono gli stream di input, output ed errore Standard, consentendo l’interazione con la console o altri stream di I/O.

Uno sguardo al futuro di WASI

WASI 0.2 continua a evolversi, con sforzi continui per introdurre nuove funzionalità e capacità come socket, HTTP, storage chiave/valore e blob, configurazione, messaggistica, crittografia e un modello a componenti. Molti settori e organizzazioni stanno adottando WASI per semplificare lo sviluppo multipiattaforma e migliorare la sicurezza e le prestazioni delle applicazioni aziendali.

In futuro, i principi fondamentali di compatibilità e combinabilità guideranno la transizione di WASI tra le versioni. Questi principi garantiscono che le applicazione WebAssembly esistenti che richiedono l’accesso al sistema rimangano funzionali con l’avanzare di WASI. Creare applicazione ora con le API WASI attuali manterrà aperte anche le opzioni per incorporare le funzionalità future.

Fastly e WASI

Fastly ha contribuito in modo significativo allo sviluppo e all’adozione di Wasm e WASI e continua a contribuire agli Standard e alle implementazioni open source nel World Wide Consortium (W3C) e nella Bytecode Alliance

Scopri di più su come Fastly supporta l'open source e su come Fastly Compute consente agli sviluppatori di costruire facilmente le migliori esperienze per l'utente finale. Inizia oggi una prova gratuita.

Pronto per iniziare?

Contattaci oggi