我对 COM 不太熟悉,希望有人能够帮助验证我下面的内容是否正确。
如果我有两个完全独立的请求(请求 1 和请求 2),那么这会创建我的 WebApplication 的两个独立实例。到目前为止还很无聊。
如果每个实例随后联系相同的 Web 服务,则可能还会实例化该 Web 服务的两个实例。
这就是有趣的地方。
这些 Web 服务创建一个 .NET 程序集,然后引用进程内(通过 regsvr32 注册)COM-dll(通过 Interop)。
我的图表正确吗?
此 COM-DLL 连接到数据库,执行查询,将数据返回到 Web 服务,然后 Web 服务将 JSON 数据返回到客户端。全部完成 AJAXy。
我的另一个问题是 - 这在性能方面可以吗?我不明白为什么它不应该扩展,并且能够将数据返回给用户
最佳答案
作为逻辑模式似乎没问题。但是,一如既往。魔鬼在于细节。
这一切都取决于 COM 组件的服务使用的实现,特别是 COM 组件对线程的处理。如果您的 COM 组件是线程安全的并标记为使用 MTA(多线程单元),那么您应该没问题。然而,许多 COM 对象被标记为 STA(因此使用单线程单元)
关于“这在性能方面可以吗?”,那么如果您的 COM 组件是一个 STA(如果它是在 VB 6.0 中创建的,则将是),您将必须进行一些线程整理(否则所有您的服务请求将排队,并且在负载下性能会变得更差。)
本文解释了问题和解决方案(针对 ASMX 服务)...
http://msdn.microsoft.com/en-us/magazine/cc163544.aspx
..以及解决方案(如果您使用的是 WCF 服务)...
http://blogs.catalystss.com/blogs/scott_seely/archive/2007/09/27/203.aspx
关于ASP.NET、IIS 和 COM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829601/