Что такое деактивация экземпляра в WCF? - PullRequest
3 голосов
/ 30 августа 2010

Я недавно встречал термин Instance Deactivation.

а) Что это?

б) Зачем нам это нужно?

в) В каком контексте это будет полезно?

Я ищу простой ответ, который можно легко понять и, если возможно, с псевдокодом.

Спасибо

Ответы [ 2 ]

3 голосов
/ 30 августа 2010

Когда вызывается метод WCF, он передается службе экземпляр .

Деактивация экземпляра просто относится к моменту, когда система WCF удаляет этот экземпляр.

В службе для каждого вызова деактивация экземпляра будет происходить после каждого вызова метода.

В службе для каждого сеанса деактивация экземпляра будет происходить, когда клиент вызывает Close на прокси-сервере или когда сеанс транспортаистекло время ожидания неактивности.

В службе Singleton деактивация экземпляра будет происходить при закрытии узла службы.

Можно также настроить отдельные методы службы для запуска деактивации экземпляра:.

[OperationBehavior(ReleaseInstanceMode = ReleaseInstanceMode.AfterCall)]
 public void MyMethodWhichTriggersAnAutomaticRelease()
 {
     // ...
 }

Кроме того, вы можете вручную запускать выпуск экземпляра службы:

public void MyMethodWhichTriggersAManualRelease()
{
     OperationContext.Current.InstanceContext.ReleaseServiceInstance();
}

Юваль Лоуи имеет это, чтобы сказать, нужно ли вручную отменять деактивацию стандартного экземплярамеханизмы:

Деактивация экземпляра - это метод оптимизации, как и все методы оптимизацииes, вы должны избегать этого в общем случае.Подумайте об использовании деактивации экземпляра только после того, как не сможете достичь целей по производительности и масштабируемости, и если тщательное изучение и профилирование не вызывает сомнений, что использование деактивации экземпляра улучшит ситуацию.

1 голос
/ 30 августа 2010

По сути, я имею в виду, что экземпляр класса, для которого вызывается операция службы, не разрушен. Если у вас есть активация по вызову, то новый экземпляр класса обслуживания будет создаваться каждый раз, когда вы вызываете операцию в службе. После завершения метода этот экземпляр класса будет удален.

Если вы хотите повысить производительность, скажем, за счет масштабируемости, вы не должны деактивировать экземпляр и, следовательно, выбрать другую схему активации экземпляра.

Эта статья MSDN: Откройте для себя мощные методы управления экземплярами для разработки приложений WCF вместе со ссылкой в ​​ответе @SteveCav дают хорошие ссылки.

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