CreateInstanceFromAndUnwrap Скорость и оптимизация - PullRequest
1 голос
/ 16 декабря 2010

Я работаю над проектом, в котором нам нужно обернуть некоторый унаследованный код, который содержит множество статических переменных C #, в службу WCF. Как вы можете себе представить, это кошмар для службы WCF, где запросы должны быть без состояния.

Без серьезной переписки лучшее решение, которое я могу придумать, состоит в том, чтобы выполнить устаревший код в отдельном домене приложений, поэтому он является поточно-ориентированным, и для этого я использовал CreateInstanceFromAndUnwrap ().

Я получил работающий код, но проблема в том, что он довольно медленный, потому что теперь для каждого отдельного запроса WCF он должен перезагружать все 20+ DLL в AppDomain, прежде чем код даже начнет выполняться.

Мне просто интересно, кто-нибудь знает, как оптимизировать CreateInstanceFromAndUnwrap ()? Например, могу ли я в любом случае предварительно загрузить все сборки без загрузки класса, чтобы статические переменные будут сбрасываться каждый раз при поступлении запроса?

Ура, Оскар

1 Ответ

0 голосов
/ 16 декабря 2010

Если не знать, как вы можете сделать именно то, что вы просите, по крайней мере, я хочу поделиться своими мыслями по этому вопросу:

  • Можете ли вы перейти к состоянию сеанса? Это не очень хорошо масштабируется, но если бы вы могли загружать домен приложений для каждого сеанса, вы могли бы получить хорошую отзывчивость. Это зависит от того, сколько у вас одновременно работающих пользователей.
  • Можете ли вы иметь какой-то другой ящик, который служит пулом доменов приложений, тем самым отделяя стоимость создания домена приложений от обслуживания запроса?
  • Является ли детерминистическим, как все статики собираются вместе? Они могут быть лениво загружены? Может быть, с некоторым отражением или с динамическими методами вы можете стереть статическое состояние после запроса.
...