IIS应用程序池是否可以限制为1个工作进程和1个线程?

问题描述:

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

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

  • 关于MSDN Blogs和链接的MSDN书籍章节(因为我是新手,所以不能放置链接!)讨论主要是关于通过machine.config文件设置的内容,如果我理解它正确地适用于所有的AppPools/Worker进程,而不是我想要做的,我想控制一个单一的应用程序可以做的事情,而不改变其他应用程序。

问题:

  • 是否有可能实现我想要做什么?(指定WCF服务,以它自己的应用程序池,通过IIS限制池中一个工作流程和工作流程,以一根线” 6种配置)

  • 如果没有,这个程序以某种方式?实现对于例如,用我的WCF服务实现内锁或其它线程相关的技巧。

这没有多大意义的,我..一个Web服务器必须由定义是多线程的,因为它必须处理不同收入消息,如果只有一个线程在使用中,则任何新的请求都将失败。

如何将组件包装到具有SynchonizationAttribute的类中,只有一个线程可以访问该组件?即使这会让你的解决方案可扩展的少,至少它可能工作

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

+0

没有多大意义,我不是,但是,嘿,这不是一个理想的世界。为什么SynchonizationAttribute(有一个静态成员,我猜),而不是一个锁?我从来没有使用过锁,在回复之前从未听说过SynchonizationAttribute ... – SergioG 2014-09-10 12:29:42

+0

@SergioG当世界不理想是因为它缺乏良好的架构设计;-)也就是说,SynchonizationAttribute的工作方式类似于类型上的锁。 http://www.albahari.com/threading/part2.aspx – Oscar 2014-09-10 13:38:35