Сериализация COM Interop Object с использованием C # - PullRequest
1 голос
/ 20 июля 2009

Я работаю в проекте WCF, и нам нужно повторно использовать некоторые устаревшие компоненты из vb6.

В сервисе нам нужно поддерживать состояние для каждого пользователя, так как нам нужно хранить один объект COM Interop (на пользователя), который стоит дорого построить. Проект может расти в будущем, поэтому, возможно, нам потребуется использовать хранение сеансов на основе StateServer / SqlServer.

По умолчанию объекты COM Interop не сериализуемы, есть идеи, как продолжить?

Заранее спасибо.

1 Ответ

2 голосов
/ 20 июля 2009

Это действительно забавная проблема. Вы не можете сериализовать COM-объекты, поэтому вы вынуждены либо оставлять их в сеансе в службе, либо вы должны понести затраты на их создание.

Обычно я бы рекомендовал чистый сервер без сохранения состояния (поскольку он обеспечивает наилучшую масштабируемость), но если COM-объект стоит , в частности , это может быть нереально.

Чтобы управлять этим с несколькими серверами, единственная опция - балансировка нагрузки. Это не идеально (это становится грязно, когда вы отключаете серверы), но, по крайней мере, позволяет вам масштабироваться. Но вам может понадобиться приличный NLB для достижения этого (возможно, дорогой F5).

Интересно, если в данном конкретном случае , возможно, лучший вариант - увеличить масштаб? Заполните сервер ядрами и оперативной памятью (на x64) и разоритесь ... конечно, если управление COM работает только на x86, это может не помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...