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 客户端是否仍能连接到新的服务主机?

根据数据合同中的枚举类型

通常,数据协定包括枚举成员名称,而不是数值

4

1 回答 1

1

这是否被认为是一个重大变化?

是的。这将改变序列化,这将是一个重大改变。

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

这在很大程度上取决于连接的类型 - 特别是用于映射数据的序列化程序。根据所使用的绑定,这可能有效,也可能无效。

于 2012-08-13T16:29:32.907 回答