Esiste uno schema di progettazione ad eccezione di MVC per il web?

14

Voglio sapere se esistono modelli di design per il Web oltre a MVC?

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

C'è un modello di progettazione come MVC è un insieme di altri modelli di progettazione?

Modifica: il mio linguaggio di programmazione è PHP.

    
posta smoqadam 26.07.2012 - 06:01
fonte

8 risposte

25

Ci sono diversi modelli nello sviluppo del software; MVP, MVVM, MVC, ecc. sono alcuni dei più noti. Tuttavia, devi definire il problema specifico o la tecnologia che intendi risolvere o utilizzare.

Ciascunodiquestimodellièbuonoperrisolverealcunispecificigruppidiproblemi.Adesempio,il pattern MVP (Model View Presenter) aiuta a introdurre la separazione delle preoccupazioni in Sviluppo di ASP.NET WebForms. Consiste nel dividere le responsabilità per la raccolta, la visualizzazione e l'archiviazione dei dati da una pagina Web in oggetti separati: un oggetto Model, un oggetto View e un oggetto Presenter.

Il più famoso libro di cucina generale di design pattern è Gang of Four (GoF) design pattern .

Modifica: suppongo che tu sia più interessato a implementare modelli di progettazione sulla piattaforma .NET

    
risposta data 26.07.2012 - 06:13
fonte
7

Un bel modello, che ho trovato diverse settimane fa, è MOVE . Sembra un po 'più sofisticato come MVC, ma si basa sullo stesso principio. Uno svantaggio di MVC è che i tuoi controller possono diventare veramente grandi. Usando il pattern MOVE, gestirai questo problema, un po '.

Anche altri modelli, nominati dagli altri, sono buone alternative.

    
risposta data 26.07.2012 - 09:40
fonte
4

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

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

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

MVC è così popolare perché offre un modo consolidato e comprensibile per separare la modellazione dei dati e la logica di elaborazione dal livello vista / 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 pattern MV x sono (almeno in principio) tutti gli stessi "schemi di progettazione".

Tipicamente, diversi modelli di progettazione hanno tutti scopi (spesso sottilmente) diversi e in molti casi sono stati sviluppati tenendo conto di un linguaggio specifico. Tuttavia, un vero "modello di progettazione" non è una regola dura e veloce per la programmazione ed è in realtà una comprensione più filosofica / ideale di un'implementazione di programmi e di requisiti di progettazione e di funzioni logiche.

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

In pratica non c'è nulla che ti impedisca di implementare il tuo 'pattern', IMO il modo migliore è imparare facendo, per me almeno non ho capito completamente il pattern MVC fino a quando non ho iniziato a provare a scrivere un sito web usando esso.

Una volta compresi alcuni concetti di programmazione e best practice, è possibile utilizzarli per creare il proprio sistema per risolvere i problemi specifici che si stanno affrontando e per soddisfare le proprie esigenze, sia che si conformino a un "modello" stabilito o meno.

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

    
risposta data 26.07.2012 - 13:43
fonte
3

Uno degli esempi più famosi è Knockout.js che è un framework javascript che utilizza Modello di progettazione MVVM . C'è un ottimo articolo qui su overflow dello stack confronto tra il framework MVC Backbone.js e 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.

    
risposta data 26.07.2012 - 08:41
fonte
0

Come ha sottolineato ElYusubov, il framework ASP.Net ha da tempo modelli MVP e MVVM, se si cercano esempi relativamente importanti. Una delle principali differenze tra MVC e MVVM è il modo in cui le entità vengono aggiornate; MVC è più adatto al tradizionale approccio stateless o semi-stateless delle applicazioni web. Il framework ASP.Net ha cercato di aggirare questo problema mantenendo il proprio stato incorporato in un modulo (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 per JavaScript, con gran parte del loro stato sul client. Ciò potrebbe portare a un risorgere nei framework MVVM e Knockout JS è un esempio.

    
risposta data 26.07.2012 - 08:17
fonte
0

La maggior parte dei modelli in natura sono MVC o alcuni tipi di MVC. Dopotutto ha senso dividere i tuoi dati (Modello), la rappresentazione (Visualizza) e l'interazione con esso (Controller). Se guardi MVC come è stato fondato negli anni '80, scoprirai che non è mai stato pensato per essere un framework web. Così l'ho trovato molto sovraccarico nel web.

Un altro modello ben noto sarebbe la Service Oriented Architecture (SOA). Costruito su questo, un approccio moderno sarebbe avere un MVC (o 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 con tecnologia HTML5 e JavaScript (per esempio Twitter o Linked In). L'applicazione client utilizzerà il proprio servizio lato server (la "vista" del server) come modello. IMHO, questo sarebbe lo stato dell'arte e probabilmente spingerà il lato server solo su MVC.

    
risposta data 26.07.2012 - 08:22
fonte
0

Sto personalmente cercando di implementare qualcosa che usi l'idea di Rappresentazione dei metodi di risorse , anche se in questa fase è soprattutto un esperimento più che altro. Ha alcuni punti convincenti nel fatto che modella una richiesta / risposta HTTP meglio di MVC (che è pensato per le applicazioni di lunga durata che girano su un singolo computer rispetto alle sessioni di richiesta / risposta di breve durata). Tuttavia, ha lo svantaggio che se metti metodi nelle tue risorse per gestire GET, POST, PUT, DELETE, ecc, allora le tue risorse diventano accoppiate al front-end. Sto pensando di separarlo in un altro livello.

    
risposta data 26.07.2012 - 09:43
fonte
0

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

ad esempio:

  1. Modello-Visualizzazione modello - MTV
  2. Model-view-presenter - MVP
  3. Hierarchical model-view-controller HMVC
  4. Model View ViewModel- MVVM

etc

    
risposta data 19.05.2016 - 14:10
fonte

Leggi altre domande sui tag