COM 对象池和 .NET Web 服务
我有一个 COM 对象,需要从 .NET Web 服务访问它。
我知道整个 STA/MTA 的事情 - 所以我的 COM 对象将被转换为 MTA 并且没有全局状态(同时本身不是多线程的)。
如果我将其设置为 COM+ 服务器并指定对象池,这是否意味着对于每个 Web 服务线程它将使用 COM 对象的不同实例? 而且不用排队?
谢谢
I have a COM object which I need to access from my .NET Web Service.
I know of the whole STA/MTA thing - so my COM object would be converted to be MTA and have no global state (while not being multi-threaded itself).
If I set this up as a COM+ server, and specify an object pool, does this mean that for each web service thread it will use a different instance of the COM object? And not queue?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这取决于几件事。
如果您对池中的对象数量设置上限,并且在 Web 服务客户端中保持对象引用处于活动状态,并且不使用 JIT 或不在方法调用中设置 Done 标志,那么它们将一旦达到池限制就排队。
如果确实使用 JIT 并通过调用 SetComplete 或使用方法上的 AutoComplete 属性来设置 Done 标志,则当方法返回时,COM+ 组件将被停用并放回池中。 除非并发执行的方法数量达到最大池限制,否则新方法调用永远不需要等待。
It depends on several things.
If you put an upper limit on the number of objects in the pool, and you keep the object reference alive in the web service client, and you don't use JIT or don't set the Done flag in your method call, they will queue once they hit the pool limit.
If you do use JIT and set the Done flag by calling SetComplete or using the AutoComplete attribute on the method, the COM+ component will be deactivated and put back in the pool when the method returns. Unless the number of concurrently executing methods reaches the max pool limit, new method calls will never need to wait.