MVC: qual è la differenza tra un modello e un servizio?

10

Perché in alcuni framework il livello logico è chiamato "Model" mentre in alcuni è chiamato "Service". Sono diversi l'uno dall'altro o semplicemente diversi dalle convenzioni sui nomi?

UPDATE 1

Il motivo per cui lo chiedo è perché in Zend Framework, un classico framework MVC, tutti usano il concetto di Model. Ora sto imparando AngularJS e sembra che la parola Model sia scomparsa e sia stata sostituita dal servizio word.

Quello che ho notato è che un servizio è più simile a un singleton che può essere riutilizzato più volte (esempio: un client REST) mentre un modello è più correlato alle manipolazioni di dati provenienti dal controller nel pattern MVC.

    
posta Guilhem Soulas 25.02.2014 - 16:46
fonte

3 risposte

14

Modello: campi che appartengono all'oggetto, metodi che aiutano a ottenere / impostare i dati dall'oggetto (un accessore fullname che restituisce prima + cognome)

Servizio: metodi per eseguire operazioni con uno o più modelli, vedere "unità di lavoro", transazioni, ecc.

Employee :: create dovrebbe semplicemente prendere un set di dati, eseguire la validazione del modello, se necessario, e restituire un oggetto Employee.

EmployeeService :: hireEmployee potrebbe creare il dipendente, inviare loro una email di benvenuto, creare una casella di posta, renderli un sandwich, ecc ... potrebbe restituire il set di dati, o un codice di risultato, ecc ...

Ciò può influire anche sulla convalida:

Convalida del modello: il dipendente deve avere un ID, il nome e il cognome e il compleanno

Convalida del servizio: i dipendenti per la posizione del barista devono avere almeno 21 anni e devono essere approvati da un manager.

    
risposta data 25.02.2014 - 16:59
fonte
2

Strutturalmente queste classi di base sono le stesse, tuttavia vengono utilizzate per classificare una serie di problemi relativi ai livelli di servizio e di modello dell'implementazione MVCS

Service:- A concrete service class defines the API of an external Service.

Model :- Defines the API of the applications data model.

Quindi, mentre le classi base sono simili, le classi concrete create estendendo queste classi base servono due scopi completamente diversi.

    
risposta data 25.02.2014 - 18:57
fonte
2

Secondo la mia esperienza, il livello Modello all'interno del modello di progettazione di MVC si riferisce a tutti i componenti software coinvolti nella manipolazione dei dati (POJO, DAO, fino a SQL, JDBC e così via).

Mentre il livello di servizio è in realtà un'aggiunta a MVC:

Sappiamo che i componenti del livello Modello sono richiamati all'interno del livello Controller . Una volta che quest'ultimo è stato costruito, ti rendi conto che non sembra conciso (incasinato con codice sporco); il Controller potrebbe non permettersi ulteriori dettagli (ad esempio, i parametri di richiesta di formattazione prima di chiamare un metodo DAO che li consumerà ...). Pertanto, potresti includere questo livello aggiuntivo, ovvero il livello Servizio .

Alla fine, potresti includere il tuo codice sporco all'interno di metodi statici con un nome significativo, parametri e così via, che risulterebbe in un livello Controller sintetico.

Dai un'occhiata a questo link:

link

    
risposta data 25.02.2014 - 22:04
fonte

Leggi altre domande sui tag