2012-08-13 55 views
2

假设我有一个像这样正在改变wcf合约的枚举改变的基础类型?

[DataContract] 
public enum VMType : int 
{ 
    [EnumMember] 
    Unknown = 0, 

    [EnumMember] 
    Virtual = 1, 

    [EnumMember] 
    Physical = 2, 
} 

[DataContract] 
public class ClientRequest 
{ 
    [DataMember] 
    public string Code { get; set; } 

    [DataMember] 
    public VMType VMType { get; set; } 
} 

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    int GetStatus(ClientRequest request); 
} 

,如果改变枚举VMType

public enum VMType : byte 
{ 

这被认为是一个重大更改一个简单的WCF服务?旧的WCF客户端是否仍然能够连接到新的服务主机?

Enumeration Types in Data Contracts

一般的数据合同包括枚举成员的名字,而不是数值

回答

1

这被认为是一个重大更改?

是的。这将改变序列化,这将是一个突破性的变化。

旧的WCF客户端是否仍然能够连接到新的服务主机?

这很大程度上取决于连接的类型 - 特别是哪个序列化器用于映射数据。根据使用的binding,这可能会或可能不会工作。

+0

你有任何引用**改变序列化**,根据MSDN枚举数据类型通常使用**枚举成员名称,而不是数值** – 2012-08-13 16:35:41

+0

@parapurarajkumar它完全取决于正在使用的数据合同。通常,枚举将被串行化为一个字符串,但也有例外,例如JSON序列化程序(http://msdn.microsoft.com/zh-cn/library/bb412170.aspx) – 2012-08-13 16:53:34