每个实例的AppDomain还是进程?

Pie*_*kel 7 .net c# tcp appdomain

我想知道是否应该为每个实例使用一个进程,或者我是否应该使用AppDomains 在单个进程中运行多个实例.

我有一个服务器应用程序遵循设计类似telnet.用户始终通过TCP连接,服务器保持工作站上显示的客户端会话的完整状态.

该软件需要支持最多至少500个并发连接,可能更多.典型的安装需要连续运行3到7个应用程序实例,尽管除了一个实例之外只有几个连接(它们用于测试,参考环境等).在内部,出于开发目的,每个环境最多有40个环境,最多20个并发连接.我的目标主机环境将是64位Windows.

我知道IIS使用的模型只有一个进程和多个进程AppDomain,但我也看到每个实例都有一个进程的优点.

我应该使用哪个以及为什么?

编辑:
不同的实例涉及同一应用程序的不同版本,这些版本不能一起运行AppDomain.此外,不同的实例不必彼此通信,仅用于管理目的的主服务.

Not*_*tMe 5

总结:

  1. 您有一个类似 telnet 的服务器应用程序。
  2. 您将在同一台机器上运行此应用程序的多个版本。
  3. 不同的实例不需要相互通信;只有一个共同的服务。

大概每个实例通过不同的端口进行通信

有了这些要求,我永远不会考虑构建与 IIS 相同的功能。相反,我会将它们作为完全独立的应用程序运行。

顺便说一句,您说 IIS 只有 1 个具有多个应用程序域的进程是错误的。IIS 可以为单个站点启动多个进程。这被称为网络花园。此外,IIS 为其拥有的每个应用程序池启动至少一个进程。您可以将这些视为在 IIS 服务器上执行的单独 w3wp.exe 进程。

通过通用流程运行所有内容的唯一好处是,如果宿主提供对所有内容都通用的有价值的东西。例如日志记录接口或故障处理。这将非常复杂,编写、设置和维护几乎没有任何好处。

最后,用户数量并不重要,因为这将受应用程序的资源使用情况的控制。这可能意味着网络、内存甚至磁盘,具体取决于您的应用程序执行的功能。