Книга: C# для профессионалов. Том II

Интерфейс ServicedComponent

Интерфейс ServicedComponent

Как можно было заметить, класс в примере выше наследует интерфейс ServicedComponent. Все классы .NET, которые используют пулы объектов, должны реализовывать этот интерфейс. ServicedComponent содержит три метода для переопределения.

1. Метод CanBePooled() используется клиентами для определения, что может быть создан пул объектов класса.

2. Метод Activate() вызывается службами COM+ на объекте в пуле перед тем, как этот объект передается новому клиенту.

3. Метод Deactivate(), напарник метода Activate(), вызывается службами COM+, когда объект освобождается клиентом, чтобы вернуть его в пул доступных объектов.

Следующий фрагмент кода показывает класс, сконфигурированный для пула объектов.

[ObjectPooling (Enabled=true, MinPoolSize=1, MaxPoolSize=100, CreationTimeout=30)]
public class CreditCard:ServicedComponent {
 // Этот метод будет вызываться службами COM+ для определения,
 // что объект находится в пуле.
 public override bool CanBePooled() {
  return true; // необходимо вернуть логическое "true"
 }
 // Этот метод должен вызываться службами COM+, когда объект
 // передается клиенту.
 public override void Activate() {
  // Код инициализации находится здесь.
 }
 // Этот метод будет вызываться службами COM+, когда
 // объект будет возвращаться в пул.
 public override void Deactivate() {
  // Код завершения находится здесь
 }
 // Этот метод будет вызываться клиентом.
 public void PlaceCharge(int OrderInfo, int UserInfo) {
  // код списания средств с кредитной карты находится здесь
 }
}

Как показывает пример, атрибут ObjectPooling и интерфейс ServicedComponent требуются для того, чтобы класс .NET реализовал пул объектов. Также можно заметить, что в отличие от атрибута Transaction атрибут ObjectPooling применяется непосредственно к "рабочей" сборке .NET, а не к классу прокси, созданному с атрибутом ComEmulate, который был рассмотрен ранее в этой главе.

Оглавление книги

Оглавление статьи/книги

Генерация: 0.193. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз