2009-01-06 7 views
3

Je suis en train de développer un service Web WCF qui est devenu très pléthorique. Quelles techniques utilisez-vous pour séparer l'exécution du contrat?WCF Web Service Bloat

Répondre

4

Eh bien, vous avez un choix de couple:

D'abord, vous pouvez tout laisser dans une classe, mais subdivisée en types de fichiers différents en utilisant la fonction de classe partielle de C#. Deuxièmement, vous pourriez avoir la classe de service principale simplement passer les demandes à l'une des nombreuses autres classes qui sont organisées logiquement.

Une troisième alternative consiste à considérer refactoring pour réduire le nombre d'opérations que vous avez. Y a-t-il réellement un usage à toutes les méthodes que vous exposez?

Enfin, vous pouvez toujours diviser le service en plusieurs services WCF.

1

Il est difficile de répondre à votre question si vous ne donnez pas plus d'informations. Voulez-vous dire que votre interface de service est gonflée, ou la mise en œuvre de la classe? Il est difficile de répondre correctement, si je ne vois pas le code, ou si je n'ai pas d'autres informations, je vais essayer:

Notez que le service WCF est fondamentalement juste une classe régulière qui implémente une interface et possède quelques attributs sur ses méthodes. Donc, toutes les autres bonnes règles de conception OO s'y appliquent. Pensez à ce qu'il fait, a-t-il vraiment une responsabilité unique, sinon essayez de sous-traiter une partie de cette responsabilité à d'autres classes dont dépend votre service. Si vous avez besoin d'un constructeur autre que celui par défaut, utilisez IInstanceProvider pour créer la classe de service et fournissez-lui ses dépendances (ou si vous utilisez le conteneur Windsor, utilisez WCF Facility).

Si vous voulez vraiment vous pouvez vous attaquer à votre chaîne d'héritage, et déplacer une partie du code vers une classe de base. Je ne le fais pas, cependant et préfère toujours utiliser la composition sur l'héritage.

Inspectez votre contrat de service, et de réfléchir à la façon dont il est vraiment cohérent. Peut-être que ce que vous devriez faire est de le diviser en quelques services plus petits et plus cohérents.

Questions connexes