从WebApi调用STA COM对象

时间:2016-11-18 17:55:39

标签: c# asp.net-web-api com sta mta

从远程应用程序类型库安全的C#运行时可调用包装器(从线程模型和公寓的角度来看)是否可以从MTA线程上下文(.Net WebApi请求)调用?

我应该将服务器STA应用程序更改为MTA还是RCW将在幕后处理这些机制?

1 个答案:

答案 0 :(得分:1)

RCW是COM代理的.NET代理。在您的.NET应用程序中使用哪个公寓并不重要,RCW将为您处理编组。

由于物体是遥远的,你不必担心如果公寓是兼容的,那么通信就会越过流程。如果您正在使用本地语言和环境(例如C ++),则您只需担心不在公寓之间共享COM代理,或者换句话说,在每个公寓中正确编组代理引用。

如果对象正在进行中,您将获得共享同一套房的性能,但在进程,封送和线程调度延迟之间将是最大的开销。

但是,您应该考虑其他应用程序使用的公寓。使用STA的应用程序将是单线程的,因此这将成为ASP.NET应用程序的瓶颈。如果它使用MTA,可能不是,如果它没有同步所有呼叫或者关键部分很快。

对于申请,您通常无法控制二手公寓。你怎么改变它的公寓?这是COM +组件吗?这是你的代码吗?它准备好了公寓开关吗?