气象水文到报监测的实时性设计.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
气象水文到报监测的实时性设计.doc

气象水文到报监测的实时性设计   作者简介:张志杰(1973—),男,山东成武人,高级工程师,研究方向:软件工程(E-mail:codedajie@126.com);刘金胜(1980—),男,山东高密人,工程师,硕士,研究方向:计算机软件技术。   摘要:到报监测是气象水文数据传输、处理等的重要环节,其实时性是关键设计目标。通过分析文件目录扫描方法和消息通知机制的应用特点,结合气象水文资料传输、处理规程及应用模式,重点阐述了结合实时性和可靠性要求的到报监测方法,并给出一种重构性强、应用灵活的到报监测模块的设计方案。   关键词:气象水文资料到报监测;实时性;FileSystemWatcher;目录扫描;软件设计   中图分类号:P4文献标识码:A   1引言   到报监测旨在获取最新到达的资料信息,既是资料传输业务监控管理的主要内容,也是资料处理应用系统的重要组成部分。气象水文资料应用实时性要求高,及时响应资料到达状态,提高到报监测的实时性,是资料实时处理的前提。   有别于计算机数据库系统,气象水文资料在生成、处理和转储等应用过程中,多以磁盘文件的形式存储,效存储在计算机系统中的一般文件,其特点主要表现为种类多,到报量、到报时间粒度、数据大小差异性大,数据文件按照类别存储在不同的目录,文件名称中多含有与时间或者类别相关的信息;其信息服务应用特点是时效性强、更新快,操作系统多样,数据访问复杂等。因此气象水文资料到报监测的实时性设计难度大。   常规获取资料到报的方法是进行两次目录扫描,对比前后扫描结果,提取资料更新信息。该方法对于目录内文件较多时,获取的周期就会过长,且频繁的扫描影响系统效率。另一种方法是基于Windows消息机制的文件系统监视,实时响应资料更新,但是该机制由于缓存溢出等多种原因而时常失效。   本文结合目录扫描方法和消息通知机制,利用气象水文资料及其使用要求的特点,通过优化变更信息获取方法,设计了基于队列管理的多任务到报监测方法,能够有效提高相关应用的实时性和可靠性,并采用面向接口的软件设计思想,给出了易于维护的软件设计[2]。   2监测方法   2.1定时轮询   定时轮询方法是按照一定时间间隔扫描整个被监视目录及其子目录中的文件,记录每个文件的属性(例如:文件最后修改时间、HASH值、CRC校验码等),比较前后两次扫描获得的信息,筛选出变化的资料,是一种可靠的方法。   但是,这种方法的缺点也很明显:首先,扫描一遍目录需要花费一段时间,如果目录中文件或子目录数量过多、目录层次过深,扫描花费的时间可能会更长,对于实时性要求高的应用来说,是不允许的;其次,频繁的文件扫描需要对文件进行操作,如果这时恰好也有其它程序对该文件进行操作,就会产生资源占用冲突;第三,由于文件越大,计算其HASH或者CRC值的时间就越长,也会影响信息获取的实时性。   2.2实时通知   Windows系统是一个消息(message)驱动的操作系统,即系统维护一个或多个消息队列,所有产生的消息都会被放入到消息队列中。系统根据消息的接收句柄而将该消息发送给拥有该句柄程序的消息循环。   实时通知是利用Windows操作系统内核提供的文件系统监视(File System Watcher)消息机制。应用程序通过建立一个被监视文件或者目录的句柄,将其注册到操作系统文监视消息通知中,就可以收到来自操作系统的文件或者目录的变更通知。由于消息是由Windows操作系统内核发出的,可以近似认为是与文件系统的更新是同步的,也就可以说,采用这种模式获得的文件更新事件,是在文件或目录发生改变的瞬间获得的,可以认为是实时的。   在具体实现方面,Windows操作系统对目录和文件的监控提供了两个消息驱动的API函数[5]:FindFirstChangeNotification和ReadDirectoryChangesW。调用它们就可以获取Windows为文件系统记录的消息队列。在.NET Framework 2.0以上的版本中,提供了FileSystemWatcher类侦听文件系统更改通知,在目录或文件发生更改时引发事件,是对上述API进行的封装,简化了文件监控方法的实现。   尽管实时通知已经很好地保证了Windows操作系统中文件监测的实时性,利用FileSystemWatcher类实现也较为简单,但是,实际应用中却有如下问题:   1)一次文件变化,可能引发多个消息,从而造成多次重复操作。例如:在一次资料内容变化时,除了内容变化之外,还有文件其他属性(例如:文件最后修改日期、文件大小)也变化了;   2)文件系统监视通过向Windows系统注册来接收来自系统的文件或者目录的变更消息,一旦发生操作失误,注册就会断开,

文档评论(0)

fa159yd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档