2009-07-20 97 views
1

我在WCF项目中工作,我们需要重用vb6中的一些遗留组件。使用C序列化COM互操作对象#

在服务中,我们需要为每个用户维护一个状态,因为我们需要存储一个COM Interop对象(每个用户),这个对象的构造成本很高。该项目将来可能会增长,因此我们可能需要使用基于StateServer/SqlServer的会话存储。

默认情况下,COM Interop对象是不可序列化的,关于如何继续的任何想法?

在此先感谢。

回答

2

这确实是一个有趣的问题。你不能序列化COM对象,所以你不得不将它们保持在服务的每个会话上,否则你不得不承担创建它们的成本。通常,我会主张一个纯粹的无状态服务器(因为它允许最好的可扩展性),但是如果COM对象是,特别是昂贵,这可能不现实。

要使用多个服务器进行管理,粘性负载平衡将成为唯一选项。这并不理想(当你停下服务器时会变得杂乱),但至少可以让你扩展。但是你可能需要一个体面的NLB才能达到这个目标(也许是一个昂贵的F5)。

我不知道在这个具体情况下或许最好的选择是放大吗?使用内核和内存(在x64上)填充服务器,然后破解......当然,如果COM控件只能在x86上工作,这可能无济于事。

+0

谢谢马克,我会调查粘性NLB! – maxcosworth 2009-07-20 10:10:15