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é.