Quelle est la différence dans WCF lors de l'utilisation de KnownType et ServiceKnownType?
J'ai un service qui retourne un tableau de l'animal, mais la liste peut contenir des chats, des chiens, etc, qui tous les animaux prolonger. Je sais que j'ai besoin d'utiliser la KnownType ou ServiceKnownType attribut, et sur l'entité de la classe ou de la classe de service, respectivement.
Quelle est la différence entre les 2 attributs? Je préfère le ServiceKnownType parce qu'il est appliqué sur le service, exactement là où il est nécessaire et demandé, par opposition à KnownType qui est appliqué sur mon entité. Pour moi, en l'appliquant sur la classe d'entité signifie sachant trop à l'avance la façon dont ma classe d'entité est utilisé.
Pour l'instant je l'ai sur mon entité et il fonctionne comme un charme, mais je suis à la recherche de conseils ici, les meilleures pratiques et l'utilité.
Vous devez vous connecter pour publier un commentaire.
Ils font la même chose, en fin de compte -, mais sur un champ d'application différent.
[ServiceKnownType]
définit une hiérarchie de classe pour toutes les méthodes de ce service, ou une méthode unique sur le service (selon l'endroit où vous mettez l'attribut). Donc dans ce cas, ce type de hiérarchie ne sera valable et applicable pour ce service ou peut-être même juste une seule méthode dans ce contrat de service.[KnownType]
fait la même chose -, mais sur les données sous-jacentes des contrats. Tout service qui sera à l'aide de ce contrat de données maintenant aussi les "hérite" de tous ces potentiels descendant classes - ce qui pourrait ou ne pourrait pas être ce que vous voulez.Alors, vraiment, c'est juste une question de ce que la portée que vous voulez appliquer une déclaration donnée à la mettre sur le contrat de données en fait une sorte de "global" de type hiérarchique, tout en utilisant
[ServiceKnownType]
vous permet de définir quelque chose qui est valable seulement pour un contrat de service ou même juste un (ou plusieurs) des méthodes sur ce contrat de service.