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,这样就保证了数据不丢失:

  • 相关阅读:
    [CF1263E] Editor
    [CF1288D] Minimax Problem
    [CF1294E] Obtain a Permutation
    [CF770C] Online Courses In BSU
    [CF832D] Misha, Grisha and Underground
    [CF917B] MADMAX
    [CF938D] Buy a Ticket
    [CF959E] Mahmoud and Ehab and the xor-MST
    [CF999E] Reachability from the Capital
    [CF960F] Pathwalks
  • 原文地址:https://www.cnblogs.com/yipeng-yu/p/4318109.html
Copyright © 2011-2022 走看看