【问题标题】:Data layer pushes data to BL layer is it right? and how its done?数据层将数据推送到BL层对吗?它是如何完成的?
【发布时间】:2011-07-13 18:17:00
【问题描述】:

我正在构建一个窗口服务,用于监视文件夹并传输文件(带有附件的数据),例如 dropBox。
我想用 N 层设计来构建它。
* 可以设计DATA层将数据推送到BLL吗?
* 数据层是否可以与 filesystemWatcher 有一些逻辑来监视文件夹获取创建的文件并将其传递给 BL,BLL 不是调用数据层而不是相反吗?

【问题讨论】:

    标签: c# architecture n-tier-architecture filesystemwatcher


    【解决方案1】:

    通常,数据访问/存储层抽象了对底层数据源的访问。它应该尽可能薄,最好仅限于处理与数据持久性相关的任何事情。根据您的描述,听起来您没有任何这些。

    相反,我会构建一系列服务类(不要与 Windows 服务混淆),它们负责处理与您尝试执行的文件系统监控相关的不同类型的业务逻辑。您可以拥有一个监视文件夹的服务和另一个负责传输文件的服务。然后,您可以在那些负责协调不同操作的服务类之上构建一个层。

    这有意义吗?

    【讨论】:

    • 非常好,但我还不太确定执行情况。你有代码的例子吗?那些服务是如何建立的?生活节目?某种不同的线程?
    【解决方案2】:

    DAL 可以保存您的应用程序状态。它解决了内存不可靠等技术问题。

    文件系统是外部系统,你不能假设它属于并且只属于你的应用程序。你不能拥抱它的状态,说它完全属于你。

    这就是为什么,你与它交流,并询问任何你需要的东西。您可以要求它在发生有趣的事情时通知您 (FileSystemWatcher)。然后你就可以采取相应的行动(传输文件)。

    因此,监控文件绝对不是 DAL 的责任。它可能是一些监视文件系统的守护进程,然后将工作传递给“BL”。

    【讨论】:

    • 首先回答得很好,但是请解释一下传递给BL的概念,BL不需要知道DATA层吗?
    • 当然 BL 引用 DAL,而不是相反。我在帖子中没有说相反的话。
    • 那么,通过创建一个带有事件的静态对象是要走的路吗?
    • 您将拥有FileMonitor 类,它将包含fsw 的所有必要事件处理程序,并在启动时注册它们。这些处理程序将启动所有进一步的活动。
    猜你喜欢
    • 2014-01-27
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    相关资源
    最近更新 更多