2010-12-14 66 views
1

Actuellement, j'utilise un service Web pour appeler la base de données et renvoyer un objet à mon application MVC. Le but est d'afficher les données sur une table.Tapant fortement une vue à une classe du webservice?

Alors, est-ce que je serais mieux si je tapais juste le View à la classe du webservice, ou devrait-il toujours être tapé à un modèle dans l'application MVC? Si je le tape sur un modèle dans mon application, alors je devrais créer une nouvelle instance de la classe et copier toutes les informations, ce qui semble être une perte de temps.

Lequel est considéré comme la meilleure pratique? Tapant fortement à une classe du webservice ou une classe dans l'application MVC?

Cheers.

+0

pourquoi votre contrôleur ne peut-il pas appeler le modèle/la base de données? vous n'avez pas besoin de services Web pour les applications mvc, car les contrôleurs sont capables de retourner pratiquement n'importe quoi (html, xml, json, images, etc). – RPM1984

Répondre

1

La meilleure pratique consiste à protéger votre application contre les modifications externes et vos vues de connaître les composants internes de l'application. Donc, je voudrais juste créer une classe séparée et ensuite le mapper à la classe de service Web. Vous pouvez également utiliser quelque chose comme AutoMapper pour faire le mapping pour vous.

1

Vous ne devriez pas avoir de dépendance à la classe de WebService. Le ViewModel de MVC est conçu pour être une simple représentation de données. Vous pouvez mapper facilement votre classe WebService à la classe ViewModel en utilisant AutoMapper. Ceci est considéré comme la meilleure pratique et décrit dans this book.

1

Oui. La meilleure pratique consiste à utiliser un modèle de vue sans couplage au modèle de domaine - un simple DtO. Cependant, toute validation appliquée à votre domaine doit être répliquée. Donc parfois le compromis est de passer des entités de domaine à la vue - et je suis très heureux de le faire.

Dans votre cas - allez avec le DTO comme d'autres ici suggèrent. Pourquoi avez-vous même besoin d'un service Web?