学术文化网:本站代理期刊可作为职称及学位评审依据;并代写(职称、本科、硕士、博士)论文,代写代发论文一条龙服务;保证原创,保证质量,100%通过,保密服务

学术文化网

重点推荐省级国家级期刊、北大中文核心、CSSCI、EI、SCI发表,稳妥操作,速度快,包发表。有意向联系客服咨询。
论文代写:十年专业服务品质,全部由期刊编辑、硕士、博士撰写;保证原创、版权归您;保证通过、否则全额退款。代写论文申请表
论文发表:与百家优秀期刊合作,代理审核组稿,论文发表涵盖所有专业领域,全部正刊,保证出刊,否则全额退款。代写代发论文申请表
业务合作:因业务发展需要,诚招优秀写手合作,要求硕士以上学历,不限专业,另诚征优秀期刊代理合作,具体详谈。QQ:415835425 代写论文写手申请表
当前位置: 主页 > 工科论文

面向多数据源的终端软件中间件的设计(2)


此模板描述了传入的参数和最后生成的URL的映射关系,即将参数中building和room145 的值替换模板中相应的值,最终生成的URL即为需要访问的URL。表 1详细地描述了几种经常使用的模板。
表1 资源模板举例
Tab. 1 The examples of resource template
参数
数据源
资源模板
资源描述
意义
class:1, id: 10
Web数据
http://xxx_school/{class}/{id}
http://xxx_school/1/10
在1班编号为10的学生信息
filename: data.txt
本地文件
/home/user/{filename }
/home/user/data.txt
存在路径为/home/usr/data.txt位置的文件内容
age: 17
数据库
SELECT * FROM student
WHERE age={age}
SELECT * FROM student WHERE age=17
获取age为17的所有学生信息
用Key与Parameters来标识资源的作用是,它使得不同数据源的操作得到了统一,上150 层组件只要根据规则传入相应的key和Parameters,就能得到最终的数据。另外,key和parameters的形式可以唯一表示一个资源,同时也为其他通用的数据服务提供了条件。
3.2 数据编解码以及数据格式的屏蔽
编码器和解码器为数据中间件提供了编解码的功能。
在一个数据请求中,直接由数据源返回的可能是格式化的信息。比如,HTTP[6]请求返155 回的可能是XML或者JSON文本,或者是通过BASE64编码序列化的二进制信息。这些信息经过进一步处理之后才能直接应用(转化成数据实体)。解码器在用户层中允许上层组件自定义数据的解析方式。之后所得到的数据是解析完毕后的数据实体。
同样,在更新数据的时候,数据源可能会要求一组格式化的数据,如POST请求body中的xml数据。上层组件同样可以通过自定义编码器来实现这一功能。编码器会将传入的数160 据实体转化成格式化的数据(XML,JSON等序列化数据)提交给数据源。
编码器和解码器的工作方式如图4所示。
 
请求结果解码器数据实体数据实体编码器发送的数据
图4 编码器和解码器的工作方式
Fig. 4 The workflow of encoder and decoder 165
编码器和解码器所带来的好处为,他将数据源的差异在数据组织格式上进一步屏蔽。如,不同的GIS服务可能返回不同格式的数据,但它们实质上为同种服务的不同体现形式。解码器和编码器可以讲其统一化,并给上层组件一个无差异的数据实体。从而可以有效地实现不同服务之间的迁移,提高软件的可替换性。
3.3 缓存服务 170
3.3.1 缓存机制的介绍
严格上来讲,缓存服务不属于中间件的必要组成部分,但是在终端软件环境中,缓存机制广泛存在于各种数据源尤其是基于HTTP的WEB数据源中[7]。另外受限于网络限制和用户体验的需求,经常有数据缓存的需求。本设计将缓存作为中间件的内置服务提供给上层组件,需要缓存服务的组件可以通过配置不同资源的缓存参数来达到数据缓存的目的。 175
图5表示了无缓存和有缓存时中间件的行为。
中间件数据源数据请求者获取数据获取数据返回数据返回数据缓存数据到本地中间件数据请求者获取数据返回数据从本地获取缓存数据本地无缓存本地有缓存
图5 无缓存和有缓存时中间件的行为
Fig. 5 The behavior of middleware when the cache exists and not 180
当缓存数据不可用时(没有缓存或缓存已经过期),中间件会通过DataMapper从数据源中获取数据,并将获取的数据缓存到本地。而当缓存数据可用时,即本地存在未过期的缓存,数据会直接从本地通过缓存引擎获取缓存数据。
无论是数据来自于缓存还是数据源,数据的访问方式对上层模块来讲都是一样的,其逻辑的不同仅仅发生在中间件内部。因此,此设计大大简化了加入缓存后上层模块的逻辑。 185
 
3.3.2 缓存过期机制
中间件需要一种机制来防止过于陈旧的数据的存在, 对于每一个资源,我们用三个标识表示其缓存的状态,这三个标识是:update_time, expire_time, age。
1) update_time
表示数据更新的时间 ,一般来讲,其会使用数据源提供的数据源更新时间,但是对于190 大多数数据源来讲并没有提供此项信息,此时会用数据获取的时间表示。
2) expire_time
表示资源过期的时间,如果当前时间在缓存expire_time之后,则其会被看做过期数据而被舍弃。
3) age 195
表示自expire_time之后,缓存有效的持续时间。如果当前时间减去缓存的update_time 大于age,则缓存会被当做过期数据被舍弃。
一般来讲,在知道update_time的前提下,只要知道expire_time或者age就可以完全获取缓存的状态,因此expire_time和age可以有一个为空。
采用expire_time和age作为缓存过期的判断标识的原因主要是为了适应不同的场景: 200
对于有效性精确依赖于日期的数据,expire_time可以更好地表示这一状况。比如,对于当天的节目预告信息,会在过了当天之后失效。
对于其他数据,一般用age来表示数据何时失效。
3.3.3 缓存引擎
中间件提供了两个缓存引擎来用于不同类型的缓存存储,他们分别是持久化引擎和内存205 引擎。
1) 内存引擎
内存引擎可以将资源缓存到内存中,内存引擎的优点在于读写速度较快。但是当应用关闭或终端断电后缓存数据会丢失。内存引擎一般会存储一些临时或并不要求长时间缓存的数据。 210
2) 持久化引擎
持久化引擎可以将缓存数据缓存到持久化介质中,其好处是不受应用运行状况和电源的影响,可以长时间保持数据,对于比较静态或者需要长时间保存的数据可以放在持久化引擎中存储。
4 应用实例 215
作为一个中间件形式的数据模块,本设计可以运用到大多数终端软件之中。目前已有很多终端应用使用了本设计并收到了良好的效果。
使用本中间件的一个例子为智能家居的物联网应用,如图6所示。在此应用中,软件需要面对大量不同服务商提供的不同传感器访问接口,如有些接口以REST的WEB服务的形式提供,有的则以Socket的形式提供。不同的数据源的差异给开发带来了很大的困难。本220 文中设计的中间件的使用有效地解决了这一问题,中间件将底层不同传感器接口的差异屏蔽,并向上层模块提供了统一的访问接口。因此,在设计上层模块时,开发者不必关注传感器的差异,只需要专注于业务逻辑的设计,这在很大程度上降低了软件设计的复杂度。
 
图6 使用数据中间件的物联网智能家居应用
Fig. 6 The smart home application of IoT using terminal middleware
另外中间件中的缓存服务也降低了此应用的性能以及资源开销,通过将相对静态的信息(如设备列表信息等)缓存到本地,应用可以减少同网络交互的次数和数据延迟,增强用户的体验。因为中间件将缓存机制集成到中间件内部,无论数据源有无缓存,都有相同的访问230 方式,因此,缓存的引入不仅带来性能上的提升,同时也没有因为缓存的引入增加了了软件的复杂度。
5 结论
本文设计了一种面向多数据源的终端软件中间件。中间件位于底层数据之上,起到了屏蔽底层数据差异,并向上层提供统一的操作方式的作用。在中间件中,本文探讨了将数据映235 射为资源的方式,并提出了具体的实现。另外,中间件的数据编解码的设计进一步降低了数据源和软件上层逻辑的耦合性,使得软件各个模块可以独立演进。在上面设计的基础上,中间件还提供了缓存的服务,此服务可以对使用了中间件的数据进行缓存,并降低系统的开销。本设计中的中间件可以广泛地运用在各类终端软件中,为终端软件开发提供了良好的数据基础和环境。 240
[参考文献] (References)
[1] 鲁帆.移动智能终端发展趋势研究[J].现代传播,2011,(11):139-140. [2] Fielding,R.T. Architectural Styles and the Design of Network-based Software Architectures[D]. Irvine: University of California, 2000. [3] 张小霞.一种基于XML的中间件跨库检索系统[J].现代电子技术,2012,35(8):28-29,32. 245 [4] Huanqin Li, Jinfeng Liu. Research on Heterogeneous Data Exchange based on XML[J]. Physics Procedia, 2012, 25: 1382-1387. [5] Jing Su, Ruoyu Fan, Xin Li. Research and design of heterogeneous data integration middleware based on XML[J]. Intelligent Computing and Intelligent Systems (ICIS), 2010, 2: 850-854, 29-31. [6] R. Fielding, et al, RFC2621. Hypertext Transfer Protocol--HTTP/1.1[S]. Internet Engineering Task Force, June 250 1999. [7] 贺琛,陈肇雄,黄河燕等.Web缓存技术综述[J].小型微型计算机系统,2004,25(5):836-842.
学术论文网Tag:代写硕士论文 代写论文 代写代发论文 代发论文
本站郑重声明:
  1、我们与数十所知名高校博士强强联手,保持常年稳定合作关系,论文质量更有保证;;
  2、写作领域涉及所有专业,实力操作,出稿更快,质量更高,通过率100%;
  3、所有代写文章,全部原创,包检测,保证质量,后续免费修改,保证通过;
  4、信誉实力服务,专业代写毕业论文,职称论文,硕博士论文,留学生论文,成熟操作;
------分隔线----------------------------
栏目列表
联系我们
服务承诺
推荐内容