Un service est une façon d'écrire une interface à un système externe, tel qu'un LDAP identité magasin, une passerelle de paiement ou d'une application à l'interface de gestion. C'est une manière conceptuelle de la recherche à l'extérieur du système en tant que fournisseur de services utiles peut-être avec interne des comportements plutôt que passif forfaitaire pour être opéré.
Une façade est une façon d'habillage de quoi que ce soit (y compris un service) pour présenter joliment à un autre composant. Les façades sont souvent utilisés lorsque:
- Une bibliothèque ou d'un composant est complexe et les besoins de votre application uniquement un sous-ensemble. Votre Façade présente la procédure simplifiée de l'API de l'application
- Vous êtes à l'aide de plusieurs bibliothèques ou les composants et la nécessité de les unifier, de présenter un consolidés de l'API de l'application
- La bibliothèque que vous utilisez a un complexe d'installation ou d'un ensemble de dépendances, et la façade encapsule tout ce qui dans le contexte de votre application.
Le peu qui est vraiment déroutant, c'est que vous pouvez (et même souvent) de créer une façade de plus de un ou de plusieurs services. Le service est de cette manière que l'élément accède à la ressource, et la façade est le bit qui simplifie le composant (tels que la configuration des options de connexion, etc).
Si vous écrivez votre propre DAO, vous n'aurez probablement créer votre service juste la façon dont vous avez besoin, de sorte que l'écriture d'une façade est une indication que vous avez fait mal. Si le DAO est réalisé par un tiers, et est plus complexe que vos besoins, alors vous pouvez façade le service.
Maintenant, un service est un moyen de faire des appels à plusieurs DAOs afin d'obtenir des structures de données complexes (je ne suis pas trop sûr de cela, mais c'est ce que j'ai compris jusqu'à présent).
Je dirais que le DAO est un modèle de conception qui lui est propre - voir wikipedia.
Si nous comparons un DAO avec un service, nous avons:
- Au niveau de l'API:
- DAO: accès précis aux propriétés
- Service: Grossière de l'accès aux services
- Lorsque la mise en œuvre des mensonges:
- DAO: Principalement sur le client, mais le stockage des données (sans comportement) dans la base de données
- Service: Principalement sur le serveur
- La façon dont l'interface est appelée
- DAO: Le client se lie directement à l'objet dans le même espace de noms et la JVM
- Service: Le client est tout simplement un stub pour un réseau, de la croix-vm ou de la croix-espace de noms de l'opération
... la façade peut parfaitement accéder à plusieurs DAOs afin d'effectuer une opération complexe, en fournissant une interface simple, et un service semble quelque chose de similaire.
Une façade peut envelopper la couche DAO, mais je ne vois vraiment pas ce qui se passe dans une manière utile. Probablement vous avez besoin d'une API pour accéder aux propriétés des objets, parcourir le graphe d'objets et similaires, et c'est précisément ce que le DAO fournit.
Même chose arrive avec les transactions, je comprends qu'un service est le point de départ des opérations ...
Absolument, parce que l'opération est un service fourni par la base de données et sur un autre composant ou d'un système
... mais j'ai aussi l'impression qu'ils pourraient également être placés sur les façades, après tout, une façade peut appeler plusieurs DAOs trop.
Et à bien des égards le gestionnaire de transactions de service est une façade sur une beaucoup plus complexe backend de mise en œuvre, de la coordination de la transaction sur le web, application, base de données et de la transaction-connaissance des composants. Cependant c'est déjà disparaît par le service de transaction de mise en œuvre. Aussi loin que nous, les utilisateurs, sont concernés, il y a seulement l'interface publique.
C'est, en fait, le concept de ces modèles de conception - pour fournir juste la bonne quantité de l'API à l'utilisateur, en faisant abstraction de la complexité de la mise en œuvre derrière le mur de fer de l'interface du composant.
Donc, qui mettent aurait plus de sens
contrôleur-façade-dao contrôleur de service de dao
ou peut-être
contrôleur-facadade-dao ET parfois contrôleur-façade-service-dao ??
- Le DAO est une sorte de service à la base de données, mais vraiment le DAO est un modèle de conception lui-même.
- Si vous écrivez votre propre DAO, vous ne devriez jamais avoir besoin d'une façade.
C'est donc la bonne réponse est: