1 / 7
文档名称:

具有状态保持机制的EPG系统研究与实现.doc

格式:doc   大小:21KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

具有状态保持机制的EPG系统研究与实现.doc

上传人:凹凸漫 2022/7/3 文件大小:21 KB

下载得到文件列表

具有状态保持机制的EPG系统研究与实现.doc

相关文档

文档介绍

文档介绍:具有状态保持机制的EPG系统研究与实现
  摘要首先介绍了IPTV系统中EPG模块的功能与工作过程;分析了EPG模块开发过程中的菜单状态保持问题。然后针对一个实际的IPTV系统的EPG模块进展分析,参考操作系统中的参数传递机制,提出一种构,待下级菜单返回到本级菜单时再恢复回来就可以到达状态保持的目的了。
  
  在汇编语言程序设计中,通常函数被调用后首先做的工作是保存一些重要的存放器的值并保护好调用者使用的堆空间,以便函数完毕时可以正确的返回到调用者。当函数调用有多层嵌套时,程序堆空间的使用情况如图2所示,函数1被调用时首先分配一定的空间保存存放器及其他变量的值;接下来函数2被调用,函数2也分配一定的空间保存环境数据;嵌套函数依次分配属于自己的一段空间,彼此互不干扰。
  图2程序堆空间使用方式示意图
  菜单状态保持也可以认为是程序对当前运行时环境的保持,受到汇编语言中函数保存现场机制的启发,EPG各级菜单也可将自己的所有状态信息保存到类似的堆空间里,当各级菜单返回时从堆空间中取出属于自己的那局部数据,这样就实现了状态恢复的功能。
  3状态保持机制实现与应用
  
  eb应用程序的开发与运行环境与汇编语言程序的开发与运行有着根本的区别,eb程序无法像汇编程序那样操纵自己运行时的内存空间,为了实现菜单状态保持的功能,我们有必要自行构造一个类似的堆栈空间用来保存各级菜单的运行状态。在eb开发中有三种数据保存形式:①保存到效劳器端的SESSIN中;②保存在HTL表单/URL中;③保存在客户端的kie中。三种方式各有优劣,第一种方式依靠效劳器的存储空间,局部无需让客户端知晓的数据就可以不必在网络中传输了;第二种方式会把所有的数据在网络中传来传去,不占用任何一方的存储空间;第三种方式利用客户端的存储空间,效劳器端程序对kie施行有效管理。考虑到IPTV系统多采用分布式效劳器的构造,第一种方式将数据保存在SESSIN中会对分布式构造造成一定的障碍,所以尽量不会考虑这种方式。在实际工程中,我们使用HTL表单元素当作堆栈空间用来保存状态信息,形如图3所示:
  图3eb程序的状态堆栈空间
  图3所示为用户经过enu1和enu2进入enu3后状态堆栈的情况,其中enu_stak与state_stak是两个模拟的栈,左边为栈底,后边为栈顶,栈元素之间使用特殊字符“*〞分隔,我们在效劳器端和客户端分别用PHP和JavaSript实现了一组函数对这种堆栈进展操作。enu_stak中保存了用户所经过的菜单途径,state_stak记录了每个菜单对应的状态信息,图3中state1与state2分别是enu1与enu2的状态信息,由于状态信息可能会包含
  多个参数值,参数值也具有很多种类型,其中有可能存在栈分割符“*〞或其他一些影响JavaSript正常工作的字符,所以在详细实现时各状态信息需要经过一定编码处理。常见的编码方式有base64编码、QP(Qute-Printable)编码、URL编码方式等,经过分析,对状态信息的编码方式应满足以下条件:①编码之后的结果不会影响到JavaSript正常工作;②编码之后的结果长度尽量短,减轻网络负担;③算法易于效劳器端程序和客户端程序实现。在工程中我