Esiste un modello di progettazione diverso da MVC per il web?


15

Voglio sapere ci sono dei modelli di progettazione per il web oltre a MVC?

So che ci sono modelli di progettazione come: Registry, Observer, Factory, ActiveRecord, ... e MVC un insieme di altri modelli di progettazione e struttura di cartelle.

Esiste un modello di progettazione come MVC è un insieme di altri modelli di progettazione?

Modifica: il mio linguaggio di programmazione è PHP.


C'è sempre il modello BBOM .
zzzzBov,

1
@ Mr-Moqadam, per favore dai un'occhiata - meta.stackexchange.com/questions/5234/…
Yusubov

Credo che le risposte di seguito rispondano a tutti gli aspetti della tua domanda. Potresti accettare il migliore e aiutare la comunità.
Arpith,

Che dire del modello Flux di FB.
Muhammad Umer,

Vedi anche Visualizza prima .
nawfal,

Risposte:


25

Esistono diversi modelli nello sviluppo del software; MVP, MVVM, MVC, ecc. Sono alcuni dei più noti. Tuttavia, è necessario definire il problema specifico o la tecnologia che si intende risolvere o utilizzare.

inserisci qui la descrizione dell'immagine

Ognuno di questi schemi è utile per risolvere alcune serie specifiche di problemi. Ad esempio, il modello MVP (Model View Presenter) aiuta a introdurre la separazione delle preoccupazioni nello sviluppo di WebForms ASP.NET. Consiste nel dividere le responsabilità per la raccolta, la visualizzazione e l'archiviazione di dati da una pagina Web in oggetti separati: un oggetto Modello, un oggetto Visualizza e un oggetto Presenter.

Il più famoso ricettario generale di modelli di design è quello di Gang of Four (GoF) .

inserisci qui la descrizione dell'immagine

Modifica: suppongo che tu sia più interessato all'implementazione dei modelli di progettazione sulla piattaforma .NET


1
+1 vivremo con MVC definito come un modello, o una tecnica che vedrà presto o vicino vedrà il suo successore?
Indipendente,

6
+1 ma MVP, MVVM e MVC sono tutte varianti dello stesso tema: separare (g) ui dalla logica del modello e far mediare tra loro (controller, presentatore) di terze parti.
Marjan Venema,

2
@ Mr-Moqadam: MVC sembra inizialmente eccessivo e complicato. Fa quello che dovresti fare, separando UI, logica e dati. L'unica cosa certa nello sviluppo del software è il cambiamento. E come regola empirica; Il 20% è sviluppo, l'80% sta mantenendo. Da quel punto di vista, MVC vale sicuramente la pena. È anche il modello più semplice per raggiungere questo obiettivo, immagino.
Bruno Schäpper,

3
@ Mr-Moqadam: No, ti aiuta molto, anche se sei solo. E soprattutto in grandi progetti.
Bruno Schäpper,

1
@ Mr-Moqadam Chi ha mai detto che MVC è un modello di sviluppo del team? Sto sviluppando da molto tempo da solo utilizzando PHP e MVC è obbligatorio per me mantenere le cose mantenibili. Hai provato a utilizzare qualche framework PHP?
Songo,

7

Un modello piacevole, che mi sono imbattuto poche settimane fa, è MOVE . Sembra un po 'più sofisticato di MVC, ma si basa sullo stesso principio. Un aspetto negativo di MVC è che i controller possono diventare davvero molto grandi. Usando il modello MOVE, gestirai questo problema, un po '.

Altri schemi, chiamati dagli altri, sono anche buone alternative.


Pensavo che MVC fosse stato promosso usando i controller sottili ?! Conoscete il detto "Thin Controller e Fat Model"
Songo,

Lo fa, ma in realtà i controller tendono ad ingrassare.
Jan_V,

2
Questo perché hai inserito la logica di dominio nei controller, che non era l'intenzione del tipo originale di MVC di Krassner & Pope. I controller nel modo originale riguardano la gestione degli input, ad es. collegare i clic del mouse sulla coordinata (X, Y) in un'operazione del modello (come aumentare la temperatura in un'app termostato). Detto questo, la maggior parte del livello del controller in senso MVC è completamente automatizzato e quindi invisibile allo sviluppatore dell'applicazione in un framework.
Aadaam,

è SPOSTA come un flusso
Muhammad Umer il

4

La prima cosa da stabilire è esattamente ciò che devi fare, per decidere se un framework e / o MVC (o altro modello di progettazione) potrebbero essere di beneficio.

I framework sono lì per fornire una piattaforma coerente per lo sviluppo, fornendo di solito soluzioni a requisiti di programmazione comuni (come interazione con il database, creazione e validazione di moduli, autenticazione dell'utente ecc.)

Per PHP almeno il modello di progettazione MVC / HMVC tende a dominare i principali framework disponibili (ad es. Zend , CakePHP , CodeIgniter ecc.) Ma ci sono molti diversi modelli di progettazione che si potrebbero usare.

MVC è così popolare perché offre un modo consolidato e compreso di separare la modellazione dei dati e la logica di elaborazione dal livello di visualizzazione / presentazione (qualcosa che è considerato desiderabile per produrre applicazioni robuste e scalabili).

È importante notare (e come è stato espresso da @Marjan Venema in un commento alla risposta di @ ElYusubov) che MVC, MVP, MVVM e gli altri modelli MV x sono (almeno in principio) tutti lo stesso 'modello di progettazione'.

Modelli di design tipicamente diversi servono tutti (spesso sottilmente) a scopi diversi e in diversi casi sono stati sviluppati pensando a un linguaggio specifico. Tuttavia, un vero "modello di progettazione" non è una regola rigida e veloce per la programmazione ed è in realtà più una comprensione filosofica / idealogica dell'implementazione di un programma, dei requisiti di progettazione e delle funzioni logiche.

La ricerca è il modo migliore per scoprire diversi principi di programmazione e buone pratiche, ecco alcuni link di Wikipedia per iniziare:

In pratica non c'è nulla che ti impedisca di implementare il tuo 'modello', l'IMO il modo migliore è imparare facendo, per me almeno non ho compreso appieno il modello MVC fino a quando non ho iniziato a provare a scrivere un sito Web che lo utilizzava.

Una volta compresi alcuni dei concetti di programmazione e le migliori pratiche, è possibile utilizzarli per costruire il proprio sistema per risolvere i problemi specifici che si trovano ad affrontare e per soddisfare le proprie esigenze, sia che si conformi a un "modello" stabilito o meno.

Se non hai una serie specifica di problemi da risolvere, l'apprendimento di uno dei framework comuni è la soluzione migliore.


3

Uno degli esempi più famosi è Knockout.js che è un framework javascript che utilizza il modello di progettazione MVVM . C'è un ottimo articolo qui sull'overflow dello stack che confronta il framework MVC Backbone.js vs Knockout.js .

Un sidenote è che il modello di progettazione MVVM è nato da Microsoft come specializzazione del modello di progettazione PM di Martin Fowler. MVVM è ampiamente utilizzato dalle applicazioni WPF.


pagina non trovata!
Muhammad Umer,

1
@MuhammadUmer Grazie, ho aggiornato il link. Sfortunatamente StackOverflow ha eliminato quella domanda da oltre 1000 punti. Fortunatamente, la macchina di ritorno non ha un rigoroso sistema di moderazione.
dodgy_coder

Non sorpreso affatto ... mi aspetto che anche tutti i siti siano così.
Muhammad Umer,

0

Come ha sottolineato ElYusubov, il framework ASP.Net ha da tempo schemi MVP e MVVM, se stai cercando esempi relativamente tradizionali. Una delle principali differenze tra MVC e MVVM è il modo in cui le entità vengono aggiornate; MVC è più adatto al tradizionale approccio senza stato o semi-stateless delle applicazioni web. Il framework ASP.Net ha cercato di aggirare questo problema mantenendo il tuo stato incorporato in una forma (in modo che potesse essere ripristinato su ogni richiesta), il che ha reso più logici i modelli MVP e MVVM.

Con HTML5, le applicazioni stanno diventando sempre più pesanti di JavaScript, con gran parte del loro stato sul client. Ciò può portare a una rinascita nei framework MVVM e Knockout JS ne è un esempio.


0

La maggior parte dei modelli in natura sono MVC, o qualche sapore di MVC. Dopotutto ha senso suddividere i dati (modello), la rappresentazione (vista) e l'interazione con essi (controller). Se dai un'occhiata a MVC come è stato fondato negli anni '80, scoprirai che non è mai stato pensato per essere un framework web. Quindi l'ho trovato molto sovraccarico nel web.

Un altro modello ben noto sarebbe l'architettura orientata ai servizi (SOA). Basato su quello, un approccio moderno sarebbe quello di avere un MVC (o un sapore) sul tuo server, solo per esporre un servizio con cui puoi lavorare. Sul lato client ci sarebbe un'altra applicazione in stile MVC, ad esempio un'applicazione Web basata su HTML5 e JavaScript (ad esempio Twitter o Linked In). L'applicazione client utilizzerà il servizio lato server (la "Vista" del server) come modello. IMHO, questo sarebbe lo stato dell'arte e probabilmente spingerà da parte solo il server MVC.


0

Personalmente sto cercando di implementare qualcosa che utilizza l'idea della rappresentazione dei metodi delle risorse , sebbene in questa fase sia principalmente solo un esperimento più di ogni altra cosa. Ha alcuni punti convincenti in quanto modella una richiesta / risposta HTTP migliore di MVC (che è pensata per applicazioni di lunga durata in esecuzione su un singolo computer rispetto a sessioni di richiesta / risposta di breve durata). Tuttavia, ha lo svantaggio che se si inseriscono metodi nelle risorse per gestire GET, POST, PUT, DELETE, ecc., Le risorse vengono accoppiate al front-end. Sto pensando di separarlo in un altro livello.


0

Ci sono più di 1000 modi tranne MVC, alcuni di loro sono simili a MVC e altri totalmente diversi

per esempio :

  1. Model-Template-View - MTV
  2. Model – view – presenter - MVP
  3. Modello gerarchico-view-controller HMVC
  4. Vista modello ViewModel- MVVM

eccetera


1
questo non sembra offrire nulla di sostanziale rispetto ai punti formulati e spiegati nelle precedenti 7 risposte
moscerino del

questa è la risposta più semplice alla domanda che penso.
Saurabh Chandra Patel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.