【问题标题】:Is 'console type' of application suitable for my solution? ( C# )“控制台类型”的应用程序是否适合我的解决方案? ( C# )
【发布时间】:2016-10-24 10:19:21
【问题描述】:

我刚开始作为开发学生实习。

我需要用 C# 编写一个程序,该程序将读取 CSV productfeed,然后对其进行解析、映射并将其插入或更新到 SQL Server 数据库中。

该程序将在 Windows VPS 上运行,并且必须每天执行,因为 CSV 也会每天更新。我必须自动化这个过程。

所以来回答我的问题:

1.我可以使用控制台应用程序吗? (因为我不需要任何 GUI)

2. 像这样带有用于插入/更新的嵌套循环的程序是否会崩溃或在数据库上过于繁重,因为 CSV 可以包含 +100k 记录?

非常感谢任何正确方向的指导

【问题讨论】:

  • 应用程序是否需要一直运行才能处理提要?如果是这样,控制台应用程序可能不是要走的路,您应该改为调查 Windows 服务应用程序。您还应该查看数据库事务的批量插入。
  • 不必每天只运行一次即可添加更新后的 CSV 提要中可能存在的新产品或更新价格或库存可能发生变化的任何现有产品。批量插入是否也可以作为现有记录的批量更新?
  • 否,但请在此处查看有关如何实现大量更新的建议。 stackoverflow.com/questions/27933584/… 关于你的应用程序,即使它每天只运行一次,如果它是一个控制台应用程序,那么有人必须每天启动它才能运行它。如果它是 Windows 服务,您可以让它在后台运行,并设置您希望它访问源的时间。
  • 我还应该说,如果你正在做一个 Windows 服务,你可以安排它在没有人使用系统的凌晨运行。在这种情况下,数据库插入/更新性能可能不会那么重要。

标签: c# sql-server visual-studio csv windows-server-2012


【解决方案1】:
  1. 是的。您确实可以开发控制台应用程序。使用 Windows 窗体或类似的东西(即带有一个窗体和一个带有代码的单个按钮的 C# 应用程序。)将是一个坏主意,因为您不需要 GUI,而且更难实现自动化。

    你有什么选择?

    • 控制台应用程序:易于开发。您可以使用 Windows 任务计划程序来安排它。
    • Windows 服务:开发起来有点困难。控制它是否正在运行要容易得多。
    • WCF 或 Restful Web 服务:如果未来需要发展,则更难开发,但更开放。由于可以在外部触发执行,因此更容易与其他服务器互连。
  2. ,可能不会,尽管使用错误的代码您可以设法在 SQL Server 中制造问题。

我的建议:如果您没有太多时间/技能,请使用控制台应用程序。如果可以,创建一个异步 RESTFUL Web 服务,实现 GET 以查看上次/当前执行的状态,使用 POST 触发新的执行并返回正确的 HTTP 响应代码。

【讨论】:

    【解决方案2】:

    1.我可以使用控制台应用程序吗? (因为我不需要任何 GUI) 是的,您可以控制台应用程序和任务计划每天运行此程序。 您也可以编写 Windows 服务 - 在这种情况下,您的程序将在后台运行。

    2。像这样带有用于插入/更新的嵌套循环的程序是否会崩溃或在数据库上过于繁重,因为 CSV 可以包含 +100k 记录?

    100K+ 行对 MS SQL 来说毫无意义。但是请确保您需要正确编写代码。我将解析它,然后在多线程中插入数据库。但这取决于您需要做什么。

    【讨论】:

      【解决方案3】:

      从技术上讲,您可以使用任何您想要的应用程序类型,但如果我要编写此应用程序,我会选择 Windows Service Application,因为您希望应用程序以自动方式重复运行。

      对于性能,我不认为为每条记录都访问数据库,这里的最佳实践可能是你应该寻找Bulk Insert.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-17
        • 2014-10-15
        • 1970-01-01
        相关资源
        最近更新 更多