2009-05-06 38 views
2

我对COM并不熟悉,并且希望能够帮助验证下面的内容是否正确。ASP.NET,IIS和COM

如果我有两个完全独立的请求(请求1 &请求2),那么这会创建两个单独的WebApplication实例。到目前为止很无聊。

如果每个实例然后联系SAME Web服务,那么大概两个Web服务实例也会被实例化。

这是它变得有趣的地方。

这些Web服务创建一个.NET程序集,然后引用进程中(通过regsvr32注册)COM-dll(通过Interop)。

我的图是否正确?

alt text

这COM-DLL连接到数据库,执行查询,将数据返回给web服务,然后在JSON将数据返回给客户端。全部完成了AJAXy。

我的另一个问题是 - 这是否表现明智吗?我不明白为什么它不应该缩放,并且能够将数据返回给用户

回答

4

看起来好像是一种逻辑模式。但是,一如既往。魔鬼在细节中。

这一切都取决于您的服务使用的COM组件,特别是COM组件处理线程的实现。如果您的COM组件是线程安全的并标记为使用MTA(多线程公寓),您应该可以。然而,许多COM对象被标记为STA(并且因此使用单线程公寓)

关于“这是好的性能方面?”,那么如果你的COM组件是STA(如果它是在VB 6.0中创建),你将不得不做一些线程解开(否则所有的服务请求将排队和性能会加重负载下。)

本文解释了这个问题和解决方案(for ASMX服务)...

http://msdn.microsoft.com/en-us/magazine/cc163544.aspx

..和解决方案,如果你使用WCF小号服务...

http://blogs.catalystss.com/blogs/scott_seely/archive/2007/09/27/203.aspx