Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 252

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 246 247 248 249 250 251 < 252 > 253 254 255 256 257 258 .. 320 >> Следующая

Конечно же, нам потребуется поместить в наши типы .NET значительное количество атрибутов для уточнения особенностей поведения сборки под СОМ+. После этого мы должны откомпилировать сборку и использовать утилиту regsvcs.exe. С работой этой утилиты мы еще познакомимся, а пока скажем что она выполняет множество действий, необходимых для установки наших типов в каталог СОМ+.
Кроме того, мы должны поместить созданную нами сборку .NET в GAC (как это делается, было рассказано в главе 6). Объяснение очень простое: файлу dllhost.exe (это исполняемый модуль СОМ+) необходимо иметь возможность находить нашу сборку. Согласитесь, что наиболее логичный способ это обеспечить — установить сборку в GAC
Теперь, когда с теорией мы познакомились, настало время создать сборку .NET, которая будет обслуживать.клиентов СОМ+.
Пример класса для работы под СОМ+
Для наших целей мы создадим новую библиотеку кода, которая будет называться DotNetCOMPl usServer (в среде выполнения .NET могут работать только модули DLL). В этой библиотеке кода будет определен единственный класс - ComPlusType со следующими характеристиками:
• этот класс будетподдерживать строку конструирования (constructorsViing):
• объекты этого класса можно будет объединять в пул. Верхний предел пула мы установим равным 100, а нижний — 5;
624 Глава 12 * Взаимодействие с унаследованным программным кодом
• в классе будет определен единственный метод, который может выполниться успешно, а может вернуть сообщение об ошибке. Чтобы получать сведения о результате выполнения, мы используем атрибут AutoCorcpl ete.
Вот код С# для этого класса:
// Добавим ссылку на System.EnterprіseServices.dl 1! using System JEnterpriseServfces: using System.Windows.Forms:
II Объекты этого класса можно Судет объединять в пул
[ObjectPoolingCtrue, 5. 100)}
// Этот класс поддерживает строку конструирования
[ConstructionEnabledAttribute(true)]
[Cl ass Inte rfесе(Cl a ssInterFaceTyре.AutoDua1)]
public class ComFlusType : ServicetiCcnpcrtent. JODjectConstruct
' Il Реализуен интерфейс lObjectConstruct public void ConstrucUobject o)
{
II Получаем ссылку на интерфейс IObjectConstructionString
IObjectConstructionString ics = (IObjectConstructionString)o: MessageBox.Showtics.ConstructString. "Ctor string is");
)
Il Реализуен унаследованные абстрактные члены"
public override void Activated
{ MessageBoK.ShowCIn activate!"); }
public override void Deactivated
{ MessageBox.ShowC'lndeactivate!"); }
public override bocl CanSePoolefiO { return true; }
public Соті-1 uiType;).I)
II Единственный метод нашего класса public void DeleteCardnt id) {
MessageBox.ShowCDeleting car number " + id.ToStringO. "Delete Car");
}
j
Кончено, наш класс не назовешь очень сложным, и он не выполняет никаких действий, которые были бы положены классам, работающим под СОМ+ (например, он не удаляет автомобили из хранилища данных). Однако для наших целей такого класса вполне достаточно.
Поскольку мы установим нашу сборку в GAC1 нам потребуется сделать еще одно дело — присвоить ей «сильное имя». Как уже говорилось в главе 6, для этой цели используется утилита sn.exe. Создадим файл *.snk и в файл Assemblylnfo.cs добавим следующий атрибут уровня сборки (только не забудем указать путь к файлу \snkHa нашем компьютере):
[assembly; AssemblyKeyFile(@"D:\DotNetComPlusServer\bin\Debug\thekey.snk")]
Пример класса для работы под СОМ+ 625
Кроме того, мы можем явно указать номер версии и редакции нашей сборки (чтобы они не изменялись):
[assembly : AssemblyVers1on("l.0.0.0")]
Теперь сборку можно компилировать.
Добавление атрибутов уровня сборки для СОМ+
Наша сборка вполне созрела для того, чтобы добавить ее в каталог СОМ+. Утилита regsvcs.exe автоматически умеет генерировать ЛррID и имя приложения. Однако если нам необходимо явно определить эти и другие параметры, мы можем поместить в файл AssembLylnfo.cs следующие атрибуты уровня сборки:
[ assembly:ApplicationActivation(ActivationOption.Server)]
[ assembly: App1icationID("4fb2cl46f-efc8-4643-bctlO-6e5bfa6al74c")]
C assembly: ApplicationMameC'DotNetComPlusServer")]
[ assembly: Description "This app really kicks.")]
Лтрибу r App 1 і сні: і on ID, конечно, определяет GUI D создаваемого нами приложения СОМ !. Вряд ли нужно каким-то образом комментировать атрибуты App'f і cat і OnN .me и Description. Единственное, что нужно объяснить, - для чего нужен атрибут Appl і -cationActivation. Как уже говорилось, приложения MTS и СОМ+ бывают двух разновидностей: библиотечные (активируемые в процессе вызывающего клиента) и серверные (для них создается новый объект dllhost.exe). По умолчанию создается библиотечное приложение. Если мы хотим использовать другой тип, тс, мы, какв на-шемпримере.можемуказатьдляэтогоатрибутазначениеАсиуаиопОриоп. Server.
Помещаем сборку в каталог СОМ+
Чтобы поместить сборку .NET в каталог СОМ+, нам потребуется вначале сгенерировать для нее промежуточный модуль CCW (библиотеку типов) при помощи
tlbexp.exe, а затем зарегистрировать этот тип в системном реестре при помощи regasm.exe. Но в отличие от сборки .NET, притворяющейся обычным СОМ-сервером, для СОМ+ этого недостаточно. Нам нужно еще внести необходимую шіфі >р-мацию в каталог COM+ (RegDB).
Предыдущая << 1 .. 246 247 248 249 250 251 < 252 > 253 254 255 256 257 258 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100