【问题标题】:Daily XML Parsing in ASP.NET MVC ApplicationASP.NET MVC 应用程序中的日常 XML 解析
【发布时间】:2013-04-05 22:35:48
【问题描述】:

我有一个 ASP.NET MVC4 应用程序,它使用实体框架作为其域模型,域模型位于同一解决方案中自己的项目中。为了填充其数据库存储,Web 应用程序依赖于每天生成一次的 XML 文件。

我有几个问题。一个与代码放置和系统设计方面的最佳架构方法有关。

  1. 我的解析代码应该去哪里解析 XML 文档并将解析的数据存储到 EF 数据库中?我知道我几乎可以将它放在任何地方,但就最佳软件实践而言,它最好放在哪里?我目前的想法是在 Domain 项目中创建一个类(XMLParser)。
  2. 如何让我的 XML 解析器(我决定将它放在哪里)每天运行一次在特定时间?

谢谢。

【问题讨论】:

    标签: design-patterns asp.net-mvc-4 architecture entity-framework-4 xml-parsing


    【解决方案1】:
    1. 我认为域不是 XML 解析器的最佳位置。域,顾名思义,代表您的业务域的实体和术语。
      UserOrder 等类将进入其中。 XML 解析器属于您的业务领域。
      那么,解析器应该去哪里呢?让我们想想它的工作是什么——它从一些数据存储中读取数据并将其转换为领域类。
      在以这种方式表示问题之后,我认为解决方案是显而易见的——负责从数据存储(无论是数据库、文件还是 Web 服务)中检索数据的类属于数据访问层。

    2. 有几个解决方案。 Quartz.NET是.net平台的调度机制,具有很多高级调度能力。
      但是,如果您只想每天执行一次,windows' scheduled tasks 可能就足够了

    【讨论】:

    • 谢谢约翰尼。我没有完全解耦的数据访问层。那么这是否意味着我只需将解析代码放在我的一个 MVC 控制器上的 Action 中?另外,如果解析代码不是一个单独的应用程序,Window的定时任务可以在特定的Controller上每天运行一次特定的Action吗?
    • 第二个问题的答案是“否”,因此我对第一个问题的回答是创建一个用于 xml 解析的专用项目,并将可执行文件作为项目输出,以便它可以由调度程序运行
    • 我会那样做的。我将创建一个单独的可执行项目,专门用于解析和保存功能。谢谢约翰尼。 :)
    猜你喜欢
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2020-09-17
    • 2011-03-02
    • 1970-01-01
    • 2011-04-12
    相关资源
    最近更新 更多