Phoenix è un framework per applicazioni web scritto nel linguaggio di programmazione funzionale Elixir, basato sul paradigma model-view-controller (MVC) lato server. Si appoggia alla libreria Plug e, a un livello più basso, a un server web della piattaforma Erlang, storicamente Cowboy; è progettato per applicazioni web ad alte prestazioni e scalabili.
Oltre al ciclo di richiesta e risposta gestito dal server sottostante, Phoenix consente la comunicazione in tempo reale con i client tramite WebSocket o long polling, attraverso i cosiddetti channels, utilizzabili da client scritti in qualsiasi linguaggio.
Storia Phoenix è stato creato da Chris McCord, con il contributo di José Valim, creatore di Elixir ed ex membro del core team di Ruby on Rails. La versione 1.0 è stata pubblicata nell'agosto 2015.
Con la versione 1.5, del 2020, Phoenix ha integrato LiveView, una libreria per la realizzazione di interfacce interattive in tempo reale gestite lato server. LiveView mantiene una connessione persistente con il server tramite WebSocket per generare e aggiornare il contenuto visualizzato lato client: a ogni modifica il server invia soltanto le porzioni di HTML effettivamente cambiate, anziché l'intera pagina. Ciò è possibile perché in Phoenix i template sono compilati in funzioni Elixir, e non trattati come semplici file HTML.
Con la versione 1.6, del 2021, è stato introdotto un generatore di codice per il sistema di autenticazione degli utenti, in precedenza affidato a librerie esterne.
Caratteristiche Phoenix si basa sull'ecosistema Elixir, eseguito sulla macchina virtuale BEAM di Erlang. Il suo punto di forza sono le applicazioni in tempo reale: in un test del 2015 gli sviluppatori hanno mantenuto due milioni di connessioni WebSocket simultanee su una singola macchina. Fra le altre funzionalità figurano: l'accesso ai database relazionali tramite la libreria Ecto; l'estensibilità attraverso librerie esterne in Elixir o Erlang, distribuite con il gestore di pacchetti Hex, che ospita anche la documentazione; la protezione da attacchi CSRF e la gestione delle sessioni; il supporto alla localizzazione tramite Gettext; la creazione e la validazione di moduli HTML; generatori di codice per le componenti più comuni di un'applicazione.
Note
Voci correlate Elixir (linguaggio di programmazione)
Collegamenti esterni
Categoria:Framework per applicazioni web Categoria:Software con licenza MIT Categoria:Software libero