COM 对象池和 .NET Web 服务

发布于 2024-07-20 12:21:36 字数 205 浏览 13 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

三生一梦 2024-07-27 12:21:36

这取决于几件事。

如果您对池中的对象数量设置上限,并且在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文