【发布时间】:2009-01-04 15:08:19
【问题描述】:
在过去的一次采访中,有人问我如何编写一个必须保持 100% 正常运行时间、响应速度非常快且可更新的关键任务 Windows 服务。该服务被描述为一个基于远程处理的应用程序,它接收请求、执行计算并发送回响应。
我的解决方案是拥有一个非常通用的服务,它只是充当网关。这项服务永远不会停止。它将请求排队并将它们转发到一个单独的应用程序域中的另一个服务,该应用程序域将实际处理请求。至少需要有两个这样的处理服务,这样一个可以被关闭以进行更新,而另一个可以响应传入的请求。服务之间的接口将包括握手以查看服务是否正在运行的能力。将存在一个非常小的超时,因此如果服务完全退出,它不会阻止请求。我还强调了这个解决方案可以很好地扩展这一点,因为您可以在不同的盒子上添加更多这些服务。
由于跨应用域甚至跨网络通信之间的延迟问题,面试官对这个想法并没有太疯狂。我说过,对于任务关键型应用程序,您应该建立一个坚如磐石的基础设施,因为仅靠软件无法解决问题。他还说,他们目前有一个使用 relfection 的系统。我曾考虑将程序集加载到应用程序域并查看目录以了解程序集更改,但这似乎太容易出错了。
有没有人构建任何具有类似要求的东西?您使用了哪些解决方案?什么不起作用?反射是一个可用的选项吗?
【问题讨论】:
标签: .net architecture