il blog di Posit
TYPO3 Flow

TYPO3 Flow

TYPO3 Flow è una “web application platform” che permette di creare soluzioni web liberando lo sviluppatore da tutti i problemi di infrastruttura per lasciarlo concentrarsi sulla business value dell'applicazione.
E' stato progettato e sviluppato per  essere utilizzato in ambienti di produzione, permette di creare complessi progetti web utilizzando il linguaggio di programmazione PHP.

Il progetto è Open Source ed è seguito e supportato da una delle più grandi comunità PHP, quella di TYPO3.
E' un framework che mette a disposizione dello sviluppatore una serie di strumenti volti a migliorare e semplificare la creazione dell'infrastruttura di un'applicazione web, Flow include moduli per  la gestione del ciclo di vita degli oggetti, la gestione di pacchetti, la gestione delle risorse e la gestione della sicurezza.

Spetta ai programmatori creare la logica di business in pacchetti personalizzati o reperire codice direttamente da composer.

Concetti collaudati da vari framework, applicazioni e linguaggi di programmazione sono stati utilizzati per la progettazione di Flow, quali Dependency Injection e Aspect-Oriented Programming.

Requisiti tecnici

Sistemi operativi

  • Linux
  • Mac OSX
  • Windows (Vista or later)

HTTP server supportati

  • Apache 2 (recommended)
  • NGINX
  • IIS (experimental)


PHP 5.3.2 o maggiore

Ecco invece le caratteriste del framework:

 

Model-View-Controller( MVC )

MVC è un pattern che separa chiaramente i ruoli degli oggetti tra modello, controller e vista, questo permette di scrivere codice chiaro e mantenibile.
Flow si occupa anche della validazione ( input sanitizing ) dell'input.

Mappatura oggetti e validazione

Per lo scambio dati tra pagina web e applicazione server Flow si occupa di interpretare le richieste a livello http e di farle arrivare a livello business preoccupandosi di interpretarle e di fornire alla business logic istanze degli ogetti del dominio.
Anche la validazione è molto importante, quasi tutti i dati che arrivano da una richiesta http necessitano di una validazione prima di essere usati e manipolati; la validazione viene fatta in modo automatico da Flow utilizzando le informazioni presenti nel phpdoc dei metodi destinazione delle richieste. E' possibile comunque utilizzare dei validatori personalizzati.

Convention over Configuration: le convezioni riducono le configurazioni.

Questo paradigma è orientato a ridurre al minimo o eliminare del tutto la configurazione del framework.
Se si seguono le convenzioni, come ad esempio la struttura dei file quindi posizionando i template sotto la cartella Resources, il modello in Classes/Domain o seguendo le convenzioni dei nomi per i validatori, non serve configurare nulla perchè il framwork saprà dove reperire cosa.

Supporto HTTP

Per un framewotk come Flow è fondamentale aderire il più possibile allo standard HTTP. Flow soddisfa tale obbligo con una implementazione che segue strettamente le specifiche RFCs.

Dependency Injection

In un'applicazione complessa le dipendenza tra le parti del codice sono spesso un problema, per questo il disaccoppiamento rende le cose molto più semplici.

Programmazione orientata agli aspetti ( AOP )

Flow è un framework AOP che lavora senza estensioni e in puro codice PHP. AOP permette di aggiungere comportamenti all'applicazione senza modificare, sporcare il codice esistente. L'AOP risulta particolarmente efficace nelle funzionalità trasversali all'aplicazione come il log o meglio ancora la persistenza, ossia tutti quegli aspetti che richiederebbero di ripetere poche righe di codice in più parti dell'applicazione. Anche AOP aiuta lo sviluppatore a mantenere il codice pulito e mantenibile.

Templating

Per il template Flow usa Fluid un template engine, potente, flessibile e facile da usare.

Domain-Driven design

Domain-Driven Design (DDD) è un eccellente approccio per permettere allo sviluppatore di concentrarsi sulla logica di business e non su altro, questo è uno degli scopi di Flow.

Sicurezza

La sicurezza è un aspetto fondamentale per le nostre applicazione web, anche in questo ambito Flow ci viene in aiuto, fornendo la possibilità di controllare l'accesso a metodi e dati direttamente in semplici file YAML.

Gestione della sessione

Flow utilizza il "session scope" per sollevare lo sviluppatore dalle problematiche di gestione; lo sviluppatore dovrà decidere quali oggetti dovranno sopravvivere tra una sessione e l'altra mettendoli nel "session scope".
Gli oggetti in "session scope" possono essere visti come “singleton” che sopravvivono tra  una richiesta all'altra.

Linea di comando

Flow mette a disposizione un interfaccia a linea di comando che permette, ad esempio, di eseguire la pubblicazione, l'importazione ed l'esportazioni dei dati, l'installazione dell'aplicazione; tutti i comandi sono completati da un help esaustivo. Flow permette di estendere la linea di comando in maniera semplice e integrata. Con la linea di comando flow completa l'ecosistema per lo sviluppo di applicazioni web.

Internazionalizzazione e localizzazione

Flow offre funzionalità per la traduzione di etichette e l'utilizzo di risorse statiche come immagini in base alle impostazioni internazionali in uso.

Errore & Gestione delle eccezioni

Viene reso disponibile il log delle eccezioni con stack trace molto curati.

Test & debug

Flow è stato sviluppato utilizzando estensivamente la metodologia test-driven ( TDD ), per questo anche nelle applicazioni da un forte supporto e mette a disposizione diversi helper per poter supportare lo sviluppo e il mantenimento dei banchi di test.
Il framework è stato inoltre progettato per poter essere integrato in xdebug e, nonostante Flow esegua diverse operazioni dietro le scene, rendere il debug delle applicazioni chiaro e semplice.

Velocità & Performance

Ovviamente  l'utilizzo di un framework va ad introdurre un overhead di qualche tipo, questo accade anche con Flow.
Durante tutto lo sviluppo del framework la componente velocità ha avuto un'alta priorità, ma la filosofia Flow non si è fermata a questo; per Flow il rispondere velocemente alla singola chiamata non è l'unico requisito importante, in progetti complessi anche rispondere contemporaneamente ed efficacentemente a più richieste oltre a permettere lo sviluppo rapido di applicazioni sono fattori importanti, come è importante consumare adeguatamente le risorse quali la memoria. Per questi motivi lo sviluppo di Flow e stato improntato alla costruzione di un framework che permetesso lo sviluppo rapido e semplice di applicazioni e la cui esecuzione fosse veloce e il cui consumo di risorse fosse basso, adeguato quindi agli ambienti di produzione.

Riferimenti/Link

Questi sono i punti fondamentali del framework, per una completa descrizione delle funzionalità e per la documentazione completa rimandiamo a flow.typo3.org.


Contattaci

Vuoi un preventivo? o Hai bisogno di consulenza, contattaci..

  1. Ai sensi e per gli effetti dell'art. 13 del D. Lgs 30.6.2003 n. 196, Posit s.c. informa che i dati personali da Voi trasmessi verranno trattati sia su supporti magnetici che cartacei al fine di soddisfare le Vostre esigenze. Titolare del trattamento suindicato è Posit s.c. , con sede in Via Guardini, 58 - 38121 Trento. Cliccando sul tasto sottostante, (invia) acconsentite al trattamento. Il Vostro consenso è facoltativo ma, in caso di diniego, i Vostri dati non potranno esserci inviati. Avete il diritto di opporvi in tutto o in parte al trattamento, esercitando i diritti di cui all'art. 13 del D. Lgs 30.6.2003 n. 196. Posit s.c. garantisce che le informazioni qui contenute rimarranno strettamente confidenziali.
Posit Società Cooperativa Tel: 0461 822068 Fax: 0461 1860208 email: info@posit.it www.posit.it