C# 如何保持进程在远程windows服务器上运行

C# 如何保持进程在远程windows服务器上运行,c#,asp.net,multithreading,process,C#,Asp.net,Multithreading,Process,我需要实现一个在远程windows服务器上全天候运行的后台进程。我的开发环境是C#/ASP.NET3.5。该过程的目的是: 在适当的时间向员工和客户发送提醒电子邮件(比如安排工作前一天的下午5:00) 当员工应该外出工作时,查询并保存他们的GPS坐标,以便我以后可以验证他们的位置是否在他们应该在的位置 如果进程失败(可能会失败,尤其是在添加更新时),我需要立即重新启动它(或在几分钟内),因为如果此进程未能发送通知、记录GPS坐标或其打算执行的任何其他任务,我将遇到非常严重的问题。您需要Win

我需要实现一个在远程windows服务器上全天候运行的后台进程。我的开发环境是C#/ASP.NET3.5。该过程的目的是:

  • 在适当的时间向员工和客户发送提醒电子邮件(比如安排工作前一天的下午5:00)
  • 当员工应该外出工作时,查询并保存他们的GPS坐标,以便我以后可以验证他们的位置是否在他们应该在的位置

如果进程失败(可能会失败,尤其是在添加更新时),我需要立即重新启动它(或在几分钟内),因为如果此进程未能发送通知、记录GPS坐标或其打算执行的任何其他任务,我将遇到非常严重的问题。

您需要Windows服务。您可以在windows服务中执行非可视的迭代操作。

作为一项服务,您可能希望在群集上运行,并让群集管理软件知道您的服务。

另一种选择是创建一个正常的应用程序并按计划运行。您的应用程序在每天的特定时间运行以执行其操作,具体取决于您需要记录GPS坐标和发送报告的频率。如果您的服务不需要持续运行,这通常是推荐的方法,因为服务应限于始终运行的应用程序。

您可以创建Windows服务(Windows上的服务器编程)或使用调度程序定期执行任务

根据对高可用性的要求,程序可以安装在故障转移群集上,在该群集上,如果第一个(活动节点)死亡,将启动其他服务器(被动节点)并静默等待作为热备份。这是一个广泛的话题。从维基百科开始

  • 将进程实现为Windows服务。 下面是一个简单的例子 将Windows服务编码为此 Net见

  • 要控制发生的情况 服务失败,请通过配置此 服务上的“恢复”选项卡 在services.msc。(见下图)

  • 对于高度关键的操作,您 可能会考虑设置一个服务器集群来缓解单个 服务器故障(请参阅)



  • (来源:)

    根据我的经验,如果您需要全天候运行某项服务,则需要(一个或多个)看门狗进程来验证您的服务是否正常运行。仅仅依靠正常的服务框架不能保证程序正常工作——即使看起来它正在运行。watchdog程序(也是一项服务)可以自动查询服务,例如发布消息、检查响应时间、查询统计信息等-当它检测到问题时,可以重新启动服务(或执行其他一些故障恢复)


    拥有看门狗程序而不是仅仅依靠用户查询来检测错误的原因是它可以自动完成。这是首选方法,因为它允许主动检测。

    您能否解释如何使服务自动重新启动?