科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件.NET文件处理系统体系结构(第二部分)

.NET文件处理系统体系结构(第二部分)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文为我们详细介绍如何利用.NET框架技术设计一个高度灵活可升级的文件处理系统,并向大家展示文件侦听组件是如何实现的。

作者:builder.com.cn 2007年6月20日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

侦听器组件的实现

在决定如何实现侦听器组件之前,需要问这样几个问题:

  • 文件将取自那些地方?FTP?HTTP?Web服务?映射驱动器?
  • 系统的速度要求是多少?文件在被导入之前可以等待几分钟吗?或者文件需要立即取出吗?
  • 系统希望什么类型的容量?

回答了上面的问题就会使你明白需要创建一个什么类型的侦听组件。记住,你可以在同样的导入系统中加入几个不同的侦听器。如果你发现你所构建的侦听器完成多个任务(例如,侦听FTP和映射驱动器),那么你要问一下将一个单一侦听器分解成两个服务是否更有意义。功能分解有助于你的系统的扩展性。

如果你在为一个映射或本地驱动器开发侦听器,需要考虑的使用.NET框架提供的FileSystemWatcher组件。你可以使用该组将“监视”一个目录或一组目录而且无论何时如果在这些目录中创建了一个新文件就会触发一个事件,然后,你可以捕获该事件来处理文件。这种功能要比简单的循环遍历一组目录来查找需要导入的新文件好的多。

文件处理消息

本体系结构在系统中不是传递整个文件,而是传递轻量级的消息。这些消息经过一系列的消息队列。这就降低了网络流量和文件处理服务器的负载。当这些消息在整个系统使用时,创建这些消息并通过创建文件处理消息发送到处理队列来激活文件处理的是侦听组件的工作。

很显然,文件处理消息需要包含关于文件的某些信息,以便导入系统利用它们来进行处理。下面的文件属性列表包含在处理消息中可能会有用:

  • 文件名—简单的文件名称
  • 文件大小—文件的容量大小
  • 原始目录—文件被探测到的目录
  • 原始类型—探测到的文件的位置类型(FTP,HTTP,本地驱动器等等)
  • 文件扩展名—可以从文件名中提取

处理文件需要的其它信息

下面是一些你应该考虑包含到文件处理消息中的其它属性:

  • 消息ID(GUID)——标识消息
  • 父ID (GUID)——标识该消息的双亲,如果有的话。它用于从其它文件解压之后所得的文件。
  • 孩子(数组)——一个文件处理消息对象数组代表了从本文件处理消息所代表的文件中提取出来的所有文件。
  • 行为(数组)——文件发生的所有行为的数组

在文件处理全部完成之前,文件处理消息将在整个系统的不同组件之间传递,记住这一点十分重要。牢记这一点我们需要定义文件处理消息中的“行为”属性,这是一个“行为”数组对象。

一个行为对象的属性:

  • 时间戳(日期时间类型)——行为创建的时间
  • 服务器名称(字符串型)——执行该行为的服务器
  • 命令行(字符串型)——执行该行为的程序
  • 行为(字符串型)——执行的行为

将一个行为添加到文件处理消息中以表明要对文件做些什么,这是每个特定任务进程的工作。当文件被完全处理完后,或发生错误时,文件消息应该被送到日志队列,文件在此被插入到数据库。这些数据将有助于决定一个文件发生了什么。

下一步,消息路由处理

在文件消息被创建并被送至处理队列之后,我们的消息路由将会获得该消息并决定向何处传递它。在第三部分,我们将讨论这个过程是如何工作的,以及在设计时需要考虑的问题。

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章