2010-07-15 26 views
0

Je dois intégrer l'API d'assemblage .net existante (ensemble de classes et d'interfaces) avec le service WCF. Le service est conçu comme un proxy qui délègue des appels aux classes existantes sans pratiquement aucun travail supplémentaire.WCF: wrapping legacy API question

J'ai donc ajouté [ServiceContract] interface qui expose des méthodes qui traitent des structures et des classes existantes. Mais wcf-proxy-generator (svcutil) a supprimé certains champs (déclarés comme étant en lecture seule) et n'est pas assez intelligent pour les alias (par exemple: public bool Boolean1 { get { return Booleans[0] }} transformé en bool Boolean1 { get; set; }). J'ai décidé de dupliquer ces classes héritées afin d'éliminer la confusion. Maintenant, il existe une version contract-safe pour certaines classes existantes & Le service WCF dispose d'un code supplémentaire qui traduit les classes sans risque en classes anciennes &.

Suggéreriez-vous de dupliquer toutes les classes existantes ou est-ce que vous pouvez convertir uniquement les classes existantes? Peut-être y a-t-il des paramètres de générateur de proxy supplémentaires que j'ai manqués.

Merci d'avance!

Répondre

1

Le proxy n'aime pas vos propriétés en lecture seule car il doit sérialiser l'objet et ne peut pas le faire sans pouvoir appeler un setter et remettre la valeur sérialisée dans l'objet.

Il serait plus facile de modifier vos classes héritées pour qu'elles soient compatibles avec WCF, mais ce n'est généralement pas une option. Les classes que vous avez créées pour convertir une classe héritée en classe WCF semblent correctes, mais elles ne sont évidemment pas idéales car vous introduisez une autre couche juste pour utiliser ces classes avec WCF.

+0

Enfin, j'ai dû créer toutes les classes compatibles wcf et conversion-to-legacy-classes-couche. –