2010-09-07 5 views
4

Si je mets à niveau un service Web WCF de .NET 3.5 vers 4.0 sans apporter d'autres modifications, y a-t-il un risque de modification du contrat exposé au monde extérieur? c'est à dire. Mes consommateurs devront-ils reconsidérer le WSDL?La mise à niveau d'un service WCF de .NET 3.5 vers 4.0 modifie-t-elle le contrat?

Si tel est le cas, y a-t-il quelque chose que je puisse faire pour arrêter cela?

EDIT: Un exemple du genre de chose dont je parle.

Nous utilisons quelque chose comme ça pendant un certain temps http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspx

j'en train de lire ce mal, mais quand je mis à jour le serveur et reconsumed du client, les Reference.cs changé de sorte que

public MyNamespace.MembershipUser RemoteMembershipProvider_CreateUser(out System.Web.Security.MembershipCreateStatus status, string providerName, string applicationName, string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey) { 
    return base.Channel.RemoteMembershipProvider_CreateUser(out status, providerName, applicationName, username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey); 
} 

changé à

public MyNamespace.MembershipUser RemoteMembershipProvider_CreateUser(out MyNamespace.MembershipCreateStatus status, string providerName, string applicationName, string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey) { 
    return base.Channel.RemoteMembershipProvider_CreateUser(out status, providerName, applicationName, username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey); 
} 

Notez le changement dans l'espace de noms pour MembershipCreateStatus.

(et non, je n'ai pas vraiment un espace de noms appelé MyNamespace)

Ai-je tort de penser que si je ne l'avais pas reconsumed, il aurait cessé de fonctionner?

Et si non, quelle est la chose spécifique qui a changé et combien d'autres cas cela va-t-il affecter? Juste enums de cadre? Ou plus que ça?

Répondre

2

Non, il ne devrait pas y avoir de problèmes - après tout, tout ce qui se déplace entre le client et le serveur est le message sérialisé.

Le client ne se soucie vraiment pas de la version OS ou .NET du serveur, tant que le message peut être compris et interprété.

Tant que vous ne changez rien, vous devriez être très bien!

+0

Le message sérialisé repose sur des noms de classe et des espaces de noms, dont certains sont générés automatiquement par le framework. C'est ma préoccupation. Je ne dis pas que vous avez tort, je dis simplement qu'il y a plus que ce que je contrôle. – pdr

+2

Les espaces de noms XML ne changeront pas, donc la sérialisation ne sera pas rompue. –

+0

@Ladislav - On dirait que tu as raison. C'est le côté client du cadre qui a changé. Merci à vous deux – pdr

Questions connexes