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类减少参数后,是不会造成客户端调用报错的

原文地址:https://www.cnblogs.com/pcbren/p/9253324.html

时间: 2024-12-10 20:47:46

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

ASP.Net Web API 的参数绑定[翻译]

原文地址:Parameter Binding in ASP.NET Web API 译文如下: 当Web API相应Controller的一个方法时,它必定存在一个设置参数的过程,叫作数据绑定.这篇文章描述了Web API如何绑定参数以及如何自定义绑定过程. 一般情况下,Web API绑定参数符合如下规则: 如果参数为简单类型,Web API 尝试从URI中获取.简单参数类型包含.Net源生类型(int,bool,double...),加上TimeSpan,DateTime,Guid,decim

基于http请求的web接口性能测试总结

基于http请求的web接口性能测试总结 压测的目的:对于Web接口压测的目的最终是要在对数据库造成压力的情况下观察压测服务器的cpu是否达到预警值.memory是否发生激变甚至泄露.响应结果的error率以及数据库服务器读写方面的情况是否正常等等情况. 测试环境的准备 我们要准备压测服务器和压力机,并建立二者之间的联系. 压测服务器 用来提供服务的,也就是我们的测试服务器,上面发布的是压测分支,我们首先要基于压测基准分支拉一个压测分支并push到远端,然后把开发的代码合到压测分支上再push到

定义接口,参数声明,Url都通过Annotation指定

 经过上周对软件流程及代码的熟悉,这周就开始做一些工作了. 一开始我负责将软件中重复调用的一个方法抽取成API,本以为小菜一碟,结果抽取完老有问题.后来师兄指点后才发现,我的思想还是有些过程化. 经过一天时间,终于完成了提取的任务. 接下来让我深入学习Retrofit,并且实现功能.之前一点根本都没看过这个,只好现学,这个框架好像用的人不太多,网上资料少的很,找了许久才找到一点点资料: Retrofit的使用就是以下几步: 经过上周对软件流程及代码的熟悉,这周就开始做一些工作了. 一开始我负

web接口开发与测试

最近一直在学习和整理web开发与接口测试的相关资料.接口测试本身毫无任何难度,甚至有很多工具和类库来帮助我们进行接口测试.大多测试人员很难深入了解web接口测试的原因是对web开发不太了解,当你越了解开发就会越看得清接口是什么.当然,web开发是比较麻烦,我们很难一下子掌握. 注:不过本文并不是一个零基础的文章,需要你对 Django web开发,requests接口库,unittest单元测试框架,三者有一定的了解. Django快速开发之投票系统 之前分享过一篇Django开发投票系统的例子

web页面中参数的传递方法

在web页面中参数的传递方法多样,主要有以下几种: Viewstate,Querystring,Session, Application,Cookie,Cache. Viewstate: 特点:服务启启动的各种控件的视图状态:包括控件的所有属性值:Enableviewstate可以启用和禁用视图状态:        优点:防止新产生一个页面实例后,丢失前一个页面的状态信息: 例如:在用户登录注册验证过程中,无须使用导致服务器往返行程的代码,我们只需要在客户端进行验证就可以了.另外有些控件的初始化

WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while reading XML data错误

原文:WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while reading XML data错误 在服务端中定义接口太多时,在客户端的服务引用时,报错误: 元数据包含无法解析的引用:“net.tcp://localhost:8081/BaseData/mex”.    XML 文档中有错误.    读取 XML 数据时,超出最大名称表字符计数配额 (1

JAVA WEB接口开发简述

目录 1. JAVA WEB接口开发简述 1.1. 基本了解 1.2. 提供接口 1.3. 调用接口 1. JAVA WEB接口开发简述 1.1. 基本了解 当我们想去访问其他网站的接口时候,而又不想要登录验证等操作,那么可以选择使用平台提供的接口进行调用得到我们需要的信息.比如说,一个网站A有一个接口路径: http://192.168.10.119:8080/xmq/webservice/menu/search?ak=APP00013&token=yq6ZaljwYMa1x83r0hSHVh

WCF中修改接口或方法名称而不影响客户端程序

本篇接着"从Web Service和Remoting Service引出WCF服务"中有关WCF的部分. 运行宿主应用程序. 运行Web客户端中的网页. 输入内容,点击按钮,能获取到WCF所提供的服务. 现在,WCF的接口如下: namespace HelloWcf { // 注意: 使用"重构"菜单上的"重命名"命令,可以同时更改代码和配置文件中的接口名"IFirstWcf". [ServiceContract] publi

防火墙故障范例-(1)接口连接网线后灯不亮也不工作

故障简介 客户报告设备故障:所有的网络接口都不工作,插上网线也没有反应,但宽带接口和电源的指示灯又正常,故障情况如下图: 故障分析 因为有其它灯亮,首先排除电源故障,网络接口不工作,只有两个可能性,一个是硬件故障,主板接口损坏,还有一个是软件故障,也就是这些接口都给关闭了.按照顺序首先排除软件问题,但是因为网络接口都不工作,无法通过网线访问设备,这样只有用配置线通过CONSOLE口访问设备了(具体连接方法请参考相应文档). 故障排查 使用SecureCRT访问防火墙,通过命令show syste