我们有"胖" Windows服务执行大量的操作,如数据库插入/更新/删除和调用一些宁静的Web服务来更新外部系统。该服务每3分钟执行一次,实际业务依赖于此服务。
有时服务进入非响应模式,我们正在尝试修复该部分。但这个问题不是关于这个问题的。
另一方面,我们正在考虑应用任何新技术或架构。 (严格基于微软)
此时此刻,我想知道有没有Windows服务的替代品?
答案 0 :(得分:1)
您可以编写可执行文件并使用Windows Scheduler。
答案 1 :(得分:0)
当您需要自治应用程序时,Windows服务是一个很好的工具。另一种方法是使用可在Windows启动时启动的常规应用程序。但是除了一些安全项之外,服务没有什么重大区别,对于运行应用程序,用户必须登录到机器。
您需要做的是 - 使您的服务应用程序独立于流程。换句话说,让您的服务成为调度员,但让终点处理实际任务。大多数人根本就没有正确地写他们的服务。例如,我看到很多服务必须在启动时进行一些DB调用等。启动应该很简单 - 初始化服务,在单独的线程上进行初始化调用。此外,您提到您有服务,每3分钟运行一次。为什么不通过配置添加端口可配置的端口侦听器。执行某些操作的应用程序中也是如此然后,应用程序可以向服务端口发送呼叫,此时您的服务将知道有工作要做,而不是经常检查。
有许多架构技术可以应用于您的Windows服务,以使其强大和响应。应用它们,您不必寻找替代品。
答案 2 :(得分:0)
有很多技术......问题是,你为什么要改变?这有什么理由不适合你吗?如果是这样,那是什么原因?
例如,您可以将您的应用程序编写为Web Service,并且只需要定期调用Web服务的计划任务。您还可以将服务“放入云端”并使用Azure Worker角色。但所有这些事情通常都有理由选择它们......目前尚不清楚您的要求是什么。
答案 3 :(得分:0)
这取决于您的服务有多胖,以及业务有多大。
您可以完全重新构建以将各种接触点推送到Web服务中,然后实现类似BizTalk的操作来协调调用这些不同的服务。
这显然需要大量投资,SQL服务器支持BizTalk,BizTalk应用服务器,管理新技术的人。