我正在设计一个新的软件解决方案,其中包括在IIS中托管的.NET Web应用程序,用户可以从中触发各种功能(必须是.NET代码)以异步执行后台操作。我正在寻找适当的技术和架构来实现这一目标。需要支持的一些重要特性包括:
当后台功能完成时,Web应用程序需要被通知,以便通过websockets通知浏览器上的用户。
如果执行功能的进程崩溃,在重新启动该进程时,它必须能够检测到代码未完成并重新启动该代码的执行。
必须能够安排后台功能在未来某个时间点开始。同样,如果托管进程崩溃,在重新启动时,它必须重新了解计划任务,以便在适当的时间成功开始执行功能。
如果通过在IIS实例内启动新线程来实现后台功能,则易于实现#1。然而,必须编写特殊代码来支持#2和#3,并且许多人认为,在Web应用程序中托管需要能够从崩溃中恢复或在将来进行调度的后台功能是不良实践。
另一个选项是在Windows服务中托管后台进程。如果这样做,有哪些方法可以解决#1、#2和#3?这仍然需要自定义代码-因此是否已经有软件可以处理这些要求?