Pourquoi dans certains cadres, la couche logique est appelée "modèle" alors que dans certains, elle est appelée "service". Sont-ils différents les uns des autres ou simplement différents par les conventions de dénomination?
MISE À JOUR 1
La raison pour laquelle je demande, c'est parce que dans Zend Framework, un framework MVC classique, tout le monde utilise le concept de modèle. J'apprends maintenant AngularJS et il semble que le mot Model ait disparu et ait été remplacé par le mot service.
Ce que j'ai remarqué, c'est qu'un service ressemble plus à un singleton qui peut être réutilisé encore et encore (exemple: un client REST) alors qu'un modèle est plus lié aux manipulations de données provenant du contrôleur dans le modèle MVC.
Réponses:
Modèle: champs qui appartiennent à l'objet, méthodes qui aident à obtenir / définir des données à partir de l'objet (un accesseur de nom complet qui renvoie le prénom + le nom)
Service: Méthodes pour effectuer des opérations avec un ou plusieurs modèles, voir 'unité de travail', transactions, etc ...
Employee :: create devrait simplement prendre un ensemble de données, effectuer la validation du modèle si nécessaire et renvoyer un objet Employee.
EmployeeService :: locationEmployee peut créer l'employé, lui envoyer un e-mail de bienvenue, créer une boîte aux lettres, lui faire un sandwich, etc ... il peut renvoyer l'ensemble de données, ou un code de résultat, etc ...
Cela peut également affecter la validation:
Validation du modèle: l'employé doit avoir un identifiant, un prénom, un nom et un anniversaire
Validation du service: Les employés du poste de barman doivent avoir 21 ans ou plus et être approuvés par un gestionnaire.
la source
D'après mon expérience, la couche Model dans le modèle de conception MVC fait référence à chaque composant logiciel impliqué dans la manipulation des données (POJO, DAO, jusqu'à SQL, JDBC, etc.).
Alors que la couche service est en fait un ajout à MVC:
Nous savons que les composants de la couche Model sont appelés à l'intérieur de la couche Controller . Une fois que ce dernier est construit, vous vous rendez compte qu'il n'a pas l'air concis (désordonné avec du code sale); le contrôleur peut ne pas fournir de détails supplémentaires (par exemple, les paramètres de demande de formatage avant d'appeler une méthode DAO qui vont les consommer ...). Par conséquent, vous pouvez inclure cette couche supplémentaire, à savoir la couche Service .
Finalement, vous pouvez inclure votre code sale dans des méthodes statiques avec un nom significatif, des paramètres, etc., ce qui aboutirait à une couche de contrôleur synthétique.
Jetez un œil à ce lien:
/programming/2762978/the-purpose-of-a-service-layer-and-asp-net-mvc-2
la source
Structurellement, ces classes de base sont les mêmes, mais elles sont utilisées pour classer différentes préoccupations des niveaux Service et Modèle de l'implémentation MVCS
Ainsi, alors que les classes de base se ressemblent, les classes concrètes créées en étendant ces classes de base ont deux objectifs entièrement différents.
la source