C# 使用windows服务进行多任务处理
我需要从一个windows服务并行运行同一控制台应用程序的6到8个实例,任何实例中的异常都不会导致主服务停止。 每个实例将使用具有唯一AD帐户的rest web服务,实例将需要单独的配置信息来初始化自身。Windows服务将为所有用户运行(即使未登录),或者可以使用一个服务帐户运行。 我的问题是在上述场景中需要考虑的因素是什么C# 使用windows服务进行多任务处理,c#,windows,multithreading,service,multitasking,C#,Windows,Multithreading,Service,Multitasking,我需要从一个windows服务并行运行同一控制台应用程序的6到8个实例,任何实例中的异常都不会导致主服务停止。 每个实例将使用具有唯一AD帐户的rest web服务,实例将需要单独的配置信息来初始化自身。Windows服务将为所有用户运行(即使未登录),或者可以使用一个服务帐户运行。 我的问题是在上述场景中需要考虑的因素是什么 我应该使用多线程还是启动多进程 我是否需要使用应用程序域隔离每个进程 在启动每个实例之前是否需要分配GUID 我应该遵循的最佳实践是什么 如何保持对实例的最佳控制(例如,
其中,在一个appDomain和单个进程下,您可以利用TPL和更好地划分线程、CPU和资源。这就是说,您对正在发生的事情有了更精细的控制,不会有线程不足和饱和的风险,更易于调试,更易于管理和维护,更易于记录,更易于启动、停止和取消,并且更具容错性。单个进程还有很多好处,不过我想您已经了解了。您是希望根据请求动态启动子控制台并使其能够使用该服务,还是需要Windows服务来启动子控制台?如果前面提到过,我建议使用Windows服务托管WCF服务,然后创建一个WCF客户端控制台应用程序,该应用程序可以动态连接/断开与该服务的连接。WCF为会话提供了体系结构(如果端点使用网络管道/telnet/etc)。否则,请提供有关您/用户打算如何与所述应用程序交互的更多详细信息。是的,我需要动态创建实例。好的,我的建议是研究WCF以及如何在Windows服务中托管WCF服务。在网上浏览一些简单的教程,特别是MSDN上的教程,你会在不知不觉中开始运行。一旦您拥有了该服务,Visual Studio就可以为您自动生成客户端代理的所有细节。感谢您的响应,这很有意义,我可以将应用程序转换为使用DLL库而不是控制台(exe)应用程序。但我有进一步的疑问,你们投票赞成多线程多进程吗?我想了解与使用并行线程相比,使用PROC和启动多个exe的优势和劣势。哪一个更好。仅更新实例不会命中任何公共文件系统(文件夹)。应用程序域将如何发挥作用?