李营那 吴松洋 张 涛 李 勋
(公安部第三研究所 上海 201204)
基于动态标签技术的信息发布系统设计与实现
李营那 吴松洋 张 涛*李 勋
(公安部第三研究所 上海 201204)
当今信息化时代,信息发布系统被广泛应用于社会各领域、各企事业单位。现有的信息发布系统只能发布系统已定义类型的信息,如企业动态、考勤制度等,当需要增加新的信息类型时,需要对系统进行重新编码设计,现有信息系统的可扩展性很差。为此,提出一种基于动态标签技术的信息发布系统,详述其设计与实现方法,通过基于MongoDB存储的动态标签技术实现信息类型用户自定义,用户可以简单、易操作的方式增加新的信息类型,发布新的信息。实践表明,所提出的信息发布信息具有高度的用户透明性、业务扩展性,减低了企事业单位研发信息发布系统的费用、时间和人员。
动态标签技术 MongoDB HTML5 服务器推送
信息化时代各领域由通过传统媒介(报纸、公文)发布信息向通过互联网发布信息转变,信息发布的及时性已成为衡量一个企业竞争力的重要指标。为了提高自身的实力,越来越多的企业开始创建自己的信息发布系统,使企业信息能够方便、及时、高效地发布,便于企业员工可以实时地浏览、下载最新的信息,及时了解企业的新动态、新政策,协助企业更好地作出决策。
信息发布系统主要用于在各个播放端展示预先制作的包含图片、视频、动画等多媒体元素的HTML内容[4]。目前信息发布系统存在以下问题:
(1) 当前企业信息发布系统只能发布系统已定义类型的信息如最新资讯、考勤管理、通知公告等,不同类型的信息具有不同的属性,需分开存储。随着企业业务的发展可能需要增加新的信息类型,此时需要再次进行需求调研、组织开发,耗费大量的时间、人员,影响企业的发展。
(2) 目前信息发布系统中主流的HTML生成技术是模板引擎[1,5],赖吉平等[2]提出使用标签解析技术实现用户自定义模板的方法,使用标签解析技术提取模板内与数据源交互的字段,将这些字段与模板进行整合以实现标签内容的提取、替换。经过这些处理生成的HTML页面即为展示给用户的信息,但该方法要求用户有一定的编程基础;朱明[4]使用标签引擎制作HTML页面,每种媒体元素代表一类标签。
(3) 信息实时性不够,企业员工主动访问信息发布系统,才可以浏览最新的信息,员工不会时刻关注是否有新信息发布,导致信息滞后,影响工作进程。
本文设计了一种基于动态标签的信息发布系统,通过充分利用非关系型数据库MongoDB的数据模式自由特性,HTML5服务器推送事件特性,以及Ajax的交互式数据访问特性,系统解决了上述难题。总体而言,该系统具备如下特点和优势:
(1) 数据标签化:系统提供一套与底层存储相对应的数据标签,用户可使用所见即所得的方式定义数据标签,不需要任何编程即可从服务器数据库把信息读取出来,并把新信息存储到服务器数据库;
(2) 信息类型自由定义:用户可根据业务需求自由定义需要发布信息的类型(政策法规、最新动态、通知公告等)与信息需要展示的内容;
(3) 模板可自由定义:用户可为不同的信息类型定义相应的可视化模板;
(4) 基于模板与标签的权限控制机制:系统从模板和标签级别对数据的权限进行控制,从而保证不同用户组之间信息的访问安全;
(5) 信息实时推送机制:通过推送机制使用户可以实时地访问系统服务器所发布的信息,从而避免了传统方式中客户端频繁刷新请求。
1.1 MongoDB
MongoDB是基于分布式文件存储的NoSQL数据库系统,具有可扩展、高性能、开源的、模式自由和面向文档等特性,旨在为Web应用提供可扩展的高性能数据存储的解决方案。MongoDB具有以下特性:
文档型:文档是MongoDB中基本单位,数据以BSON(键-值对)形式存储在文档中,键是字符串,值为任意数据类型如字符串、整形、用户定义的对象等[9];
面向集合:文档数据被分组存储在不同的集合中,每个集合在数据库中有唯一的标识名[9],并且可以包含无限数量的文档,集合类似于关系型数据库中的表,区别是集合不需要定义模式;
模式自由:数据库不需要知道存储在MongoDB集合中的文档的任何结构信息,同一集合可以包含不同结构的文档,如下两个记录可以存储在同一个集合中:{“name”:”上海”},{“sex”:”男”,”address”:”shanghai”}。
作为一个适用于敏捷开发的数据库MongoDB还提供以下功能:支持丰富的查询表达式,查询指令使用JSON形式;完整的索引支持,包括文档内嵌对象及数组;支持服务器之间的数据复制,提供冗余及自动故障转移,使应用程序具有企业级的可靠性和操作灵活性;自动分片功能支持水平的数据库集群,可动态添加机器,支持大型、复杂的多数据中心架构。
对于本文所研发的信息系统而言,最重要的是使用了MongoDB的数据模式的灵活更新机制;同时,其可扩展性也是非常重要的特性,尤其是在大型企业中,信息的数量通常处于非常高的数量级,因而可利用MongoDB的可扩充特性来保证大数据量下系统的运行效率。
1.2 HTML5
HTML 5是HTML下一代主要的修订版本,是用以描述网页文档的超文本标记语言,它的制定主要是为了替代原有的HTML 4.01和XHTML 1.0标准。从广义上HTML 5是一系列用于开发网络应用的最新技术的集合,包括HTML、CSS和JavaScript以及一系列全新API[3]。HTML5技术希望能够减少浏览器对于需要插件的丰富性网络应用服务如Adobe Flash、Microsoft Silverlight的需求,提供更多能有效增强网络应用的标准集。
相对于HTML之前的版本,HTML 5添加了许多新的语法特征,主要包括
HTML 5的另一个重要特性是它提供了服务器推送技术,可以从服务端实时推送数据到浏览器,这是本文使用HTML 5的最重要特性。
1.3 服务器推送技术
在一般的 Web 应用中,浏览器和服务器之间的通信是请求/响应的交互模式:浏览器发出请求,服务器根据收到的请求来生成相应的响应,浏览器对收到的响应进行处理,动态更新展现给用户的页面[8]。这种通信方式通常需要用户在页面上进行操作,比如点击鼠标、移动鼠标来触发相应的事件,不足在于:服务器端产生的数据更新不能及时地通知浏览器,而是需要等到下次请求发出时才能被浏览器获取,对于某些对数据实时性要求较高的应用来讲,这种延迟是不能接受的。
为解决数据延迟问题,需要服务器端发生数据更新的第一时间主动推送最新数据给浏览器。常见的解决主要可以分成两类,其区别在于是否基于 HTTP 协议实现。不使用 HTTP 协议的做法是使用 HTML 5 新增的 WebSocket 规范;使用 HTTP 协议的做法则包括简易轮询、COMET 技术和本文中要使用的 HTML 5 服务器推送事件[8]。
服务器推送事件是 HTML 5 规范中的一个组成部分,可以从服务端实时推送数据到浏览器端。相对于与类似的 COMET 和 WebSocket 技术来说,服务器推送事件的使用更简单,对服务器端的改动也比较小。对于本文将要描述的信息发布系统而言,服务器推送事件是最佳的选择。
企业信息发布系统的总体架构如图1所示,系统总共分5大模块,依次说明如下:
(1) 基于MongoDB的数据存储层:用于存储系统的所有数据,主要包括信息的数据模式定义存储、各类型的信息数据存储、信息模板内容、用户信息、权限信息等其他数据的存储;
(2) 数据模式定义管理层:定义信息的数据模式,即信息的属性定义,主要包括数据模式的增、删、改、查操作及对已定义数据模式的解析,是底层信息数据与前台进行可视化数据解析与映射的桥梁;
(3) 所见即所得的标签管理:该部分分为标签定义、标签解析及标签的管理,对于定义的信息类型,提供所见即所得方式的标签定义系统,让不具备编程基础的用户根据企业业务需求可以方便地定义各类标签,通过标签可视化地实现读取存储在MongoDB中的信息内容、将信息内容存储在MongoDB中;
(4) 信息权限管理层:提供从信息标签和模板级别对数据权限的管理,实现不同用户角色对相应类型数据的访问控制;
(5) 可自由编辑的模板管理:除系统内置的模板外,用户可依据业务需要定义不同的信息显示模板,实现丰富的可视化效果。
图1 系统整体架构
本节针对图1所示信息发布系统的每个核心模块的实现进行详细说明。
3.1 基于MongoDB的数据存储层
在MongoDB中,数据以JSON形式存储的样例如下,数据的查询也是以JSON形式的命令执行,因此,用户使用非常简单方便。
{
″_id″:ObjectId(″55eaef6b6e313c30e07def5″),
″title″:″关于抗战70周年放假的通知″,
″pub_time″:″2014-08-21 10:08:11″,
″author″:″行政部″,
″content″:″9月3日(周四)~9月5日(周六):放假,9月6日(周日):正常上班。″
}
对于信息发布系统中各类数据模式固定的数据类型如用户信息、权限信息,MongoDB中的存储与关系型数据库的存储基本相同,确定好数据模式后,把相应的数据存储到数据表中即可。
对于数据模式频繁变化的信息类型、信息内容的存储,传统的关系型数据库并未提供良好的解决方案,使用关系型数据库存储会非常复杂。而MongoDB因为具备数据模式自由扩展的特性,非常适合本文的信息类型频繁变化的应用场景。在MongoDB中,数据表不需要在数据存储之前进行显示的定义,而是在用户进行数据写入的同时同步创建相应的数据表。如前文所述,数据是使用JSON形式描述的,MongoDB会自动分析用户写入数据中的数据字段,并同时创建相应的数据表格(例如上述数据样例是在未创建表的情况下写入的,系统会自动创建表)。另一方面,当业务发生变化需要修改数据模式时,也不需要显示进行表格数据模式的修改,系统同样会依据用户提供数据中的数据模式进行字段的动态添加或删除。与上述样例信息存储于同一表中但增加了数据字段“tips”的数据如下:
{
″_id″:ObjectId(″55eaef6b6e3513c30e07cf5″),
″title″:″关于中秋节放假的通知″,
″pub_time″:″2015-09-06 09:33:21″,
″author″:″行政部″,
″content″:″9月26日(周六)~9月27日(周日):放假,9月28日(周一):正常上班。″
″tips″:″本次中秋节放假只有两天″,
}
因此,对于本文的可能进行频繁变换的信息类型,直接把数据写入MongoDB进行存储即可。当然,在用户进行信息的存储和访问时,需要知道信息的数据字段定义,此部分功能将由数据模式定义管理层进行管理。
3.2 数据模式定义管理层
数据模式定义管理层的主要功能是对系统中的信息类型的数据模式提供定义入口和相应数据的存储。
数据模式可以看成是元数据,即描述数据的数据。在本文中指信息类型的定义表,即每个信息类型需要展示的数据字段、这些数据字段的数据类型、数据字段的长度、字段对应的数据是否需要进行索引等。
经过总结和抽象可以得知数据模式定义表本身是固定的,如表1所示包含以下字段:唯一标识、信息类型名、信息类型显示名、信息需要展示字段列表。其中信息字段列表中每个元素都为JSON形式的字符串,包含:字段名、字段显示名、字段类型、字段长度、字段是否索引,如表2所示。
表1 信息类型数据模式定义表
表2 信息内容定义表
基于以上MongoDB信息数据样例,对应的信息类型的数据模式定义表结构如下:
{
″_id″:ObjectId(″55eaef6b6e313c30e07dcx5″),
″name″:″holiday_message″,
″display_name″:″放假通知″,
″fields″:
[
{
″name″:″title″,
″displayName″:″标题″,
″dataType″:″3″,
″isIndexed″:″1″
},
{
″name″:″pub_time″,
″displayName″:″发布时间″,
″dataType″:″3″,
″isIndexed″:″0″
},
{
″name″:″author″,
″displayName″:″作者″,
″dataType″:″3″,
″isIndexed″:″0″
},
{
″name″:″content″,
″displayName″:″内容″,
″dataType″:″3″,
″isIndexed″:″0″
}
]
}
3.3 标签系统
在传统的数据管理模式下,信息内容的存取需要用户具备良好的服务器编程基础,Web显示编程基础和数据库管理基础才能完成;用户需要完成与信息存储系统的数据交互,包括信息读取、信息添加与修改和信息的删除、信息的显示与分页、以及信息内容的检索等;所有这些功能实现对于普通用户而言是比较困难的,即使用户具备良好的编程基础,也需要花费大量的时间来实现。另一方面,当信息的类型发生变化时,又需要对信息的存取实现、信息的展示实现等进行更改,这在频繁改变的信息系统中是非常耗时的。
因此,本系统提供了一套所见即所得的标签定义体系,普通用户可以通过在前台定义标签实现信息数据的存取、信息的前端展示等功能,极大程度地降低了系统的使用门槛和用户的工作量。
从本质上而言,标签系统的核心功能为实现与服务器的数据存储系统的数据交换。因此,标签系统的核心在于建立与服务器存储系统的映射关系、实现浏览器端与服务器端的数据交互、提供浏览器端数据的显示。具体而言,实现浏览器端与服务器进行数据交换的关键技术和功能包括:
(1) 建立统一的数据格式标准:保证用户定义的标签所写入和获得的数据与服务器数据存储系统中存储的内容保持一致,以便数据的正确解析;由于采用MongoDB作为存储底层,本系统中统一使用MongoDB的JSON格式作为数据描述标准。
(2) 获取服务器端的数据模式定义:用户在定义标签时,首先需要知道系统中定义了哪些信息类型,这些信息类型又包含哪些数据字段;知道了数据模式定义后,用户便可定义数据标签所对应的表格、所需要读取的数据字段,并进行相应的查询过滤条件、索引的定义。
(3) 浏览器发送的请求中包含的操作和数据解析机制:系统在接收到用户定义标签对应的数据请求后需要对请求中包含的操作、请求中包含的数据进行解析,然后执行相应的操作命令,最后把相应的操作结果按照约定的格式返回给用户。
(4) 标签的前台展示方式:包括用户读取的信息的展示方式以及用户需要进行信息发布时的输入界面的展示方式;页面的总体布局需要使用下方将说明的模板进行规划,标签的展示则需要对当前标签的管理区域进行可视化。
标签系统的工作流程如图2所示,标签系统中主要包括两类标签:信息展示标签和信息编辑标签。消息展示标签主要包含单值型标签和多值型标签,单值型标签即指仅读取一条数据的标签(如展示一条信息的详细信息),而多值型标签则是需要读取一系列的消息(如展示信息列表)。
图2 标签系统工作流程
1) 读取数据模式与解析
用户所定义的每一个标签对应于服务器数据模式中的一个或多个表格(信息类型表格),因此用户在定义标签时,标签系统首先需要把服务器所定义的数据模式读取并展示给用户。信息类型定义表(表1)和信息内容定义表(表2)存储在MongoDB中,系统读取出来后,把所有的信息类型展示给用户选择;用户选择信息类型后,系统即把所选信息类型的字段展示给用户,用户从中选择需要显示或修改数据的字段。
2) 生成数据读取交互界面
用户选择好信息类型和该类型需要展示的字段后,系统会提供数据交互的操作界面并自动生成数据交互的相关查询脚本。对于信息展示标签,自动生成数据读取的查询脚本,同时提供查询条件的设置界面让用户选择(例如查询最近7天的放假消息);用户可以通过生成的可视化交互界面设置查询的字段和查询的条件,查询条件包括查询满足特定字段要求的数据、读取数据的条数、数据的排序方式等;对于高级用户,也可以通过直接编辑查询脚本来设置查询内容及查询条件。对于信息编辑标签,则生成用户设置编辑数据的交互界面,用户可以设置所需要显示的字段、确定数据编辑的表单类型(文本框、文本域或HTML编辑器)、确定字段的排序顺序等。
3) 设置显示样式
通过第2)步,已经完成数据类型、数据字段、数据查询条件(信息读取标签)的设定,接下来需要确定数据或编辑界面的显示形式。对于数据显示标签,要设置标签最终所读取出来的数据的展示形式;数据展示是通过HTML来描述的,因此用户可以使用CSS来控制最终数据展示的样式;由于在设置时数据还没有读取出来,因此需要通过设置占位符的方式来确定最终数据读取出来后每个字段的数据放置的位置,多个字段的占位符序号以递增的方式进行计数;对于字段数据,还可以进行一些简单的处理,包括设置显示的最大长度(如某些列表中由于空间关系不能把标题全部展示而仅展示前面的一部分)、设置超链接等。以下为一个显示标签的示例,其中“@_tag_value_*”为占位符,末位的序号代表查询字段的序号。编辑标签与显示标签类似,也通过HTML和CSS来设置编辑区域的显示方式。
4) 数据读取与显示
此功能是对于显示标签而言的,标签系统依据用户所定义的查询目标和查询条件等。首先从服务器的数据库中找到相应的数据库和数据表,然后依据条件进行数据的读取操作,再把数据传送到前台。前台得到数据后,首先对JSON形式的数据进行解析,得到里边的数据记录、数据字段,然后与设置的查询条件以及设置的显示条件结合进行解析,生成一条(单值型标签)或多条(多值型标签)数据,并把相应的字段填入相应的占位符位置上。
5) 数据保存
此功能是对于编辑标签而言的,当前台用户在系统依据标签设置生成的交互界面完成数据的编辑后,点击保存时,数据会传送到后台,系统解析JSON形式的数据后,调用MongoDB的相关引擎执行相应数据表、相应数据字段的保存工作。
用户定义及使用一个信息展示标签的过程如下:
(1)用户选定添加一个信息展示标签后,标签系统自动从底层的数据模式定义管理层中获得服务器的数据模式(即定义了哪些信息类型以及这些信息类型的数据字段)并显示出来供用户选择;(2)用户从这些数据模式中选取当前需要展示的信息类型,系统会自动解析得到所选择信息类型的数据字段并自动生成用户选择的界面;(3)用户从解析到的数据字段中选取需要展示的数据字段,并设置查询条件(如查询多少条、时间范围等)、分页设置(每页多少条记录)等;(4)系统依据用户选择的信息类型、数据字段、查询条件,系统自动把用户的设置转换成查询数据的SQL语句,把数据从存储系统中查询出来,同时对数据进行解析,生成信息记录;(5)用户定义信息数据显示的基本格式(HTML源码、CSS样式等),设置时使用统一的占位符代替数据的位置;(6)系统自动把用户定义的显示格式中的点位符替换成之前步骤所读取出来的数据,如此便可以在客户端进行展示。
3.4 用户可定义的模板机制
为丰富数据的可视化效果,对于不同的信息类型,用户需要使用不同的展示方式,因此,系统需要提供灵活的可视化方式。本系统提供了用户可自由定义模板的机制,为丰富的可视化提供了可能。
模板的主要功能在于对页面的总体布局进行规划,页面布局是Web开发的一个重要课题。对于普通用户,从头开始实现页面是比较困难的,幸运的是,已经有许多框架提供了许多常用的布局模板,同时也提供了布局模板自定义的功能,具备这些功能的常见框架有:ExtJS、Apache Tiles和Elastic等。本文系统采用的是ExtJS框架,其丰富的内置布局以及灵活的自定义布局功能,为本系统中的信息可视化提供了技术上实现的可能。
3.5 实时信息推送机制
为保证用户实时地接收到系统所发布的信息,本系统基于HTML 5的服务器推送事件机制实现信息实时推送。
服务器推送事件的规范主要由服务器端与浏览器端之间的通信协议及在浏览器端可供 JavaScript 使用的 EventSource对象两个部分组成。通信协议是基于纯文本的简单协议,服务器端的响应内容类型是“text/event-stream”。服务器端的响应内容可以看做一个由不同事件组成的事件流。每个事件由类型、数据、可选的标识符组成,每个事件的数据可能由多行组成。不同事件的内容通过仅包含回车符和换行符的空行分隔。服务器推送事件数据样例如下,对于每一行冒号(“:”)前面表示的是该行的类型,冒号后面则是对应的值。
data:first event
data:second event
id:100
event:myevent
data:thid event
id:101
:this is a comment
data:fourth event
data:fourth event continue
服务器端实现推送事件只需要按照协议规定的格式,返回响应内容即可。本文使用 Java 作为服务器端的实现语言,具体实现基于开源的 jetty-eventsource-servlet 项目。
对于服务器端返回的响应,浏览器端需要在 JavaScript 中使用 EventSource 对象来进行处理。EventSource 使用的是标准的事件监听器方式,只需要在EventSource对象上添加相应的事件处理方法即可。
3.6 信息权限管理
由于数据与底层存储系统的交互是通过标签来实现的,因此,本系统通过在标签层面进行访问控制,即把用户角色与标签进行关联匹配。信息标签的权限分为信息读取权限和信息的发送权限,在权限控制时分开处理。
另外,系统也提供了模板级别的权限控制,特定角色和权限的用户方可使用特定的模板。在基于标签和模板的基础上,权限控制的整体方案与常用的权限管理基本相同。
本系统的基于HTML5和JavaScript技术为用户提供友好的可视化展示界面。
图3为用户已添加了信息类型分页展示及信息类型的编辑界面,用户可以对信息类型的字段进行编辑、添加、删除操作。
图3 信息类型编辑
图4展示了动态标签的添加方法,用户为标签命名,指定标签的类型(简单类型或用户自定义的信息类型)、选择标签存取的数据源、定义标签数据显示的样式等其他属性,即可完成一个标签定义。
图4 动态标签定义
图5为使用ExtJS框架自定义信息展示效果的工作区,基于ExtJS框架用户可以灵活、方便、所见既所得的定义信息的展示样式。
图5 信息展示模板定义
本系统已在本单位内部及世贸集团运行一年多,具有上千用户,基于该系统发布了大量信息,便于了企业信息发布的及时性,规范了企业各类信息发布系统的建设,图3-图5就是该系统实际应用效果。
企业信息发布系统作为企业对内对外的门户在企业的发展中占有重要位置,本文研究并实现了基于动态标签技术的企业信息发布系统。实践表明,使用该系统用户可以方便、灵活的发布信息,通过简单的界面操作,用户可以随时增加信息类型,不需要重新编码设计即可发布新的频道,降低了企业建设和维护信息发布系统的人力、财力和时间,推动了企业信息化的脚步。该信息发布系统具有以下特性:
良好的用户透明性:用户不需要懂任何编码技术(HTML、JS、Mysql)即可以可见即可得方式定义信息展示样式;
可扩展性:企事业单位会根据企业发展、拓展了新的业务需要增加新的信息类型,此时不需要对信息发布系统进行重新编码设计,用户可以通过简单的界面操作增加新的信息类型,发布新类型的信息;
通用性:各企业可根据自身的情况定义自己的信息类型,建立自己的信息发布系统,各个企业不需要单独研发自己的信息发布系统。
[1] 姬一文,吴庆波,杨沙洲.一种服务器端模板引擎的改进与实现[J].计算机应用研究,2011,28(3):1077-1079,1087.
[2] 赖吉平,罗清.模版引擎与标签解析技术在内容管理系统的运用研究[J].中国电子商务,2011(11):49.[3] 黄永慧,陈程凯.HTML5在移动应用开发上的应用前景[J].计算机技术与发展,2013,23(7):207-210.
[4] 朱明,左珊珊,苏厚勤.一种采用标签引擎技术信息发布系统的设计与实现[J].计算机应用与软件,2015,32(2):89-93.
[5] 南轶,李先国.模板技术在内容管理系统中的研究与应用[J].微电子学与计算机,2012,29(6):180-1854.
[6] 萨支欣.国内外网站内容管理系统比较[J].情报探索,2012(2):85-87.
[7] 叶晓俊,李海翔.企业信息移动发布平台的设计与开发[J].计算机集成制造系统,2003,9(11):972-975.
[8] 成富.HTML5服务器推送事件实战开发[EB/OL].(2013-09-15).http://www.uml.org.cn/html/201309133.asp.
[9] Chodorow K, Dirolf M. MongoDB: The Definitive Guide[M]. Sebastopol : O’Reilly Media, 2010.
DESIGN AND IMPLEMENTATION OF INFORMATION RELEASE SYSTEM BASED ON DYNAMIC TAG TECHNOLOGY
Li Yingna Wu Songyang Zhang Tao*Li Xun
(ThirdResearchInstituteofMinistryofPublicSecurity,Shanghai201204,China)
In the information age,information release system is widely used in various industries.The existing information release system can only publish the information which has been defined such as the enterprise dynamic news,time and attendance.When users want to publish undefined type of information,the enterprise needs to redesign the system which means existing information systems have poor scalability.In order to solve this problem,a new method based on dynamic tag technology is proposed which describes the design and implementation of the system.By using the dynamic tag technology based on MongoDB,the information release system can realize that user-define information types and users can add new information types at any time.The practice shows that the information release system has good user transparency and business expansion,reducing the cost,time and manpower for developing.
Dynamic tag technology MongoDB HTML5 Server Push
2015-11-06。国家信息安全专项项目(发改办高技[2015]289号)。李营那,硕士,主研领域:软件工程。吴松洋,副研究员。张涛,助理研究员。李勋,助理研究员。
TP3
A
10.3969/j.issn.1000-386x.2017.01.004