2
當我使用WCF暴露DataContract作爲SOAP wevservice我得到一些時髦genenerated的名字,如:背後有什麼WCF的邏輯產生名字DataContracts
[Flags]
public enum EnumType1
{
EnumMember1 = 1;
EnumMember2 = 2;
EnumMember3 = 4;
}
[DataMember]
private Dictionary< EnumType1, Class1> Class1Dictionary;
擁有對線材這塊肥皂表示:(我是釋義):
<Class1Dictionary>
<KeyValueOfEnumType1Class1UTLV0zE5>
<Key>EnumMember1 </Key>
<Value> ... </Value>
</KeyValueOfEnumType1Class1UTLV0zE5>
</Class1Dictionary>
KeyValueOfEnumType1Class1UTLV0zE5背後的邏輯是什麼?我可以解釋KeyValueOfEnumType1Class1部分,但UTLV0zE5來自哪裏?此外,如果這個任意字符串收費,WCF客戶端會中斷嗎?
好點,但它仍然沒有回答這些問題是如何生成的,WCF需要它們專門用於服務兼容性。 – 2010-11-16 01:53:41
@David Reis - 我很想知道它們是如何生成的 - 它們看起來很隨意。我無法真正想象爲什麼他們出於兼容性原因在那裏。對我來說,更可能的是WSDL類型需要是唯一的,使用默認名稱會導致更高的碰撞可能性 - 因此它會附加一些base64編碼的字符以降低可能性。很明顯,改變它們會破壞客戶和服務之間的服務合同,所以我懷疑它們每次都是隨機的。也許這是服務名稱或類似的哈希。 – sheikhjabootie 2010-11-16 05:50:18
事實證明,不管是什麼方法,都沒關係,因爲無論生成的字符串是什麼,DataContracts都被認爲是兼容的。 – 2010-12-10 09:14:58