C# 从WCF服务运行控制台应用程序-在何处托管?

C# 从WCF服务运行控制台应用程序-在何处托管?,c#,.net,wcf,iis-7.5,quartz.net,C#,.net,Wcf,Iis 7.5,Quartz.net,目前正在为应用服务器开发.NET解决方案。我使用的是运行在WindowsServer2008R2和IIS7.5上的.NET4.0 我的要求是: 应用程序服务器可以按计划同时运行多个控制台应用程序-Quartz.net看起来是解决此问题的一个非常好的解决方案-到目前为止,它对我来说运行良好 应用服务器还将承载一个web应用程序,该应用程序将报告作业(作业运行的时间、所做的工作、所花的时间等) 我希望能够重新启动运行我的作业的“服务”,并从web界面触发临时作业 运行我的作业的服务需要一直运行 一

目前正在为应用服务器开发.NET解决方案。我使用的是运行在WindowsServer2008R2和IIS7.5上的.NET4.0

我的要求是:

  • 应用程序服务器可以按计划同时运行多个控制台应用程序-Quartz.net看起来是解决此问题的一个非常好的解决方案-到目前为止,它对我来说运行良好

  • 应用服务器还将承载一个web应用程序,该应用程序将报告作业(作业运行的时间、所做的工作、所花的时间等)

  • 我希望能够重新启动运行我的作业的“服务”,并从web界面触发临时作业

  • 运行我的作业的服务需要一直运行

  • 一旦这是活的,我将无法直接访问计算机重新启动Windows服务,但我可以潜在地设置IIS,以便能够为我这样做

WCF服务在我看来很有前途,但我不确定在哪里托管它。我当前的项目使用WCF服务来运行使用Quartz.net插件的控制台应用程序。运行内容和运行时间的配置存储在oracle数据库中,我的WCF服务直接连接到数据库以检索此信息(不确定这是否是WCF的预期用途)

如果我在IIS/WAS中托管WCF服务,那么从我所读到的内容来看,运行控制台应用程序可能是一个安全问题。我至少可以使用appFabric保持WCF服务始终运行。或者,我可以将其托管在Windows服务中,并允许我的web应用程序使用WCF服务来报告作业。我担心使用Windows服务,因为我无法直接维护这台机器,如果它坏了,我就有麻烦了。我真的希望能够从web应用程序进行维护。windows服务也觉得有点不必要,因为它可以从IIS托管

所以我的问题是——WCF服务是解决这个问题的正确方法还是有人能想出更好的方法

如果WCF服务是一种很好的方法-如果我不能直接访问机器本身,我应该在哪里托管它,以便通过web界面执行维护


WCF服务应该是启动和安排作业的服务吗?

我认为您可能对其进行了过度设计

问题是:你有一个网站需要临时启动工作。其他作业将按固定计划运行。该网站将报告所有/任何这些工作

对于运行计划作业,使用Quartz的Windows服务确实是固定计划部分的理想解决方案。但是,要报告这些工作,服务部门必须收集数据并提供。可以将服务设置为在出现故障时重新启动,因此您可以保证它将始终运行(如果它出现故障,则在重新启动时会有一到两分钟的时间除外,为什么要这样做?)。但是,任何历史记录都将丢失,除非服务将其存储在某个位置,并且在重新启动后可以检索它

网站获取历史记录的更简单的解决方案是,服务将其数据写入数据库,这样就不用担心重新启动:所有历史记录都已保存,网站可以随时读取数据

类似地,如果网站直接与服务对话(作为WCF服务或其他方式)那么,如果服务当前未运行会发生什么情况?在重新启动完成之前,请求会失败。这会让用户感到沮丧。或者,网站会将请求放入数据库中。服务会监视数据库中的请求,并在看到新请求时适当地启动作业。如果在服务ice没有运行,当它重新启动时,它将在DB中看到请求并执行它们

因此,我认为使用WCF服务是过分的,并且实际上引入了一些问题:历史的持久性,以及如何处理服务关闭时发出的请求。如果按照我描述的方式进行,这些问题不会出现


干杯-

谢谢你的回复,我想你是对的。不过我有点失望,因为我真的很期待设计出一款真正酷的东西……现在它功能齐全而且平淡无奇