摘 要:随着物联网的兴起,各个领域都在现有问题开发相关的物联网应用系统,物联网技术不是新技术,它是综合应用现有技术,进行整合开发的技术。本文主要阐述农产品溯源系统中,Web Service技术的应用开发思想。在运用Web Service技术后,以解决不同平台间的服务共享问题,同时使系统的功能得以复用。正是基于Web Service技术的优势,使得农产品溯源系统相关数据交互问题得到圆满解决。同时在系统其他应用领域中,Web Service技术也能有效解决涉及的厂家内部之间、不同厂商之间、不同系统平台开发之间的数据交互问题。
关键词:农产品溯源系统架构;Web Service技术;服务共享
中图分类号:TP311 文献标识码:A
Research on the Development of Farm Produce Traceability
Application System Based on Web Service Technology
LIN Zhipeng
(Fujian Forestry Vocational Technical College,Nanping 353000,China)
Abstract:Internet of things technology has been applied in almost all aspects of our daily life with its rapid development.It is not a new technology but an integrated development of current different technologies.This paper introduces the development of a farm produce traceability application system based on Web Service technology.With the help of Web Service technology,not only the problems of service sharing among different platforms can be solved,but also the system function can be reused.In the system,the issue of interaction among different manufacturers,different system platforms can also be solved by Web Service technology and ensure its efficient operation.
Keywords:farm produce traceability system architecture;Web Service technology;service sharing
1 引言(Introduction)
現在是互联网+时代,其中物联网技术更是引导着世界信息产业的第三次革命浪潮。农产品溯源系统是指在一定的产业区域内,综合运用物联网相关技术,其中有Web Service技术实现数据交互的重要手段[1,2],将农产品的养殖、运输、加工及流通等过程中产生的数据信息,基本上是来自不同平台系统的数据信息,需要进行相互关联,有效整合后,形成一个完整的农产品数据信息追溯链。通过开发农产品养殖、农产品运输、农产品加工、农产品零售、农产品市场监管、农产品追溯查询等应用子系统,并建立统一数据交换中心,最好是省市级的农产品品质信息安全追溯数据中心,从而实现从农产品养殖、农产品加工到农产品零售终端等,此过程产生的正向跟踪信息加以传递使用。以及从农产品零售到农产品养殖与防疫过程等此过程产生的相关农产品信息的逆向溯源[1,2],还有农产品流通中所需的监管和品质的综合查询分析等流程自动化。其完整的硬件拓扑结构示意如图1农产品溯源系统的硬件拓扑图所示。
2 系统设计(System design)
在本系统的开发过程中,应将整个系统分为三层来架构,其中有UI界面交互层(User Interface)、Web Service服务层(融入BLL业务逻辑层-Business Logic Layer)和DAL数据访问层(Data Access Layer)[3,4]。
具体的应用思想表述为:UI界面交互层(User Interface):其功能是为农产品溯源系统用户提供操作数据交互窗口,比如在农业生产环节,通过Win Form窗口调用Web Service中的BLL层业务逻辑,产生农产品生产时需要的追溯码,打印并加载到数据库中心。在流通追溯环节,提供web页面调用BLL层业务功能,在页面中通过输入追溯码,查询农产品养殖信息等。
BLL业务逻辑层(Business Logic Layer):该层是本系统中应用思想的核心,主要表现为Web Service服务层,其主要负责处理农产品溯源系统的关键业务调用接口,达到解决不同平台的数据传输问题。其次对于较为复杂的业务逻辑判断和关联到数据库的有效数据验证业务,也是在该层进行业务实现,向外提供服务接口。比如可通过传递参数值种植户名字,调用相应Web Service接口函数,返回生成的追溯码信息。再比如在加工环节,对于加工厂,通过传递参数值IC号、持卡人名字,调用Web Service接口函数,返回开卡信息等。
DAL数据访问层(Data Access Layer):该层主要为Web Service服务层提供数据库的基本连接访问、数据查询、数据操作。与其他类型的系统开发不同在于,本层不提供给其他层调用,只提供给Web Service层调用。整体数据分层交互思想,如图2农产品溯源应用系统的数据交互架构图所示。
由此通过Web Servicer技术在浏览器、PC终端、PDA平台、电子秤、查询终端的数据交互中起着桥梁的作用,这些平台全都在调用Web Service层的服务接口基础上,再实现其应用功能[5,6]。否则就得重新从底层开始开发各个平台的应用系统业务功能,达不到功能模块复用的目的。下面对Web Service技术特点进行简要说明。
3 系统实现之Web Service技术的作用(The role of system implementation of web service technology)
Web Service技术是什么,它到底在什么情况下适合使用。现从之前人们开发应用程序习惯出发,发现客户端与服务器的通信存在诸多不便。比如传统的桌面应用程序用C/S架构,使用DCOM与服务器通信与远程调用,在大型网络中配置DCOM工作就是一项挑战,也成为配置管理员的噩梦。造成现在的配置管理员宁愿忍受网页界面的功能局限,也不愿在局域网上再去运行DCOM。那就产生了另一个后果,为了发布容易,使得开发难度更大,用户得到的是一个用户界面功能极其受限的系统。换个说法就是开发人员花更多的物力和人力,却让客户获取一个功能更弱的应用系统。例如,让会计师来选择是使用基于B/S的会计软件,还是使用对于商业用户更加友好的C/S架构的Windows应用程序。绝大多数商业用户都是选择后者。
在C/S架构中,要实现客户端与服务器通信,其中完美的解决方法是使用HTTP协议。这是因为防火墙通常只允许HTTP连接,任何Web浏览器都可以在HTTP协议下运行。但是商用程序在使用过程中又产生一个新问题,就是如何实现与其他程序的交互。因为除了Windows平台,还有大量的其他平台程序,还有大量运行使用老式语言开发的程序,要进行数据交互,这个任务需要有一个通信标准,独立于平台的规范技术来支持,这就是Web Service技术。
Web Service技术是一个应用程序,其暴露出API接口,让外界通过Web方式进行调用。它是建立分布式应用程序的可交互操作平台。Web Service技术平台也是一套标准,一套协议用于创建新分布式应用程序平台。其主要提供标准来描述Web Service服务,同时提供足够的信息来调用该服务;实际上就是进行远程调用的一种远程过程调用协议RPC。這种协议是与平台无关的。所以Web service技术平台应包含三个技术:XML、XSD、SOAP、WSDL[7]。
XML是可扩展的标记语言,是用于表示数据的基本格式。优点在于与平台和厂商都无关,比起技术优越性,这点更重要。XML只解决数据的表示问题,但是数据的标准类型问题,需用XSD,即W3C制定的XML Schema来负责。不管用何种语言来构造Web Service,都需要根据Web Service标准转换为XSD类型,该过程可利用工具自动完成。
SOAP是简单对象访问协议,其提供调用Web Service的标准RPC方法。它也是基于XML和XSD的,主要是定义SOAP消息的编码方式,及使用SOAP的HTTP协议。
WSDL是基于XML的Web Service描述语言。主要用于描述Web Service服务和相关函数、参数及返回值信息。它是机器和人皆可阅读的。可利用新的开发工具自动生成WSDL文档,产生相应的调用代码。为了使以上三种技术整合使用,加速推广Web Service技术、加强其互操作能力,而产生基于标准的服务描述和发现的规范,既是UDDI商业注册中心。其完整架构如图3基于Web Service技术的数据流示意图所示。
适合使用Web Service技术平台的情况:(1)跨越防火墙;(2)应用程序集成;(3)B2B集成;(4)软件复用。同时发现不适合使用Web Service技术的情况有:(1)单机版应用程序;(2)局域网上的同构应用程序。因而农产品溯源系统的数据跨平台交互、功能复用需求,完全符合使用Web Service技术的情况。
4 系统实现之Web Service服务层创建与应用(System implementation-building and application of Web services layer)
下面将详细说明需要搭建的Web Service服务层的功能函数。
首先,运用数据库技术,在SQL Server 2005平台,作为数据库服务器平台,依据图2中农产品溯源应用系统的数据交互架构图原型,先构造相应的数据中心,主要是建立数据表的过程。
其次,在Visual Studio2008集成开发环境,点击主菜单的“文件”→“新建”→“项目”子菜单,在弹出“新建项目”窗口中选择“Visual C#”下的“ASP.NET Web服务应用程序”子节点,将名字修改为“PLEDU_FarmProductTrace”,点击确定,创建该项目。
追溯码是一串唯一标识农产品的16位数字序列,是在生产环节生成后,就一直跟随农产品,不再改变,直到消亡。由于追溯码是整个系统的核心数据,需在所有子系统中流动,因此,采用便捷的二维码、RFID等方式,同时加入相应的其他信息,如种植户的名称等生成二维码,读写RFID码。根据追溯码获取种植、防疫、交易、进场加工、入场、出场、零售等流通环节信息。
农产品溯源系统的Web Service服务共创建如下:
⑴WS_BaseData.asmx服务内部实现的接口函数有:
用于合法用户验证函数:函数名AdminUserLogin,参数为username、password;字符串类型。
用于提取合法用户函数:函数名HouUserInfo,参数分别为username、password,字符串类型。
用于产生农产品追溯码使用记录函数:函数名ProduceTraceCodeRecord,参数分别为traceCode、user,字符串类型。
用于根据IC卡号获取用户名函数:函数名SelectUserNameByIcID,參数为ICID,字符串类型。
⑵WS_BaseDevice.asmx服务内部实现的函数有:
用于追加农产品防疫记录函数:函数名AddPreventionInfo,参数分别为日期型preventionDate、字符串类型的medicineName、regionName、traceCode。
用于追加交易信息函数:函数名AddTradeInfo,参数分别为字符串IC序列号sellerIcNo、日期transTime、字符串FarmProductsName、浮点型price、totalPrice、FarmProductsWeight、字符串traceCode。
⑶WS_RuChangEnterRegister.asmx服务内部实现的函数有:
用于追加农产品进场加工函数:函数名AddEnterHouseRegister,参数分别有字符串vehicleNo、整型type、字符串producingArea、字符串quarantineSN、字符串quarantineOfficer、字符串quarantineResult、日期signDate、整型operatorId、字符串traceCode。
用于根据农产品追溯码号获取养殖厂信息函数:函数名GetOwnerByTraceCode,参数为字符串traceCode。
用于依据传递的追溯码检测农产品入场记录存在性的函数:函数名HasEnterInfoByTraceCode,参数为字符串traceCode。
用于根据日期和追溯码检索农产品入场记录函数:函数名QueryFarmProductEnterInfo,参数分别为日期startDate、endDate、字符串traceCode。
用于根据生猪ID号删除农产品入场记录的函数:函数名DeleteEnterFarmProductInfoByID,参数为整型id。
用于更新农产品入场记录的函数:函数名UpdateFarmProductEnterRecord,参数分别为整型id、fruitType、字符串productingArea、quartineSN、quartineOfficer、quartineResult、vehicleNo、signDate、整型operatorId。
⑷WS_WarehouseFarmProductOutputRegister.asmx服务内部实现的函数有:
用于增加农产品出场信息函数:函数名AddFarmProductOutputInfo,参数分别为整型enterID、字符串quarantineFarmProductProductsSN、浮点数productWeight、整型operatorID、字符串buyerIcNo、日期outPutDate。
用于根据农产品追溯码获取农产品养殖户记录函数:函数名SelectFarmProductOwner,参数为字符串traceCode。
用于根据农产品追溯码获取农产品入场记录函数:函数名SelectFarmProductEnterInfoByTraceCode,参数为整型traceCode。
用于依据IC号获得销售客户购买的农产品总重量函数:函数名SelectTotalFarmProductSelledWeightByIcND,参数为字符串icND。
用于依据生产日期和农产品追溯码查询农产品出场记录函数:函数名GetFarmProductOutPutInfo,参数分别为日期型startDate、endDate、字符串traceCode。
用于检索农产品买家名根据传递的IC卡号函数:SelectFarmProductBuyerNameByIcND,参数为字符串ICND。
用于根据农产品出场记录ID号删除农产品出场记录函数:函数名DeleteFarmProductOuputRecordByID,参数为整型ID号。
用于根据id号出场日期和检疫号更新农产品出场记录函数:函数名UpdateFarmProductOutputRecord,参数分别为整型出场ID、日期exitDate、字符串quartineFruitProductsSN。
创建完以上函数代码后,可利用图1的服务器,在IIS配置WebService服务层应用程序,提供API接口给外界调用,则在PDA、电子秤、Web查询终端等平台,直接调用API接口,进行二次开发。
例如在开发PC端农产品溯源管理系统,需要打印农产品的溯源二维码功能窗口[8],如图5所示。其调用Web Service服务中的WS_BaseData服务,实现生成按钮的主要代码如下:
WS_BaseData.WS_BaseData myQrCode = new WS_Base.WS_BaseData();
try{
myQrCode.ProduceTraceCodeRecord (this.txtTraceMark.Text,this.txtOwner.Text);
MessageBox.Show("增加数据集记录操作成功!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch (Exception Err) {
MessageBox.Show("增加数据集记录操作失败:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
其他子系统的功能开发代码,与上面代码相似。可见Web Service服務调用的实现代码量少,开发简单,功能还可以给其他平台复用。整个农产品溯源系统开发解决方案中其他项目有:Web Service项目,9000项目用于Web端查询网站,PDA平台开发项目等。如图4农产品溯源系统解决方案示意图。
5 其他子系统的功能实现(Function implementation of the other subsystems)
接下来还要创建农产品生产、农产品养殖防疫、农产品加工前检疫、农产品检疫、农产品交易、农产品追溯查询六个子应用程序,详细功能实现思想说明如下。
5.1 生产子系统实现
该环节主要在移动环境下操作,因而考虑在Android平台下,开发手机客户端应用程序。为了实现农产品生产的智能监控目的,主要利用Android手机和平板电脑配置的相关传感设备。农场主在Android平台上操作设备,收集各种生产数据,并进行过程农产品远程生产管理。例如,配置相应的温湿度Zigbee无线传感器,获取生产环境的温度和温度数据值,为农场主提供决定是否给农场进行降温除温的重要依据;还可配置火焰Zigbee无线传感器节点,第一时间获取到火情信息,为火情的防控提供及时监控数据等。最后利用Wi-Fi连接网络,把数据通过调用Web Service服务上传到数据库服务器上,作为数据服务中心。
5.2 养殖防疫子系统实现
其主要是在WindowsCE平台下的PDA设备应用程序开发。其主要功能是采用手持PDA设备收集农产品防疫信息,录入时也可采用扫描二维码标识,来实现农业专家在辖区内对农产品养殖户进行防疫时,将防疫信息通过该系统,调用Web Service服务,上传到数据库服务中心,作为生猪养殖防疫的源头信息。
5.3 加工前检疫子系统实现
其主要是在PC端开发C/S应用程序。主要功能是通过调用Web Service层的服务,将RFID和二维码数据等农产品来源信息录入到电脑上,包括:农场、农场主及农产品的溯源标签等信息。为了输入方便,可在农产品加工场的入场加工流程水线上安装无线RFID识别卡设备和RFID标签[9],收集相关信息到电脑上,同时监控机将自动拍下现场证明图片,从而实现农产品加工前都要进行该检疫过程。
5.4 加工后检疫子系统实现
其主要是用Visual Studio 2008集成开发环境,在PC端开发C/S应用程序。主界面示意图如图6农产品溯源系统客户端界面。主要功能是通过远程调用Web Service服务,将检疫信息通过网络上传到数据库服务中心,同时监控自动拍摄现场证明图像保存。在农产品加工出厂时,对农产品进行包装称重,产生农产品安全质量检疫信息,并打印相应的农产品追溯码,在农产品的包装上粘上标码,从而使农产品的溯源标签与农产品的安全质量追溯码相连接起来。并实现农产品养殖防疫与农产品交易信息的交互,解决了农产品在生产过程的全程可溯源。
5.5 交易子系统实现
其主要是在Linux平台下,开发嵌入式应用程序。主要功能是通过远程调用WebService服务,将在智能农产品追溯电子台秤的数据信息,上传到数据服务中心保存。具体业务过程是农产品零售摊点商户用IC卡进行身份标识进货,后在农产品大包装上赋上农产品安全溯源码,在摊主进行零售时,利用手持条码扫描枪,复制相关的农产品溯源码,粘贴在食品小包装袋上。从而实现了零售农产品的可溯源。其架构如图7农产品溯源电子秤应用开发架构示意图所示。
5.6 追溯查询子系统实现
其主要是应用MVC三层架构的思想,采用ASP.NET网页编程语言,开发基于B/S架构的调用WebService服务的农产品溯源查询网站系统。其主要功能是在消费者购买农产品后,在市场监管部门安装的查询终端上扫描相应的农产品溯源码,就可以查询出农产品的养殖、防疫、检疫、加工信息。从而实现整个农产品生产、销售的质量保障闭合环节[10]。该农产品溯源查询网站界面效果如图8猪肉溯源查询子系统网站界面所示。
6 结论(Conclusion)
通过以上的研究设计,整个农产品溯源系统通过远程调用Web Service服务,使得农产品溯源各个业务子系统的数据得以交互传递,有效解决了农产品溯源的业务需求。因Web Service技术提供的开放性、语言无关性、平台无关性、厂商无关性和支持“即插即用”,为实现农产品质量安全保障体系的构建,提供了有力的信息技术手段。将农产品养殖、运输、屠宰加工及流通的信息形成完整的信息追溯链[10]。可建立起省市级的农产品质量安全信息追溯中心,达到农产品从养殖、加工到零售的正向跟踪,同时也可实现农产品零售到养殖防疫的逆向溯源。该系统能为农产品流通的监管与综合分析提供有力保障。从中也看出物联网的广泛应用,将为企业的各种业务服务集成,带来巨大的商机。
参考文献(References)
[1] Pasteur,Olivier Dang,Tuan Delon,et al.Using Web Services to exchange power plant process data[J].Industrial Informatics,2007 5th IEEE International Conference on; Vienna,Austria.1.1,2007:30-32.
[2] Calvin Austin. Web Services: Why Can't We Just Talk?[J].Java developer's journal: JDJ,2005,10(2):23-26.
[3] Jiang Zhong,Ang Li,Pan Deng,et al.Web Service Recommendation Based on Latent Features[J].Journal of information and computational science,2012,9(1):50-52.
[4] 吴家菊,刘刚,席传裕.基于Web服务的面向服务(SOA)架构研究[J].现代电子技术,2005,28(14):1-4;7.
[5] 林春火.基于面向Web Service、SOA的供应链管理系统设计与实现[J].电脑知识与技术,2007,3(14):310-312.
[6] 郭正红,赵丙辰.基于Web服务的物联网体系结构模型及应用[J].计算机应用与软件,2015,32(5):105.
[7] 徐瑞霞.基于Web服务的物联网体系结构模型应用探析[J].信息化建设,2015(12):103.
[8] 余玲,刘幺和,邹绍文.基于物联网的二维条码识别及语音播报的研究[J]. 计算机与数字工程,2010,38(11):72-75.
[9] 王世堂.基于RFID的汽车生产信息追踪系统的研究[D].北京工业大学,2007:57.
[10] 徐冬寅,程涛.基于Web Service的农产品质量安全检测管理系统的开发与应用[J].上海农业学报,2015(4):80-84.
作者简介:
林志鹏(1981-),男,本科,副教授,高级工程师.研究领域:计算机语言,算法,信息系统软件开发与应用.