39 votes

Meilleure pratique pour un grand service WCF?

Quelle est la meilleure pratique pour écrire un service wcf plutôt volumineux, contenant de nombreux OperationContracts et DataContracts?

Comment pourrais-je séparer les domaines fonctionnels en plusieurs contrats, serait-il préférable de créer un point de terminaison pour chaque domaine fonctionnel?

Existe-t-il un moyen de séparer la source des différentes parties tout en utilisant un seul service pour toutes les parties?

Où puis-je obtenir de bonnes informations sur la planification des contrats, les éléments à inclure, les méthodes de scission ...?

16voto

Kilhoffer Points 13430

C'est une grande question entourant les services depuis leur création. SOA fait avec succès SOA est prévu dans la mesure où vous êtes en train de parler. Cela dit, j'ai toujours penché de plus en plus vers le fractionnement des services, mais de les utiliser dans un composite manière. C'est, à plusieurs points de terminaison lorsque vous avez plusieurs contrats, mais la plupart d'entre eux ne sont consommés que par quelques points de terminaison qui sont consommés par les appelants. (wow, c'était une bouchée, at-il encore un sens?)

Aussi, je vous conseille de le nombre de contrats que possible. Trop de contrats peuvent conduire à une mauvaise gestion. Un bon contrat de conception permettra de limiter le nombre de points de terminaison et les appels de service. Retrait des concepts OO de la conception du contrat est une façon de le faire. Contrat de conception est un vaste sujet en lui-même, mais il suffit de dire que, grâce à une bonne planification des contrats (à l'avant), vient de la bonne conception d'un service.

Maarten Mullender écrit un super blog sur WCF conception, et est à lire absolument. Il y a également quelques grands SOA/WCF livres émergents ainsi.

Quelques bons livres:

5voto

Abel Points 324

Cela m'a été utile car il provient du site Web idesign.net et a été écrit par Juval Lowy:

Norme de codage WCF

5voto

Daniel Crenna Points 1853

Je vais aller hors de la piste et dire que j'ai utilisé monolithique des contrats WCF, fonctionnellement séparés des contrats (avec un maximum de dix modes de Juval de lignes directrices dans son livre), et j'ai aussi essayé un message architecture de gestion des cas où un service est une méthode simple qui prend un message de base, et les gestionnaires qui "savent" comment déballer et de traiter le message après il traverse le fil.

Je suis un grand fan de ce dernier, si vous avez .NET sur les deux côtés de la barrière. Oren a un screencast sur l'idée avec code. Je ne sais pas quels sont vos besoins, mais c'est de travailler pour moi.

http://ayende.com/Blog/archive/2008/03/30/Hibernating-Rhinos-8--Going-Distributed-amp-Building-our-own.aspx

Cela dit si vous êtes déjà venue à partir de "j'ai besoin d'un grand service WCF", puis allez à une méthode est probablement ne va pas le couper pour vous. Si cela est vrai, alors Juval Lowy de la Programmation des Services WCF est la norme que vous devriez maintenir dans votre conception.

4voto

jezell Points 2430

J'ai un post ici sur la façon dont les opérations sont différentes des traditionnelles opérations de code:

http://www.iserviceoriented.com/blog/post/Introduction+de+Service+Orienté+Architecture.aspx

Vous devriez vous retrouver uniquement avec des opérations réelles des événements d'affaires. Si jamais vous arrêter et de se dire "j'ai besoin d'activer le support des transactions sur mon web service", ce qui signifie que vous n'avez pas conçu l'opération avec un assez large champ d'application. Vous ne devriez jamais avoir à activer le service web de support de transaction.

Je recommande fortement la Facture Poole blog de niveau supérieur concepts SOA. Voici un post pour commencer:

http://feeds.feedburner.com/~r/BillPoolesCreativeAbrasion/~3/328955489/service-contract-stability.html

0voto

RobDeManc Points 6

Je sais que c’est un article ancien, mais je pense aux services de la même manière qu’aux objets dans la programmation.

Gardez-les à leur strict minimum pour ce qu'ils doivent faire. Bien sûr, ne pas aller à l'extrême, mais je prends mes décisions en fonction des entités de données.

Un service pour le compte, un pour le produit, etc.

Je ne sais pas ce que quiconque en penserait si…

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X