Architettura di un'applicazione web "generatore di siti web"

4

Qual è il modo più manutenibile ed efficiente per progettare un'applicazione Web il cui scopo è ospitare e generare siti Web che possono essere personalizzati in una certa misura?

Ci sono molti di questi tipi di applicazioni in natura che generano tutti i tipi di siti, dai siti che ospitano le gilde di World of Warcraft ad altri siti che ospitano siti di matrimoni. La mia domanda è, qual è l'architettura di base su cui operano questi siti?

Immagino ci siano due modi per pensarci. Un set di codice centrale che tutti i siti dell'host sono in esecuzione e che agisce in modo diverso in base al sito visitato. In questo modo, quando il codice base viene aggiornato, tutti i siti vengono aggiornati simultaneamente.

Oppure, il codice per un singolo sito esiste in un silo e viene semplicemente replicato in una nuova directory ogni volta che viene creato un sito. Quando è necessario applicare un aggiornamento, il codice viene inviato a ogni silo del sito.

Nel mio caso, sto lavorando in PHP con il framework CodeIgniter, tuttavia la risposta non deve essere limitata a questo caso. Quale metodo (se esiste) crea un'architettura più manutenibile ed efficiente per gestire questo stile di applicazione web?

    
posta Resorath 04.07.2012 - 22:44
fonte

2 risposte

2

Verso la fine degli anni '90, ho lavorato su un paio di progetti come questo, e ho usato due modi diversi per farlo. Li hai definiti abbastanza bene.

Il primo modo è avere tutto dinamico e proveniente dal database. Questo è il modo in cui la maggior parte dei CMS funziona in questo momento e penso che sia il modo più efficace se si prevede di ospitare tutto. Non lo descriverò qui perché è ben definito ovunque.

Il secondo modo è avere un vero generatore di siti web. I componenti sono i seguenti:

  • Configurazione: quali caratteristiche ha bisogno il proprietario del sito? Ha bisogno di una galleria fotografica o forse di un libro degli ospiti? (scusa sto parlando con la lingua della fine degli anni '90 qui :)). Ciò che viene definito qui viene utilizzato per assemblare i componenti disponibili del sito Web generato.
  • Dati individuali: include cose come descrizione dell'azienda, logo, email o nomi di dominio.

Sulla base di ciò, il generatore assemblare i componenti (nel mio caso si trattava di codice sorgente come pagine ASP o PHP e un database collegato) e l'output sarebbe un sito web pronto per essere caricato.

Il processo di creazione potrebbe essere automatizzato al 100% e l'output scaricato alla fine del processo. Il processo di aggiornamento non sarebbe diverso da qualsiasi codice sorgente dell'applicazione scaricabile disponibile, come Wordpress. Infine, poiché l'output non è compilato, il cliente è stato in grado di personalizzare tutto.

Oltre a questo modo abbastanza semplice per generare siti Web, ti consiglio di includere un sistema di plugin, proprio come Wordpress, che consenta al tuo cliente di creare i propri componenti.

    
risposta data 05.07.2012 - 10:41
fonte
0

C'è una terza opzione che è un ibrido tra i due che esponi.

I siti sono generati dinamicamente dal database e il risultato viene archiviato in una cache per un periodo di tempo definito. Puoi visualizzare questa architettura in due modi:

  • Sistema dinamico con cache.
  • Sistema statico che esegue per rigenerare il sito Web in un determinato periodo di tempo.

La cosa divertente è che è la stessa cosa, hai la scalabilità di un sistema statico e la flessibilità di un sistema dinamico, un modo per pensare che questo è il modo in cui la maggior parte di questi siti è costruita. Molto simile al modello architettonico CQRS.

    
risposta data 07.03.2014 - 11:46
fonte

Leggi altre domande sui tag