2009-01-14 8 views
5

Nous utilisons environ 7 services en ce moment. Il y a assez grand.Comment utiliser le principe de la responsabilité unique dans les grands services wcf?

Quelqu'un a-t-il une expérience du principe de la responsabilité unique et des services de la WCF? Cela signifie-t-il que vous allez vous retrouver avec beaucoup de petits contrats? Si oui, comment gérez-vous ceux-ci dans votre application?

+0

Je m'interroge à ce sujet aussi! Je ne fais que planifier les contrats de service de la WCF, et puisque chaque contrat devrait être petit et être responsable d'une unité de travail contenue, je pourrais me retrouver avec des centaines de contrats. Cela ne peut pas être le point, peut-il? – Sam

Répondre

6

Je pense que vous confondez la responsabilité unique avec la ségrégation de l'interface. Du point de vue de l'interface client/service, vous devriez garder vos contrats allégés et mesquins. Voir ci-dessous pour un exemple de cela. Du côté de la SRP, cela devrait être entièrement interne à l'implémentation du service et le client ne devrait pas être conscient de cela. Si votre code de service est trop grand, divisez-le en classes. Ensuite, ayez votre code de service, au moins initialement, agir comme une façade et transmettre tous les appels aux objets pertinents. Plus tard, vous avez la possibilité de scinder votre service en plusieurs services. Mais sachez que SOA et la conception orientée objet, bien que se chevauchant, sont séparés et ont des exigences différentes.

Exemple de ségrégation d'interface: Nous avons ici un service que nous utilisons pour effectuer diverses fonctions sur certains objets métier. Le service d'origine avait une interface. Au fur et à mesure de son développement, nous avons réalisé que nous avions trois familles de méthodes: la persistance des objets de données, les mises à jour métier, l'analyse métier. Nous nous divisons en trois contrats. Notre client/service implémente tous les 3, donc la seule chose que nous devions faire était de scinder le contrat en trois et d'installer deux endpoints supplémentaires dans notre configuration WCF. Très simple.

Espérons que cela aide.

1

Je vous propose d'écouter ce podcast sur les Hanselminutes:

SOLID Principles with Uncle Bob - Robert C. Martin

Il contribuerait à mieux comprendre les choses. . .

+0

Je l'ai fait;) En fait, cela m'a fait explorer le principe de la responsabilité unique pour voir si cela vaut la peine de changer notre projet. J'aime tous les petits exemples de rectangles et de carrés et d'autres choses, mais comment ça marche dans la vraie vie? – Sorskoot

1

Vous pouvez appliquer un modèle de façade pour le service Web qui s'interface avec le client. Dans votre code d'implémentation, vous pouvez appliquer une seule responsabilité pour le rendre maintenable.