2017-08-09 24 views
0

我正在研究项目,我们已决定将我们的后台任务(网络,CPU和IO密集型)分成三个Windows服务。Windows服务运行自己的进程与共享进程之间的差异

现在的问题是,我们是应该将所有三种服务都托管到一个进程中还是使用自己的进程创建三个独立的服务。

Windows服务项目模板允许创建多个服务,安装时它们将在服务控制管理器(SCM)中创建单独的条目并且可以独立控制。这里的好处是更好的代码管理和代码重用。

但是,如果有任何性能上的缺陷,这是我们首先有多项服务的主要原因,我宁愿放弃这项优势。

请指教。

+0

您希望解决哪些性能问题(3个附加进程vs 1个附加进程vs无论您的现有设置是什么)将会修复?增加更多IPC /线程来争夺相同数量的CPU能力往往会降低性能,而不是提升性能。 –

+0

服务如何与对方进行沟通?那么有没有可能创建像网络或IO这样的单一服务的多个实例? –

+0

@Damien_The_Unbeliever,是真的,但不适用于这种情况下,在从网络下载文件时使用了多少CPU?它在那段时间当然可以处理CPU密集型任务。也就是说,这里的问题是理解共享单个进程p.exe vs svc1,svc2和svc3与自己进程svc1 - > p1.exe,svc2 - > p2.exe,svc3 - > p3之间的区别。可执行程序。无论在哪种情况下,我们都决定要有三项服务。 –

回答

0

我的建议是去使用topshelf或其他技术创建的Seperarte窗口服务,因此它们是独立paltform的

可扩展性伊斯利可扩展的按照需求,如果一个服务被越来越那么其他的,那可以通过运行同一个服务的多个实例来扩展一个服务。

并行处理由于服务是独立的,它们可以平行工作,因此性能得到改善。