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?
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
Les espaces de noms XML ne changeront pas, donc la sérialisation ne sera pas rompue. –
@Ladislav - On dirait que tu as raison. C'est le côté client du cadre qui a changé. Merci à vous deux – pdr