【问题标题】:Can an IIS application pool be restricted to 1 working process and 1 thread?IIS 应用程序池可以限制为 1 个工作进程和 1 个线程吗?
【发布时间】:2014-09-10 11:41:51
【问题描述】:

我必须看看我是否可以解决第三方组件上已知的线程安全问题。计划是让 ASP.Net 应用程序通过 WCF 服务与第三方组件对话,这是基于我能够将 WCF 服务分配给它自己的应用程序池的假设,将池限制为一个工作进程和工作进程到一个线程。对服务的请求将不得不等待轮到他们,但这没关系,因为我们希望它们需要很少的时间并且也很少见。 问题是,我找不到任何建议如何实现这部分的内容:“将工作进程限制为一个线程”。 我找到了一些有用的页面,但没有解决方案:

  • 在IISforums 上,讨论似乎表明我可以在 IIS 7+ 中实现这一点,但没有提及 IIS6。

  • 在MSDN Blogs 和链接的 MSDN 书籍章节(不能放链接,因为我是新来的!)讨论主要是关于你可以通过 machine.config 文件设置什么,如果我'我理解正确,将适用于所有 AppPools/Worker 进程,这不是我想要做的,我想控制一个应用程序可以做什么,而不影响其他应用程序。

问题:

  • 是否有可能实现我想要做的事情?(将 WCF 服务分配给它自己的应用程序池,将池限制为一个工作进程,将工作进程限制为一个线程”通过 IIS 6 配置)

  • 如果不能,是否可以通过某种方式以编程方式实现?例如,在我的 WCF 服务实现中使用锁或其他与线程相关的技巧。

【问题讨论】:

    标签: asp.net multithreading iis-6


    【解决方案1】:

    这对我来说没有多大意义.. 根据定义,Web 服务器必须是多线程的,因为它必须同时处理不同的收入消息,如果只有一个线程使用一次,任何新请求都会失败.

    如何将组件包装在一个带有 SynhonizationAttribute 的类中,这样只有一个线程可以访问该组件?即使这会使您的解决方案的可扩展性降低,但至少它可以工作

    http://msdn.microsoft.com/en-us/library/system.runtime.remoting.contexts.synchronizationattribute(v=vs.110).aspx

    【讨论】:

    • 对我来说也没有多大意义,但是嘿,这不是一个理想的世界。为什么是 SynchronizationAttribute(我猜是静态成员)而不是锁?到目前为止,我从未使用过锁,并且在您回复之前从未听说过 SynchronizationAttribute...
    • @SergioG 当世界不理想是因为它缺乏良好的架构设计 ;-) 也就是说,SynchonizationAttribute 就像锁定类型一样工作。 albahari.com/threading/part2.aspx
    猜你喜欢
    • 2023-02-04
    • 1970-01-01
    • 2013-11-17
    • 2021-04-22
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多