论文部分内容阅读
摘 要:智能制造系统的实现需要依靠底层的基于产品生产过程和设备运行过程的数据采集,为提高系统复用性和降低部署的成本和难度,都会采用标准化的B/S模式的数据采集,当时间单位内的采集数据量达到一定规模后,系统架构的瓶颈就会凸显,现在数据采集的方式和实现方法较多,我们希望通过一定的测试,得到适合需求是数据采集接口的实现方式。
关键词:数据采集;C#;WebService;Restful Api;WebAPI;JSON
中图分类号:TP393.08 文献标识码:A 文章编号:1004-7344(2018)17-0327-02
1 背 景
按集团公司和公司自身产品发展的要求,公司准备搭建基于云架构的MES系统,需要将原来部署在各企业的MES系统的逐步迁移上云,系统运行时所需要的各类数据也需要逐步提交到云上。因最初MES系统设计和部署时,是作为企业的独立应用存在,数据采集接口在设计时考虑因素较少,数据处理环节也较简单,所以接口采用基于SOAP的WebService方式设计,而众所周知的SOAP的处理方式效率较低、数据冗余量大,所以現有接口不适合继续沿用,我们必须要重新构建基于云服务的数据采集接口,而现在流行的接口实现方式较多,为解决接口问题并获取最高效的接口,我们对相关接口技术进行了一定测试,希望可以帮助获取有效数据和依据。
2 测试前期准备预计应用场景
为沿用系统构架和降低成本,数据采集接口先期仍采用C#语言编写,后期在需要进行平台调整或架构调整时,再对比.NetCore和Java进行重构;因现在微软.Net FrameWork可提供的基于HTTP方式的的Web访问接口的实现方式较多,常见的有WebService、基于IIS Hander的Ashx页面和基于Razor引擎的MVC的WebApi方式接口,我们将同时测试对比这三种接口的访问和执行效率。
3 测试场景设计基础
3.1 数据采集情况
按系统设计,我公司的MES系统迁移后,前3年大约需连接数据采集设备1000~2000台,而每台设备通过物联网及中间设备不定时的将与采集设备关联的在运行中的设备、器具的各类数据汇总、封包后传输到到云平台的采集接口上,数据采集设备轮询时间为1s,在获取数据后及时传输到数据采集接口,根据采集设备运转情况不同,单个采集设备每秒提交的数据峰值将不会超过100条数据。
3.2 数据格式说明
用于测试的数据按以下格式设计,主要考虑为尽量简化数据类型,减小网络传输带宽。
3.3 测试数据提交方式的选择
(1)系统每次随机按上表格式产生50~100条数据,并将数据转换为Json格式的字符串进行保存。
(2)通过Web工具分别向三个接口提交保存的字符串数据,并逐次记录访问接口所需的时间、成功率、1min内完成的请求数。
(3)提交数据格式的确定
客户端在通过WebService格式或WebApi提交数据时,根据接口接受参数类型的不同,系统会做一些自动处理,如可以把包含json数组的字符串直接转换为接口设置的List对象,而在方法体内,我们也可以编程实现数据转换,在WebApi接口中使用字符串或同转换方式的效率有需要通过测试确定,经过测试,直接提交字符串的效率比使用特定格式的效率稍高,且考虑到实际使用时,为降低采集设备的使用带宽,也不会采用提交json数据,所以测试还是以提交字符串为主。
(4)测试代码
因测试主要是为测试三种接口方式的执行效率。所以测试代码皆尽量简化:因研究的主要目的是为了测试三种不同的接口方式的执行效率。所以作为测试数据的产生都按系统随机产生50条数据,按上表格式组装为json数组。
4 接口执行效率测试
4.1 测试方式
用WestWindWebSurge程序,通过10线程提交包含200条信息的采集数据,持续1min,共执行10次,取最后各项的平均值进行比较。
4.2 接口调用执行效率
执行此测试时,接口的方法体内不做数据处理,直接返回0,主要测试IIS和.NetFrameWork在处理不同接口上的差异,测试结果如表3。
4.3 增加数据处理后接口执行效率
执行此测试时,接口的方法体需要将提交的字符串转换为List对象,并返回对象长度,主要测试接口总体的执行效率差异,测试结果如表4。
5 测试总结
经过测试,大致结果与我们预期一致,Ashx接口因为没有经过.Net和IIS的相关引擎的处理,所以执行效率最高,且由于Ashx方式可以方便的操作Http上下文,更利于接口功能扩展和处理,所以应是选择实现接口的最优方式。
6 其它考虑因素
(1)本次测试没有测试接口的数据库操作,因根据检索以往的文档,已可确定在.NetFrameWork系统中,ADO.NET是最快的数据库访问方式[2];
(2)在客户端或底层设备向云端的接口提交数据时,应想法尽量降低提交的数据量,减少带宽,提高效率,生硬的规定使用XML格式或Json格式都不是好选择;
(3)增加IIS进程数、采用数据缓存、集群服务器等技术都可以提高接口的数据处理效率,可在需要的时候采用。
参考文献
[1]淡泊明智:SOAP webserivce和RESTful webservice对比及区别.
[2]Radenko Zec:8 ways to improve ASP.NET Web API performance.
收稿日期:2018-5-11
作者简介:柏富强(1969-),男,助理工程师,大专,主要从事IT技术服务工作。
关键词:数据采集;C#;WebService;Restful Api;WebAPI;JSON
中图分类号:TP393.08 文献标识码:A 文章编号:1004-7344(2018)17-0327-02
1 背 景
按集团公司和公司自身产品发展的要求,公司准备搭建基于云架构的MES系统,需要将原来部署在各企业的MES系统的逐步迁移上云,系统运行时所需要的各类数据也需要逐步提交到云上。因最初MES系统设计和部署时,是作为企业的独立应用存在,数据采集接口在设计时考虑因素较少,数据处理环节也较简单,所以接口采用基于SOAP的WebService方式设计,而众所周知的SOAP的处理方式效率较低、数据冗余量大,所以現有接口不适合继续沿用,我们必须要重新构建基于云服务的数据采集接口,而现在流行的接口实现方式较多,为解决接口问题并获取最高效的接口,我们对相关接口技术进行了一定测试,希望可以帮助获取有效数据和依据。
2 测试前期准备预计应用场景
为沿用系统构架和降低成本,数据采集接口先期仍采用C#语言编写,后期在需要进行平台调整或架构调整时,再对比.NetCore和Java进行重构;因现在微软.Net FrameWork可提供的基于HTTP方式的的Web访问接口的实现方式较多,常见的有WebService、基于IIS Hander的Ashx页面和基于Razor引擎的MVC的WebApi方式接口,我们将同时测试对比这三种接口的访问和执行效率。
3 测试场景设计基础
3.1 数据采集情况
按系统设计,我公司的MES系统迁移后,前3年大约需连接数据采集设备1000~2000台,而每台设备通过物联网及中间设备不定时的将与采集设备关联的在运行中的设备、器具的各类数据汇总、封包后传输到到云平台的采集接口上,数据采集设备轮询时间为1s,在获取数据后及时传输到数据采集接口,根据采集设备运转情况不同,单个采集设备每秒提交的数据峰值将不会超过100条数据。
3.2 数据格式说明
用于测试的数据按以下格式设计,主要考虑为尽量简化数据类型,减小网络传输带宽。
3.3 测试数据提交方式的选择
(1)系统每次随机按上表格式产生50~100条数据,并将数据转换为Json格式的字符串进行保存。
(2)通过Web工具分别向三个接口提交保存的字符串数据,并逐次记录访问接口所需的时间、成功率、1min内完成的请求数。
(3)提交数据格式的确定
客户端在通过WebService格式或WebApi提交数据时,根据接口接受参数类型的不同,系统会做一些自动处理,如可以把包含json数组的字符串直接转换为接口设置的List对象,而在方法体内,我们也可以编程实现数据转换,在WebApi接口中使用字符串或同转换方式的效率有需要通过测试确定,经过测试,直接提交字符串的效率比使用特定格式的效率稍高,且考虑到实际使用时,为降低采集设备的使用带宽,也不会采用提交json数据,所以测试还是以提交字符串为主。
(4)测试代码
因测试主要是为测试三种接口方式的执行效率。所以测试代码皆尽量简化:因研究的主要目的是为了测试三种不同的接口方式的执行效率。所以作为测试数据的产生都按系统随机产生50条数据,按上表格式组装为json数组。
4 接口执行效率测试
4.1 测试方式
用WestWindWebSurge程序,通过10线程提交包含200条信息的采集数据,持续1min,共执行10次,取最后各项的平均值进行比较。
4.2 接口调用执行效率
执行此测试时,接口的方法体内不做数据处理,直接返回0,主要测试IIS和.NetFrameWork在处理不同接口上的差异,测试结果如表3。
4.3 增加数据处理后接口执行效率
执行此测试时,接口的方法体需要将提交的字符串转换为List对象,并返回对象长度,主要测试接口总体的执行效率差异,测试结果如表4。
5 测试总结
经过测试,大致结果与我们预期一致,Ashx接口因为没有经过.Net和IIS的相关引擎的处理,所以执行效率最高,且由于Ashx方式可以方便的操作Http上下文,更利于接口功能扩展和处理,所以应是选择实现接口的最优方式。
6 其它考虑因素
(1)本次测试没有测试接口的数据库操作,因根据检索以往的文档,已可确定在.NetFrameWork系统中,ADO.NET是最快的数据库访问方式[2];
(2)在客户端或底层设备向云端的接口提交数据时,应想法尽量降低提交的数据量,减少带宽,提高效率,生硬的规定使用XML格式或Json格式都不是好选择;
(3)增加IIS进程数、采用数据缓存、集群服务器等技术都可以提高接口的数据处理效率,可在需要的时候采用。
参考文献
[1]淡泊明智:SOAP webserivce和RESTful webservice对比及区别.
[2]Radenko Zec:8 ways to improve ASP.NET Web API performance.
收稿日期:2018-5-11
作者简介:柏富强(1969-),男,助理工程师,大专,主要从事IT技术服务工作。