2010-11-05 5 views
4

Est possible d'avoir une mise en page pour l'architecture basée sur le Web basée sur MVC où SOA est le style architectural. Ou pour reformuler, les services peuvent faire partie des M, V, C de MVC. Si oui, quels types de services peuvent être inclus dans chacun d'eux. Aussi, pouvez-vous me donner un exemple du monde réel?Pouvons-nous implémenter le style SOA dans l'architecture MVC

Répondre

6

Dans une application SOA, vous n'incluez généralement pas l'extrémité avant (couche de présentation). Vous consommez ces services dans votre application MVC, ou mieux encore dans un projet "modèle" distinct que l'application MVC utilise.

Data Access -> Business Logic -> Services -> Modèles -> MVC

Le point est d'utiliser les services pour créer une abstraction autour de la base de votre application pour permettre à plusieurs clients de consommer ces services.

+0

J'aime votre réponse, mais je suis un peu confus en ayant deux modèles * * - * le modèle * dans MVC * plus * celui que vous mentionnez.Y at-il une raison pour laquelle MVC ne devrait pas parler directement aux services (que ce soit dans le modèle ou le contrôleur)? –

+1

@Kirk, non, il n'y en a pas. Cependant, je trouve plus agréable d'abstraire les services dans les modèles. Ensuite, je peux aussi créer mes propres modèles de vue, ce qui est souvent nécessaire car les modèles ne sont pas alignés sur les vues à 100%. –

1

Cela dépend de ce que vous entendez par SOA. Si vous faites référence aux normes WS- *, je ne recommanderais pas MVC, car vous aurez besoin d'écrire beaucoup de plomberie pour le faire fonctionner.

Si vous recherchez quelque chose comme un service REST, le modèle MVC fonctionne plutôt bien. La requête est l'emplacement HTTP de la ressource, qui est transmise au contrôleur, qui charge les données via le modèle, puis les transmet à la vue qui les renvoie sous la forme requise (JSON, XML, binaire, etc.). Ou, vous pouvez souvent renvoyer le résultat directement, en fonction du framework que vous utilisez.

Erick

+0

Si nous considérons le système de vote électronique, je les ai implémentés comme service d'enregistrement, service d'authentification, service de vote, etc ... Si je devais utiliser MVC, j'aurais probablement réorganisé ces services pour qu'ils s'intègrent dans le modèle Vue et contrôleur de MVC. Aussi pour que ces services interagissent, je pourrais utiliser la technologie REST. Est-ce ainsi que ça fonctionne? – rbp

+0

Je ne suis pas d'accord. Une vraie application orientée service est tout à fait possible avec MVC et avec n'importe quel autre framework sur n'importe quelle plate-forme. C'est le but de SOA. MVC n'a rien à voir avec cela, le frontal devrait simplement consommer les services. –

+1

@Dustin, je suis d'accord que MCV peut s'adapter à SOA, pour une valeur donnée de SOA. J'espère que mon message n'implique pas autrement! Mon point principal était que SOA inclut souvent les trucs WS- *, ce qui est très difficile à utiliser lors de l'utilisation de MVC. Je parle des technologies MVC courantes, pas du modèle MVC en général, car cela ouvrirait une toute nouvelle boîte de Pandore. –

4

je tends à terme le modèle représenté dans la couche client/présentation comme ViewModel, il est tout simplement les couches de présentation vue du modèle. Ceci est nécessaire dans une SOA car le contexte du consommateur du Modèle change souvent

Dans les SOA, nous essayons d'obtenir un schéma canonique pour le contrat, car il est fort probable que non. tous les clients maintenant et à l'avenir auront besoin exactement de la même vue du modèle. Qu'il s'agisse d'un client Web, d'un client de service ou d'un client de bureau, si vous considérez le modèle dans MVC comme ViewModel, cela vous permet d'abstraire les objets de la couche de présentation et vous rapprochez schéma canonique.

donc un exemple Voir >> Controller >> ViewModel (modèle) >> contrat de données >> Service de

Des exemples de la façon de construire une pile de service comme celui-ci se trouvent ici:

SOA Design Pattern

La décision d'opter pour une architecture REST ou une version complète de WS- * SOAP constitue une préoccupation distincte et ne devrait pas affecter votre choix de MVC en tant que modèle de présentation.

Il peut bien sûr exister d'autres contraintes qui empêchent l'utilisation de l'une ou de l'autre.

Choisir un modèle de présentation pour un développement Web nouveau ou d'entreprise sur la plate-forme Microsoft est une tâche ardue, à mon avis il n'y en a que trois; Voir le modèle, MVP (Model-View-Presenter) ou ASP.NET MVC (dérivé de Model2).

Vous pouvez lire l'article complet ici ASP.NET MVC Patterns