付会明 江西省气象信息中心 南昌市 330046
随着气象现代化深入推进,气象信息系统一方面规模越来越大功能越来越强,另一方面结构越来越精细形式越来越丰富。与此同时现代计算机技术快速发展,移动应用大量普及,网络计算能力空前提高。使得建立在气象信息系统基础上的气象业务和气象服务中的信息活动变得极为频繁和宽泛,机器语言之间、应用模组之间、服务设备之间的快速数据交换成了气象信息系统建设的非常关切的需求。在众多新技术中JSON数据技术提供了便捷数据交互能力。JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON 成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率,在数据传输方面具有明显优点:数据格式比较简单,易于读写,格式都是压缩的,占用带宽小。气象数据有别于其他数据,结构复杂种类多样,实时性强动态多变,具有极强的专业特征。气象信息系统承载各类气象数据传输处理加工等业务功能,在系统建设与运行中各种数据信息关联紧密交流活跃。在气象信息系统建设中各个场合与界面中需要完成各种数据交互工作,JSON提供了极强的技术支撑,应用好JSON技术能为业务带来极大便利。
JSON(JavaScript Object Notation, JS 对象标记) 是一种用于传输和生成数据的协定,其基本是一种轻量级的数据交换格式。JSON语法来源于C家族的语言(包括C、C++、C#、Java、JavaScript、Perl、Python等)。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。JSON 可以将应用对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。JSON轻量型对象跟语言无关用于传输实现共享,几乎所有语言都直接支持,用于不同语言共享数据,如可以让asp,php等与前台js很好的交互。
JSON对象是一系列以逗号分隔的名称/值对(name:value),最外面用一对花括号括起来。其简洁性是XML无法比拟的,在数据传输时,减少的数据量可以带来性能上的提升,装载后,就可以通过名称直接访问任何字段了,相对于DOM极大地提高了效率。JSON还提供数据类型的支持,并通过使用对象和数组可以表现结构化数据,占用空间小。在互联网应用中,对于相同的信息量在相同带宽环境下,JSON会以更小的体积更快速地发送。这些特性使JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成而无平台之分。
两者应用领域不同,数据库用于持久化保存大量数据其主要的功能目的是数据保存和共享,而JSON是一种规则化数据传输的形式,有保存数据的功能,但是并不持久。一般情况下都是存在于内存,一旦程序退出了,JSON数据就没有了。JSON特别适于网际快速数据交换如程序后端与前台界面之间进行交互,而在此方面数据库技术是不适应的。
本质上JSON与XML都是一种数据交换格式,现在两者都成为常用的数据格式标准,支持多种语言,包括C、C#、ColdFusion、Java、JavaScript、Perl、PHP、Python、ActionScript、Ruby等客户端和服务器端语言。
XML(Extensible Markup Language)扩展标记语言,用于标记电子文件使其具有结构性的标记语言,是一种允许用户对自己的标记语言进行定义的源语言。XML使用DTD(document type definition)文档类型定义来组织数据;具有格式统一,跨平台和语言,符合标准;容易与其他系统进行远程交互,数据共享比较方便等优点。但其缺点也是明显的:首先XML文件庞大,文件格式复杂,传输占带宽;其次服务器端和客户端都需要花费大量代码及资源和时间来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;另外客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码。
JSON没有XML历史久远但正在迅速得到普及。XML和JSON都使用结构化方法来标记数据,但JSON简单的语法格式和清晰的层次结构明显要比 XML 容易阅读,并且在数据交换方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大节约传输数据所占用得带宽。
总的来看XML复杂,适合于较大信息组织处理如配置文件的编辑保存。而JSON简洁,通信编码效率高便于数据交换,传输相同的数据JSON要比XML更小巧,而这正是现代网络化气象应用所需要的。
依托Internet以B/S模式向用户发布气象服务信息,是现代气象信息系统业务的重要组成部分。B/S模式中需要Web前端脚本语言(如Javascript)与后端脚本语言(asp,php,jsp)协同工作, Ajax和RIA(Rich Internet Applications丰富的因特网应用程序)等技术流行增强了Web应用的交互性。而JSON可以封装各种类型格式的数据包括网页中的数组对象表单等,在其中能发挥关键作用,提供服务器到客户端浏览器之间的实时数据交互,这对于实时性很强的气象服务是很重要的。这里展示的是GPS/MET文件传输实时监控的应用实例,主要代码如下:
前台数据提交与获取脚本:
后台的关键代码:
用户浏览器监控界面:
图1 用户浏览器监控界面
JSON在业务流程中起到了数据载体的作用,应用系统能直接将后台信息反馈的前台监视界面,用户无需反复刷新浏览器页面,就能实时获取文件传输状态信息。在气象业务中使用JSON技术让应用开发变得简单规范,提高了效率,若没有使用JSON在有大量信息传送时系统效率和用户体验将大打折扣。特别是在AJAX应用中使用JSON作为数据交换的载体,可以有效提高系统响应速度降低等待时间,对于提高系统资源利用率有着很大的贡献价值。
气象信息系统不断向高复杂度、细粒度化方向发展,系统结构也有原来的模块化向更细的组件、器件、接口分化。随之气象信息系统建设团队规模变大,分工变细,其中每个团队成员使用的开发语言与工具必能存在差异,如使用的开发语言有C++、Python、Java、C#、PHP、Asp.net、Perl、Pascal、VB等等,这样在团队开发中语言之间数据交流成了系统建设的巨大障碍。直到JSON出现这个问题才被根本解决,数据交互障碍不再存在,每个团队成员不再要为各个功能块之间的数据交互花大量时间进行信息编码,而可以将主要力量花在核心的业务逻辑实现上。本文以长江流域气象服务综合业务平台项目为实例,介绍JSON在大规模团队分工与合作中的应用。长江流域气象服务综合业务平台项目由长江流域内十二个省(市)合作完成,平台分信息收集与处理分系统、数据存储管理分系统、信息共享服务分系统、云平台支撑分系统构成。这里展示了系统数据流程图和为最终用户提供服务的关键“信息共享服务分系统”的结构,如图2、图3所示:
图2 长江流域气象服务综合业务平台数据流程
图3 共享服务分系统结构组成
综合业务平台的数据流程图和功能结构图显示,系统高度细化各功能块之间联系紧密数据交换频繁,JSON技术在系统建设运作和成员协同开发方面发挥了作用。首先对于使用各种开发语言的编程人员JSON支持多种语言能封装机器语言中的数组(Array)、布尔值(Boolean)或复杂的对象(Object),而且是基于纯文本的结构化数据,是一种轻量级的数据交换格式,易于阅读和编写。其次JSON是跨平台的,易于机器解析和生成,几乎所有语言都有相应的 JSON包支持,能轻易承载数据实现跨平台传递,如让java程序和asp.net程序互相传递包含数据的数组等;而客户端JavaScript可以简单的通过eval()进行JSON数据的读取;并且易于维护。使得业务系统建设中编程语言间的障碍不再存在,提高了团队多人协同工作效能。
气象信息系统是一个巨大的异构系统,不断有新系统加入如CIMISS、各种基于地理信息系统的服务系统、MICAPS预报系统等,而且各省市还有自己的子业务系统,融合各个业务系统发挥最大综合效益是气象信息系统建设的一项重要工作。JSON技术也可以在其中发挥重要作用,目前通过API接口,中间件结合JSON数据格式规范集约或融合系统的方法证明是有效的,取得了很好成果,如县级MICAPS预报预警业务平台与CMISS系统融合实现等案例,由于篇幅有限在此不做展开阐述。
JSON技术不仅促进了数据快速交换能力,而且推动了数据和应用标准,使得信息交流更规范共享更容易。
采用JSON数据进行数据交换将运行程序所需一些资源文件放置于应用之中,运行时只需下载核心数据,这样有效地降低了访问流量,并且提高了处理速度,降低了开发和使用门槛。
JSON技术将加速气象信息社会化应用,许多机构如中国天气网提供了基于JSON数据格式的API应用接口,使得获取气象数据和预报变得极为简单容易,各种平台Windows、Android等都可以向中国天气网发送GET请求获取JSON数据,许许多多包括桌面、手机、移动平板的气象应用APP如雨后春笋般出现,极大丰富了气象信息的应用领域,如下图的一些气象APP展现了丰富多彩的应用。
图4 气象APP社会化应用
可见在JSON等新技术推动下,气象信息被大众更深入接受并在更广泛领域取得了很好社会经济效益,气象信息生态已在初步形成。
[1]姜宇.JSON在电子政务信息系统数据交换中的研究与应用.科技创新导报.2012,5
[2]刘志雄.基于B/S模式的气候资料处理系统的设计与实现.农业网络信息.2008,12
[3]付会明.长江流域气象服务综合业务平台延伸服务探讨.长江流域中下游大气探测、通信与信息技术交流会文集,2014,11