我需要构建一个“执行引擎”,它将监听来自各种系统的请求,并执行所请求的任务 我想在“执行引擎”中公开一个Web服务,每个系统都可以转到这个Web服务,要求完成一些操作。所有操作都将保存在磁盘中以处理故障(所有任务都是异步)
例如,add_email_to_block_list,我们的一个网站可以要求“执行引擎”在邮件系统中执行此任务。
“执行引擎”假设在一分钟内(将来)处理100多个请求。
我很可能必须使用C#来完成这类任务。 (也是JAVA的机会)。
由于
答案 0 :(得分:1)
您正在描述一个经典的Remote Procedure Call界面。通常,为RPC设计Web服务的主要考虑因素是可伸缩性。为了在阻止系统接收其他请求时不处理太多数据,通常最好将数据卸载到其他作业线程。但是,除了小型玩具系统之外,您不应该创建每个请求一个线程的系统,因为这可能是一个主要的系统资源。相反,您应该考虑使用某种Thread Pool来处理传入的任务。
这种系统遍布各处,实际上是Web服务的主要用途。请查看Web Services as RPC的任何说明以获取更多详细信息。
答案 1 :(得分:0)
最大限度地减少全局数据的使用,并保护对关键部分(或互斥锁,信号量等)的访问。对于文件等外部资源也是如此。然后在每个传入的请求中创建一个新线程(如果你的服务器是基于Unix的,在某些情况下,新进程可能会更好),你应该没问题。