ASP.NET线程与Windows服务

时间:2017-12-15 18:08:03

标签: c# asp.net multithreading windows-services

我正在开发使用ASP.NET(C#)开发的业务应用程序。 SQL Server 2000.我想开发一种机制,每隔5分钟自动将一些数据从我的SQL Server数据库传输到sybase数据库。

根据我目前的知识,有两种方法可以实现这一目标。

  1. 使用计时器启动我的ASP.NET应用程序中的一个线程,该线程从SQL Server&写信给Sybase。

  2. 开发一个从SQL Server和&amp ;;读取数据的Windows服务。写信给Sybase。

  3. 所以我的问题是:

    1. 哪个选项最好?
    2. 什么是专业人士每个选项的缺点?
    3. 有没有其他方法可以进行此数据传输?

1 个答案:

答案 0 :(得分:1)

我会选择Windows服务。 ASP.NET对于这种任务来说不是一个好的解决方案 - 毕竟,即使它没有发送数据也是如此。除非您考虑Task API,并且异步编程ASP.NET Web应用程序来执行此操作,否则您将犯错误。您还不确定您的环境是否支持所有现代功能(例如Task API或SQL Server中具有所有功能和服务的作业),这就是为什么本机服务将是一个完美的方式。

private async Task saveData() {
    // Copy the data

    // Wait for 5 minutes "asynchronously"
    Task.Delay(5 * 60 * 1000); // 5 minutes
}

最后,只是迭代它,while(true)或许会为你做这件事。但是,在大多数情况下,你只会用自己的脚开火。

我建议使用Windows服务或任何

  • 管理
  • 基于计时器
  • 异步

...服务,每隔 n 分钟执行一项任务。

除此之外,我建议考虑SQL Server本身为您完成这项工作。以下是另一个演示如何执行此操作的答案:Execute stored procedure from a Trigger after a time delay;在SQL代理作业中创建作业。 https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job