gpt4 book ai didi

c# - 使用 Windows 服务进行多任务处理

转载 作者:可可西里 更新时间:2023-11-01 09:27:32 25 4
gpt4 key购买 nike

我需要从一个 Windows 服务并行运行同一控制台应用程序的 6 到 8 个实例,任何实例中的异常都不应导致主服务停止。每个实例都将使用具有唯一 AD 帐户的 rest web 服务,实例将需要单独的配置信息来初始化自身。 Windows 服务将为所有用户运行(即使未登录),也可以使用一个服务帐户运行。我的问题是在上述情况下要考虑的因素是什么

  1. 我应该使用多线程还是启动多进程
  2. 是否需要使用应用程序域隔离每个进程?
  3. 我是否需要在启动每个实例之前分配 GUID?
  4. 我应该遵循的最佳做法是什么?
  5. 如何保持对实例的最佳控制,例如,如果一个实例未完成或挂起,其他实例应继续服务?

最佳答案

  1. Should i use multi threading or launch multi process

如果你想要这个并发,如果你需要等待每个完成,这是你唯一的选择,是的,它很好(一开始)

  1. Will i be require to isolate each process using application domain?

不,它们是一个单独的进程,除非它们选择使用共享资源,否则它们已经被隔离。

  1. Do i need to assign GUID before launching each instance?

我不知道,您为什么需要 GUID?你告诉我们

  1. What should be best practice i should follow?

最佳做法是不要多次运行控制台应用程序。我不会将功能放在代码中,并掌握它的功能和方式。

  1. How can keep best control on instances for example if one instance did not completed or hung still other should continue to serve?

这完全是您的实现细节。如果这些进程挂起,那么您可能需要杀死它们。至于如何控制呢? TPL、任务、线程、CancellationTokens、定时器,这取决于你..

更新

Did you vote to multiprocess over multithread? I wanted to understand what is the advantage or disadvantage using PROC and launching multiple exe over using parallel threading . Which one is better. Just an update instances will not hit any common file system (folder). and How App Domain will make any difference?

两者各有优势。

独立进程完全独立于它们共享的操作系统资源。类似于单独的应用程序域,它与您可以创建的 .net 结构尽可能地隔离。如果您需要完全隔离,则可能需要考虑单独的流程。

单独进程的缺点是您无法轻松地投入和分配资源。

因为,在一个 appDomain 和单个进程下,您可以利用 TPL 并更好地分配线程、CPU 和资源。也就是说,你对正在发生的事情有更精细的控制,你没有低效线程饥饿和饱和的风险,它更容易调试,更容易管理和维护,更容易记录,更容易启动停止和取消,更容错。单个流程还有更多好处,不过我想您已经明白了。

关于c# - 使用 Windows 服务进行多任务处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52939881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com