Come creare applicazioni web completamente modulari [chiuso]

32

Nei prossimi mesi inizieremo un progetto in cui prendiamo un sistema che abbiamo creato per un client (v1) e lo ricostruiamo da zero. Il nostro obiettivo con v2 è di renderlo modulare, in modo che questo specifico client abbia il proprio insieme di moduli che utilizza, quindi un altro client può utilizzare un insieme diverso di moduli. Il trucco qui è che l'Azienda A potrebbe avere una serie di checkout e moduli utente che cambiano il funzionamento di quel sistema. La società B potrebbe seguire la procedura di pagamento standard ma personalizzare la modalità di navigazione dei prodotti.

Quali sono alcuni buoni approcci all'architettura delle applicazioni quando si costruisce un'applicazione da zero che si desidera avere una Core condivisa tra tutti i client pur mantenendo la flessibilità per qualsiasi cosa da modificare specificamente per un client?

Ho visto gli hook di CodeIgniter e non penso che sia una buona soluzione dato che potremmo finire con 250 hook e non è ancora abbastanza flessibile. Quali sono alcune altre soluzioni? Idealmente non avremo bisogno di tracciare una linea nella sabbia.

    
posta Webnet 21.11.2011 - 19:37
fonte

3 risposte

25

Per ottenere una modularità altamente organizzata e disaccoppiata, puoi seguire il modello architettonico Hierarchical MVC , a volte noto come Presentation-astrazione-controllo (anche se non sono rigorosamente lo stesso modello). Kohana , Alloy , Fluency e FuelPHP supportano HMVC nativamente * e l'approccio HMVC di Kohana è discusso in Ridimensionamento delle applicazioni Web con HMVC e Ottimizzazione delle applicazioni Web HMVC per le prestazioni , di Sam de Freyssinet .

Purtroppo CodeIgniter non supporta HMVC in modo nativo. Ho creato le mie librerie per fornire una sorta di supporto HMVC su CodeIgniter, traendo ispirazione da wiredesignz CodeIgniter-modulari-extensions-HMVC . C'è un articolo molto bello introduction to HMVC su nettus +, che tratta CodeIgniter e estensione di wiredesignz. La seguente immagine e citazione sono tratte da quel tutorial:

Each triad functions independently from one another. A triad can request access to another triad via their controllers. Both of these points allow the application to be distributed over multiple locations, if needed. In addition, the layering of MVC triads allows for a more in depth and robust application development. This leads to several advantages which brings us to our next point.

Infine, sei sulla strada giusta con gli hook, anche se adottassi un'architettura HMVC, ci saranno alcuni problemi che dovrai ancora risolvere con gli hook, a seconda dell'implementazione e del livello di automazione che stanno cercando. Ad esempio, un buon uso di hook sarebbe un hook di pre_controller che assicurerebbe che tutte le dipendenze per i moduli installati siano presenti, ad esempio.

* Potrebbero essercene altri che non conosco.

    
risposta data 21.11.2011 - 19:50
fonte
5

Non sono un ragazzo PHP, ma sul lato java-script se hai molti moduli che vorresti mantenere il più indipendente possibile ci sono diversi sistemi per questo, come RequireJS , che dispone di moduli java-script che dichiarano dipendenze su altri moduli e il framework si assicura che vengano caricati quando necessario.

I vari framework disponibili variano nel modo in cui vengono dichiarate le dipendenze, in che misura la gestione delle dipendenze viene eseguita come un passo di generazione sul server, nel caricamento della pagina o dinamicamente su richiesta e in quanto è necessario modificare il modo in cui si scrive il tuo java-script.

Questi framework non si applicano tanto (o forse affatto) se il tuo framework lato server sta gestendo questo o generando il tuo java-script per te, ma potresti volere che il tuo java-script sia indipendente dal lato server struttura.

Se non si dispone di troppo java-script ma si desidera una certa modularità, è sempre possibile attenersi alle funzioni di chiamata anonima che gestiscono le dipendenze ordinando prima i tag di script con le dipendenze e facendo riferimento l'un l'altro registrandosi con un singolo oggetto nel namespace globale. Questo almeno li rende quasi modulari e non ti costa molto da implementare.

    
risposta data 21.11.2011 - 22:42
fonte
0

Ecco alcune istruzioni su come eseguire il design modulare: link

anche questo: " SOA può essere visto in un continuum, da vecchi concetti di calcolo distribuito e programmazione modulare , tramite SOA, e fino alle attuali pratiche di mashup, SaaS , ... "

L'organizzazione del codice HMVC da sola, non conduce necessariamente alla modularità.

    
risposta data 25.12.2012 - 23:10
fonte

Leggi altre domande sui tag