Nous sommes actuellement à avoir un débat de savoir si c'est mieux de jeter les défauts sur une WCF canal, contre le passage d'un message indiquant l'état ou de la réponse à partir d'un service.
Les fautes viennent avec construit dans le soutien de la WCF où par vous pouvez utiliser les gestionnaires d'erreur et de réagir en conséquence. Ceci, cependant, porte de frais généraux que de lancer des exceptions dans .NET peut être très coûteux.
Les Messages peuvent contenir les informations nécessaires pour déterminer ce qui s'est passé avec votre service d'appel sans les frais de lancer une exception. Il n'a cependant besoin de plusieurs lignes de code répétitif pour analyser le message et de déterminer les actions à la suite de son contenu.
Nous avons pris un coup de couteau à la création d'un message générique de l'objet que nous pourrions utiliser nos services, et c'est ce que nous sommes arrivés avec:
public class ReturnItemDTO<T>
{
[DataMember]
public bool Success { get; set; }
[DataMember]
public string ErrorMessage { get; set; }
[DataMember]
public T Item { get; set; }
}
Si tous mes appels de service de retour de ce point, je peux vérifier de manière systématique le "Succès" de la propriété afin de déterminer si tout s'est bien passé. J'ai ensuite une chaîne de message d'erreur en cas indiquer que quelque chose s'est mal passé, et un élément générique contenant un Dto si nécessaire.
L'exception de l'information devra être connecté à une centrale du service de journalisation et de ne pas transmises à partir du service.
Pensées? Des commentaires? Des idées? Des Suggestions?
Quelques précisions supplémentaires sur ma question
Une question que je vais avoir avec la faute des contrats est de communiquer les règles d'affaires.
Comme, si quelqu'un se connecte, et leur compte est bloqué, comment dois-je communiquer que? Leur login évidemment échoue, mais il échoue en raison de la raison "Compte bloqué".
Donc j':
A) utiliser un booléen, jeter la Faute avec le message compte verrouillé
B) retour AuthenticatedDTO de l'information pertinente