Чтение онлайн

на главную

Жанры

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

Ватсон Карли

Шрифт:

3. Аргумент

MaxPoolSize
определяет максимальное число экземпляров объектов, которое должны поддерживать службы COM+ в пуле объектов класса.

4. Аргумент

CreationTimeOut
определяет период времени, в течение которого службы COM+ должны пытаться получить объект из пула, прежде чем вернуть отказ.

Далее следует пример атрибута

ObjectPooling
со всеми четырьмя аргументами, примененными к классу. Мы расширим этот фрагмент кода в конце данного раздела.

[ObjectPooling (Enabled=True, MinPoolSize=1, MaxPoolSize=100, CreationTimeout=30)]

public class CreditCard: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
, который был рассмотрен ранее в этой главе.

Использование активизации JIT со сборками .NET

Чтобы сконфигурировать класс .NET для активизации JIT, нужно просто изменить класс с помощью атрибута

JustInTimeActivation
, задав
булево значение true. В данном случае класс
CreditCard
из предыдущего примера модифицируется для активизации JIT.

[JustInTimeActivation(true)]

public class CreditCard: ServicedComponent {

 // Этот метод будет вызываться клиентом.

 public void PlaceCharge(OrderInfo objOrderInfo, UserInfo objUserInfo) {

// Код для снятия средств с кредитной карты находится здесь

 }

}

Заключение

Прежде чем начинать разработку следующего проекта развития предприятия, познакомьтесь со службами COM+. Упомянутая ранее книга "The Professional Windows DNA" издательства WroxPress является хорошим началом. При правильном использовании службы COM+ дают изобилие функциональности, что потребовало бы немало времени для воспроизведения и еще больше для полной отладки. Более того, подходы, которые службы COM+ используют для поддержки транзакций, сохранения ресурсов и межпроцессной коммуникации являются в некоторой степени базовыми, после изучения их можно будет применять к большому спектру разнообразных проблем. 

Глава 21

Графические возможности GDI+

Это вторая из двух глав в книге, описывающая элементы взаимодействия непосредственно с пользователем, т.е. вывод информации на экран и прием пользовательского ввода с помощью мыши или клавиатуры. В главе 9 мы рассматривали формы Windows и узнали, как выводить диалоговое окно или окна SDI и MDI и как разместить в них различные элементы управления, такие как кнопки, текстовые поля и поля списков. Основное внимание было уделено использованию элементов управления на основе их способности взять на себя полную ответственность за собственное изображение на устройстве вывода. Необходимо только задать свойства элемента управления и добавить методы обработки событий. Стандартные элементы управления — очень мощные, можно получить сложный интерфейс пользователя, используя только их. На самом деле они сами по себе вполне достаточны для полного интерфейса при работе со многими приложениями, в частности диалогового типа или с интерфейсом пользователя типа проводника.

Однако существуют ситуации, в которых простые элементы управления не дают гибкости, требуемой в интерфейсе пользователя. Иногда необходимо ввести текст заданным шрифтом в точной позиции окна или нарисовать изображения, не используя элемент управления "графическая кнопка", простые контуры или другую графику. Хорошим примером является программа Word for Windows. В верхней части экрана находятся различные кнопки и панели инструментов, которые используются для доступа к различным свойствам Word. Некоторые из меню и кнопок вызывают диалоговые окна или даже списки свойств. Эта часть интерфейса пользователя была рассмотрена в главе 9. Но основная часть экрана в Word for Windows будет совершенно другой. Окно SDI выводит представление документа. Оно имеет текст, аккуратно расположенный в нужных местах и выведенный с использованием множества размеров и шрифтов. В документе может быть выведена любая диаграмма и, если посмотреть на документ компоновки для печати, поля реальных страниц также должны быть выведены. Ничего из этого нельзя сделать с помощью элементов управление, описанных в главе 9. Чтобы изобразить такой вывод, программа Word for Windows должна взять на себя прямую ответственность за сообщение операционной системе, что необходимо вывести и где в его окне SDI. Как это делается, объясняется в данной главе. Здесь будет показано, как рисовать различные элементы, включая:

Поделиться:
Популярные книги

Последнее желание

Сапковский Анджей
1. Ведьмак
Фантастика:
фэнтези
9.43
рейтинг книги
Последнее желание

Ученичество. Книга 2

Понарошку Евгений
2. Государственный маг
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ученичество. Книга 2

Адвокат Империи 7

Карелин Сергей Витальевич
7. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 7

Вонгозеро

Вагнер Яна
1. Вонгозеро
Детективы:
триллеры
9.19
рейтинг книги
Вонгозеро

Мастер 7

Чащин Валерий
7. Мастер
Фантастика:
фэнтези
боевая фантастика
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Мастер 7

Неудержимый. Книга IX

Боярский Андрей
9. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга IX

Двойник Короля 2

Скабер Артемий
2. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля 2

Сумеречный Стрелок 2

Карелин Сергей Витальевич
2. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 2

Возвышение Меркурия. Книга 7

Кронос Александр
7. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 7

На границе империй. Том 8. Часть 2

INDIGO
13. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8. Часть 2

И вспыхнет пламя

Коллинз Сьюзен
2. Голодные игры
Фантастика:
социально-философская фантастика
боевая фантастика
9.44
рейтинг книги
И вспыхнет пламя

Кодекс Крови. Книга I

Борзых М.
1. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга I

Неучтенный. Дилогия

Муравьёв Константин Николаевич
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Неучтенный. Дилогия

Черный Маг Императора 10

Герда Александр
10. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 10