2010-09-07 83 views
4

如果我將WCF Web Service從.NET 3.5升級到4.0,不作其他更改,是否有任何更改暴露給外部世界的合同的風險?即。我的消費者是否需要重新構建WSDL?是否將WCF服務從.NET 3.5升級到4.0會更改合同?

如果是這樣,我能做些什麼來阻止這種情況發生?

編輯:我談論的那種事情的一個例子。

我們一直在使用這樣的事情了,而 http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspx

我可能讀這個錯誤,但是當我升級服務器和客戶端reconsumed,在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對象命名空間)

我錯在想,如果我沒有reconsumed,它就會停止工作?

如果不是,具體變化的是什麼,它會影響多少其他情況?只是框架枚舉?還是比這更多?

回答

2

不,不應該有任何問題 - 畢竟,所有在客戶端和服務器之間傳輸的都是序列化的消息。

客戶端真的不關心服務器的操作系統或.NET版本 - 只要可以理解和解釋消息即可。

只要不要改變任何東西,你應該就好!

+0

序列化消息依賴於類名和名稱空間,其中一些是由框架自動生成的。這是我的擔憂。不是說你錯了,我只是說比我有更多的控制權。 – pdr 2010-09-07 18:00:14

+2

Xml命名空間不會更改,因此序列化不會被破壞。 – 2010-09-07 18:55:59

+0

@Ladislav - 看起來你是對的。它改變了框架的客戶端。感謝你們倆 – pdr 2010-09-07 19:46:15