PCB WCF Web接口增减参数后,在客户端不更新的情况,是否影响客户端,评估测试

Posted pcbren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PCB WCF Web接口增减参数后,在客户端不更新的情况,是否影响客户端,评估测试相关的知识,希望对你有一定的参考价值。

 1.目的:由于接口众多,服务端变更接口,会造成服务停用更新,造成客户端不能使用或报错,

              在此评估【Web中心】此服务端,接口接口参数增加或减少,是否对客户端造成影响

 2.评估内容:服务端增加单值参数,服务端减少单个值参数,Mod对象增加参数,Mod对象减少参数,

                  (而Json数据类型在此不作评估内容,是因为Json对象反序列化具有很好的伸缩型,不会影响客户端调用方)

3.附PCB工程系统集成示意图:

 

 

一.Web服务端增加单个值参数

     改前-- 服务端(1个参数):

        /// <summary>
        /// 测试Web接口(单值参数)
        /// </summary>
        /// <param name="ar1"></param>
        /// <returns></returns>
        public string getInfoTest(string ar1)
        {
            return $"getInfoTest传参测试{ar1}";
        }

     客户端调用(1个参数):

         string result = WebOrc2_.getInfoTest("1");
         // 返回:  getInfoTest传参测试1

   

     改后-- 服务端(2个参数)---增加参数:

        /// <summary>
        /// 测试Web接口(单值参数)
        /// </summary>
        /// <param name="ar1"></param>
        /// <returns></returns>
        public string getInfoTest(string ar1, int ar2)
        {
            return $"getInfoTest传参测试{ar1}___{ar2}";
        }

    客户端调用(1个参数)---客户端不更新接口引用:

        string result = WebOrc2_.getInfoTest("1");
        // 返回:  getInfoTest传参测试1___0

    小结:对于服务端接口增加单值参数后,是不会造成客户端调用报错的,服务端对于增加的参数初始值处理:如:int初始0,  string初始null

二. Web服务端减少单个值参数

     改前-- 服务端(2个参数):

         /// <summary>
        /// 测试Web接口(单值参数)
        /// </summary>
        /// <param name="ar1"></param>
        /// <returns></returns>
        public string getInfoTest(string ar1, int ar2)
        {
            return $"getInfoTest传参测试{ar1}___{ar2}";
        }

       客户端调用(2个参数):

         string result = WebOrc2_.getInfoTest("1",2);
          // 返回:  getInfoTest传参测试1___2

   

      改后-- 服务端(1个参数):

      /// <summary>
        /// 测试Web接口(单值参数)
        /// </summary>
        /// <param name="ar1"></param>
        /// <returns></returns>
        public string getInfoTest(string ar1)
        {
            return $"getInfoTest传参测试{ar1}";
        }

     客户端调用(2个参数)---客户端不更新接口引用:

           string result = WebOrc2_.getInfoTest("1",2);
            // 返回:  getInfoTest传参测试1

    小结:对于服务端接口减少单值参数后,是不会造成客户端调用报错的

三. Web服务端增加Mod参数

    改前-- 服务端(Mod类1个参数):

        /// <summary>
        /// 测试Web接口(单值参数)
        /// </summary>
        /// <param name="ar1"></param>
        /// <returns></returns>
        public string getInfoTest(ModTest mod)
        {
            return $"getInfoTest传参测试{mod.ar1}";
        }
         public class ModTest
         {
             public string ar1 { get; set; }
         }

      客户端调用(Mod类1个参数):

            ModTest mod_ = new ModTest();
            mod_.ar1 = "1";
            string result = WebOrc2_.getInfoTest(mod_);
            // 返回:  getInfoTest传参测试1

     

      改后-- 服务端(Mod类2个参数)---增加参数:

        /// <summary>
        /// 测试Web接口(单值参数)
        /// </summary>
        /// <param name="ar1"></param>
        /// <returns></returns>
        public string getInfoTest(ModTest mod)
        {
            return $"getInfoTest传参测试{mod.ar1}__{mod.ar2}";
        }
        public class ModTest
         {
             public string ar1 { get; set; }
             public string ar2 { get; set; }
         }

    客户端调用(Mod类1个参数)--客户端不更新接口引用:

            ModTest mod_ = new ModTest();
            mod_.ar1 = "1";
            string result = WebOrc2_.getInfoTest(mod_);
            // 返回:  getInfoTest传参测试1__

 小结:对于服务端接口Mod减少参数后,是不会造成客户端调用报错的,服务端对于增加的参数初始值处理:如:int初始0,  string初始null

四.Web服务端减少Mod参数

    改前-- 服务端(Mod类2个参数): 

        /// <summary>
        /// 测试Web接口(单值参数)
        /// </summary>
        /// <param name="ar1"></param>
        /// <returns></returns>
        public string getInfoTest(ModTest mod)
        {
            return $"getInfoTest传参测试{mod.ar1}__{mod.ar2}";
        }
        public class ModTest
         {
             public string ar1 { get; set; }
             public string ar2 { get; set; }
         }

     客户端调用(Mod类2个参数):

           ModTest mod_ = new ModTest();
            mod_.ar1 = "1";
            mod_.ar2 = "2";
            string result = WebOrc2_.getInfoTest(mod_);
            // 返回:  getInfoTest传参测试1__2

 

      改后-- 服务端(Mod类1个参数):

        /// <summary>
        /// 测试Web接口(单值参数)
        /// </summary>
        /// <param name="ar1"></param>
        /// <returns></returns>
        public string getInfoTest(ModTest mod)
        {
            return $"getInfoTest传参测试{mod.ar1}";
        }
         public class ModTest
         {
             public string ar1 { get; set; }
         }

      客户端调用(Mod类2个参数)--客户端不更新接口引用:

            ModTest mod_ = new ModTest();
            mod_.ar1 = "1";
            mod_.ar2 = "2";
            string result = WebOrc2_.getInfoTest(mod_);
            // 返回:  getInfoTest传参测试1

 小结:对于服务端接口Mod类减少参数后,是不会造成客户端调用报错的

 

以上是关于PCB WCF Web接口增减参数后,在客户端不更新的情况,是否影响客户端,评估测试的主要内容,如果未能解决你的问题,请参考以下文章

WCF 客户端中传递的多个参数不起作用(即使包装了 WebMessageBodyStyle)

为啥 wcf 中 System.Web.HttpContext.Current.Session 总是为Null

影响客户端的 WCF 合同更改

WCF通信简单学习实例

WCF设计服务协议

Python之Suds库调用WCF实现复杂参数序列化