从 MTA 线程上下文(.Net WebApi 请求)调用 C# 的围绕 STA 远程应用程序类型库的 Runtime Callable Wrapper 是否安全(从线程模型和公寓的角度来看)?
我应该将服务器 STA 应用程序更改为 MTA 还是 RCW 将在幕后处理这些机制?
从 MTA 线程上下文(.Net WebApi 请求)调用 C# 的围绕 STA 远程应用程序类型库的 Runtime Callable Wrapper 是否安全(从线程模型和公寓的角度来看)?
我应该将服务器 STA 应用程序更改为 MTA 还是 RCW 将在幕后处理这些机制?
RCW 是 COM 代理的 .NET 代理。无论您在 .NET 应用程序中使用哪个单元,RCW 都会为您处理封送处理。
而且由于对象是远程的,因此您不必担心公寓是否兼容,通信跨进程。如果您使用的是本地语言和环境,例如 C++,您只需要担心不要在公寓之间共享 COM 代理,或者换句话说,在每个公寓中正确编组代理引用。
如果对象在进程中,您将获得共享同一个单元的性能,但在进程之间,编组和线程调度延迟将是最大的开销。
但是,您应该考虑其他应用程序使用什么公寓。使用 STA 的应用程序将是单线程的,因此这将成为 ASP.NET 应用程序的瓶颈。如果它使用 MTA,可能不会,如果它不同步所有调用或临界区速度很快。
对于应用程序,您通常无法控制使用过的公寓。你会如何改变它的公寓?这是一个 COM+ 组件吗?这是你的代码吗?准备好换公寓了吗?