zoukankan      html  css  js  c++  java
  • WCF 之 DataContract

    在客户端与服务端之间传递的自定义数据类型,格式如下:

         [DataContract]
            public class User :IExtensibleDataObject
            {
                [DataMember]
                public int ID { get; set; }
                  [DataMember]
                  public string Name { get; set; }
            //这里没有[DataMember],则说明不被传递
    public string Sex { get; set; }
            //而这里无论有没有[DataMember],都会被传递
    public ExtensionDataObject ExtensionData { get; set; }   }

    对于实现接口 IExtensibleDataObject,目的是为了保证数据不丢失。但如果客户端和服务端之间传递的DTO,能够保证版本一致,则该接口可以不实现。

     实现 IExtensibleDataObject 的好处如下:

    服务端返回最新版本 User :

                    public User GetName()
                    {
                          return new User { 
                          
                                  ID=1,
                                  Name="apple",
                                  Sex="M"
                          };
                    }

    而这时客户端的版本不是最新的,没有ID:

    当客户端请求时:

     private static void Main(string[] args)
                {
                      UserInfoClient client = new UserInfoClient();
    
                      var user = client.GetName(); // 这时的 user 是没有ID的,因为没有更新服务,导致版本不一致
    
                      Console.ReadKey();
                }

    这时接口的 ExtensionData 就起作用了,它包含了ID,这样就保证了数据不丢失:

  • 相关阅读:
    java 通过Iterator输出Map
    java SortedSet接口swap方法
    java vector
    java Iterator双向迭代输出
    java 序列化和反序列化多个对象
    培训
    每天晚上

    又想起了

  • 原文地址:https://www.cnblogs.com/yipeng-yu/p/4318109.html
Copyright © 2011-2022 走看看