我想知道是否应该为每个实例使用一个进程,或者是否应该使用AppDomains在单个进程中运行多个实例.
我有一个服务器应用程序遵循设计类似telnet.用户始终通过TCP连接,服务器保持工作站上显示的客户端会话的完整状态.
该软件需要支持最多至少500个并发连接,可能更多.典型的安装需要连续运行3到7个应用程序实例,尽管除了一个实例之外只有几个连接(它们用于测试,参考环境等).在内部,出于开发目的,每个环境最多有40个环境,最多20个并发连接.我的目标主机环境将是64位Windows.
我知道IIS使用的模型只有一个进程和多个AppDomain,但我也看到每个实例都有一个进程的优势.
我应该使用哪个以及为什么?
编辑:
不同的实例涉及同一应用程序的不同版本,这些版本无法一起在单个AppDomain中运行.此外,不同的实例不必彼此通信,仅用于管理目的的主服务.
解决方法
总结一下:
>你有一个像服务器应用程序的telnet.
>您将在同一台计算机上运行此应用程序的多个版本.
>不同的实例不需要相互通信;只有共同的服务.
据推测,每个实例都通过不同的端口进行通信
有了这些要求,我永远不会考虑构建与IIS相同的功能.而是我将它们作为完全独立的应用程序运行.
顺便说一下,你说错了,说明IIS只有一个进程有多个应用程序域. IIS可以为单个站点启动多个进程.这称为Web Garden.此外,IIS为其拥有的每个应用程序池至少启动一个进程.您可以将这些视为在IIS服务器上执行的单独的w3wp.exe进程.
通过一个共同的流程运行一切的唯一好处是,如果主机提供了一切对所有东西都有的价值.例如,日志记录界面或故障处理.编写,设置和维护对于收效甚微来说非常复杂.
最后,用户数量并不重要,因为它将受应用程序资源使用的控制.这可能意味着网络,内存甚至磁盘,具体取决于您的应用程序执行的功能.