将WCF服务从.NET 3.5升级到4.0是否会更改合同?

如果我将WCF Web服务从.NET 3.5升级到4.0而不进行其他更改,是否存在更改暴露给外部世界的合同的风险?即.我的消费者是否需要重构WSDL?

如果是这样,有什么办法可以阻止这种情况发生吗?

编辑:我正在谈论的那种事情的一个例子.

我们一直在使用这样的东西
http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspx

我可能正在读错了,但是当我升级服务器并从客户端重新构建时,Reference.cs发生了变化

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);
}

变成

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);
}

请注意MembershipCreateStatus的命名空间更改.

(不,我真的没有名为MyNamespace的命名空间)

我错误地认为如果我没有重建,它会停止工作吗?

如果没有,具体的变化是什么以及它会产生多少其他案例呢?只是框架枚举?或者更多?

最佳答案 不,不应该有任何问题 – 毕竟,在客户端和服务器之间传输的所有内容都是序列化的消息.

客户端实际上并不关心服务器所使用的OS或.NET版本 – 只要可以理解和解释消息.

只要你不改变任何东西,你应该没事!

点赞