Регистрация библиотеки — различия между версиями
(Новая страница: « == Регистрация библиотеки == COM объект имеет .NET основу, поэтому его регистрация осуществля...») |
|||
(не показано 19 промежуточных версии этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | {|cellpadding="10" cellspacing="0" border="0" | ||
+ | | [[Использование_COM_библиотеки_Oktell_из_других_приложений|Наверх]] | ||
+ | | [[Использование_COM_библиотеки_Oktell_из_других_приложений|Использование COM библиотеки Oktell из других приложений<<<]] | ||
+ | | [[Регистрация библиотеки|Регистрация библиотеки]] | ||
+ | | [[Форматы и договоренности|>>>Форматы и договоренности]] | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | __TOC__ | ||
== Регистрация библиотеки == | == Регистрация библиотеки == | ||
Строка 4: | Строка 13: | ||
COM объект имеет .NET основу, поэтому его регистрация осуществляется с помощью специальной утилиты в составе Microsoft.NET. Стандартные способы регистрации могут не привести к желаемому результату. | COM объект имеет .NET основу, поэтому его регистрация осуществляется с помощью специальной утилиты в составе Microsoft.NET. Стандартные способы регистрации могут не привести к желаемому результату. | ||
− | После установки FRAMEWORK в его каталоге ( %SystemRoot%\Microsoft.NET\Framework\ | + | После установки FRAMEWORK в его каталоге ( %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\ ) появится файл <span style="color:green">regsvcs.exe</span>. Вообще Framework вносит свой каталог в пути по умолчанию, поэтому из командной строки файл должен быть доступен из любого текущего каталога. |
+ | |||
+ | <span style="color:red">ВНИМАНИЕ: Запускать regsvcs.exe нужно только из папки '''Framework''', а не из папки Framework64. | ||
Классика жанра предполагает предварительное размещение сборок приложения в Global Assembly Cache, но поскольку из-за самостоятельной системы обновлений возникают сложности с заменой, а также со строгими именами сборок и динамическим связыванием, весь проект приложения Oktell размещается в отдельном каталоге безотносительно версий сборок. Именно в нем и следует регистрировать библиотеку. | Классика жанра предполагает предварительное размещение сборок приложения в Global Assembly Cache, но поскольку из-за самостоятельной системы обновлений возникают сложности с заменой, а также со строгими именами сборок и динамическим связыванием, весь проект приложения Oktell размещается в отдельном каталоге безотносительно версий сборок. Именно в нем и следует регистрировать библиотеку. | ||
Строка 10: | Строка 21: | ||
Команда для исполнения регистрации выглядит: | Команда для исполнения регистрации выглядит: | ||
− | regsvcs Oktell.ClientComLib.dll | + | <span style="color:green">regsvcs Oktell.ClientComLib.dll</span> |
либо | либо | ||
− | путь\regsvcs путь\Oktell.ClientComLib.dll | + | <span style="color:green">путь\regsvcs путь\Oktell.ClientComLib.dll </span> |
Команда для удаления регистрации: | Команда для удаления регистрации: | ||
− | regsvcs /u Oktell.ClientComLib.dll | + | <span style="color:green">regsvcs /u Oktell.ClientComLib.dll </span> |
− | В момент регистрации в командном окне выводятся результаты. Модуль regsvcs предоставляет еще несколько сервисов, подробнее о которых можно узнать, выполнив команду regsvcs /?. | + | В момент регистрации в командном окне выводятся результаты. Модуль <span style="color:green">regsvcs</span> предоставляет еще несколько сервисов, подробнее о которых можно узнать, выполнив команду <span style="color:green">regsvcs /?</span>. |
− | После успешной регистрации (о чем будет сообщено дополнительно в командном окне) в каталоге с регистрируемой библиотекой появляется файл Oktell.ClientComLib.tlb. | + | После успешной регистрации (о чем будет сообщено дополнительно в командном окне) в каталоге с регистрируемой библиотекой появляется файл <span style="color:green">Oktell.ClientComLib.tlb</span>. |
− | |||
− | |||
− | |||
− | + | [[Файл:Регистрация COM библиотеки.png|center]] | |
− | |||
− | + | == Информация об объекте == | |
+ | |||
+ | Полное имя объекта: <span style="color:green">oktellClient.ComLib.OktellComClient</span> | ||
+ | GUID объекта: <span style="color:green">645CB11F-244B-4CD7-B0B8-D37D81A2D582</span> | ||
− | |||
− | + | Интерфейс для вызова методов: <span style="color:green">interface IOktellComClient</span> | |
+ | GUID интерфейса: <span style="color:green">CDF085C-3476-4F10-88D3-D15323EAF654</span> | ||
− | |||
− | + | Интерфейс для прямой регистрации callback-методов: <span style="color:green">interface IOktellComClientEvents</span> | |
+ | GUID интерфейса: <span style="color:green">CDF085C-3476-4F10-88D3-D15323EAF653</span> | ||
− | |||
+ | Интерфейс для событий (IConnectionPointContainer): <span style="color:green">dispinterface IOktellComEvents</span> | ||
− | + | GUID интерфейса: <span style="color:green">CDF085C-3476-4F10-88D3-D15323EAF655</span> | |
− | В некоторых случаях при реализации осуществляется динамическая связка по имени метода на этапе исполнения. В других же необходимо гарантировать четкое соответствие и неизменность методов и их DispId при последующих обновлениях. | + | Подписка на события объекта может быть осуществлена через <span style="color:darkred">IConnectionPointContainer</span> (dispinterface IOktellComEvents), либо прямой регистрацией для отдельных событий адресов callback-методов (делегатов) (interface IOktellComClientEvents). |
+ | |||
+ | При реализации долгосрочных проектов необходимо иметь в виду, что обновления Oktell зачастую сопровождаются изменениями интерфейса основного COM-объекта. Как правило происходит лишь дополнение интерфейса ранее отсутствовавшими методами. Каждый из методов интерфейса <span style="color:green">IOktellComClient</span> имеет установленный '''DispId''' для последующей идентификации и корректного вызова при замене библиотеки <span style="color:green">Oktell.ClientComLib.dll</span> на более новую версию. | ||
+ | |||
+ | В некоторых случаях при реализации осуществляется динамическая связка по имени метода на этапе исполнения. В других же необходимо гарантировать четкое соответствие и неизменность методов и их '''DispId''' при последующих обновлениях. | ||
== Независимый от версий интерфейс == | == Независимый от версий интерфейс == | ||
− | В библиотеке описан альтернативный COM-объект, имеющий вместо интерфейса IOktellComClient интерфейс с единственным методом ExecMethod. С помощью этого метода можно вызвать любой из методов интерфейса IOktellComClient, описанных далее в настоящем разделе. | + | В библиотеке описан альтернативный COM-объект, имеющий вместо интерфейса <span style="color:green">IOktellComClient</span> интерфейс с единственным методом ExecMethod. С помощью этого метода можно вызвать любой из методов интерфейса <span style="color:green">IOktellComClient</span>, описанных далее в настоящем разделе. |
− | Полное имя объекта: oktellClient.ComLib.OktellComClientDynamic | + | Полное имя объекта: <span style="color:green">oktellClient.ComLib.OktellComClientDynamic</span> |
− | GUID объекта: B6BC5DE5-8C98-4C16-A592-32A6B83F2F03 | + | GUID объекта: <span style="color:green">B6BC5DE5-8C98-4C16-A592-32A6B83F2F03</span> |
− | Интерфейс для вызова методов: interface IOktellComClient | + | Интерфейс для вызова методов: <span style="color:green">interface IOktellComClient</span> |
− | GUID интерфейса: CDF085C-3476-4F10-88D3-D15323EAF654 | + | GUID интерфейса: <span style="color:green">CDF085C-3476-4F10-88D3-D15323EAF654</span> |
− | Интерфейс для прямой регистрации callback-методов: interface IOktellComClientEvents | + | Интерфейс для прямой регистрации callback-методов: <span style="color:green">interface IOktellComClientEvents</span> |
− | GUID интерфейса: CDF085C-3476-4F10-88D3-D15323EAF653 | + | GUID интерфейса: <span style="color:green">CDF085C-3476-4F10-88D3-D15323EAF653</span> |
− | Интерфейс для событий (IConnectionPointContainer): dispinterface IOktellComEvents | + | Интерфейс для событий (IConnectionPointContainer): <span style="color:green">dispinterface IOktellComEvents</span> |
− | GUID интерфейса: CDF085C-3476-4F10-88D3-D15323EAF655 | + | GUID интерфейса: <span style="color:green">CDF085C-3476-4F10-88D3-D15323EAF655</span> |
Метод динамического вызова функций ядра описан | Метод динамического вызова функций ядра описан | ||
− | string ExecMethod ( string methodname, string param1, string param2 ) | + | <span style="color:blue">string</span> ExecMethod ( <span style="color:blue">string</span> methodname, <span style="color:blue">string</span> param1, <span style="color:blue">string</span> param2 ) |
+ | Для вызова с его помощью любого из описанных в настоящем разделе методов необходимо передать ему название соответствующего метода, а также строковое представление параметров (или произвольные значения в случае их отсутствия). Возвращаемый результат имеет строковое представление значения, возвращенного указанным методом или <span style="blue">NULL</span> в случае его отсутствия. | ||
− | + | В остальном объект идентичен <span style="color:green">oktellClient.ComLib.OktellComClient</span>, и далее в разделе рассматриваться не будет. | |
− | + | ||
− | В остальном объект идентичен oktellClient.ComLib.OktellComClient, и далее в разделе рассматриваться не будет. | + | |
== Для .NET разработчиков == | == Для .NET разработчиков == | ||
− | COM объект, описываемый в руководстве, является ничем иным как оберткой для .NET экспортируемого типа oktellClient.ComLib.InnerComMapper, объявленного и реализованного в сборке oktell.ClientBaseLib. | + | COM объект, описываемый в руководстве, является ничем иным как оберткой для .NET экспортируемого типа <span style="color:green">oktellClient.ComLib.InnerComMapper</span>, объявленного и реализованного в сборке <span style="color:green">oktell.ClientBaseLib</span>. |
Для упрощения интеграционной разработки и исключения COM-вызовов существует возможность осуществлять взаимодействие непосредственно через .NET объект. Его интерфейсы почти полностью аналогичны описанному интерфейсу COM-объекта в руководстве. Небольшая разница пристутсвует в способе отправки событий (callback-методов): некоторые вызовы становятся асинхронными именно в COM-обертке. | Для упрощения интеграционной разработки и исключения COM-вызовов существует возможность осуществлять взаимодействие непосредственно через .NET объект. Его интерфейсы почти полностью аналогичны описанному интерфейсу COM-объекта в руководстве. Небольшая разница пристутсвует в способе отправки событий (callback-методов): некоторые вызовы становятся асинхронными именно в COM-обертке. | ||
+ | |||
+ | |||
+ | {|cellpadding="10" cellspacing="0" border="0" | ||
+ | | [[Использование_COM_библиотеки_Oktell_из_других_приложений|Наверх]] | ||
+ | | [[Использование_COM_библиотеки_Oktell_из_других_приложений|Использование COM библиотеки Oktell из других приложений<<<]] | ||
+ | | [[Регистрация библиотеки|Регистрация библиотеки]] | ||
+ | | [[Форматы и договоренности|>>>Форматы и договоренности]] | ||
+ | |- | ||
+ | |} |
Текущая версия на 07:27, 16 сентября 2014
Наверх | Использование COM библиотеки Oktell из других приложений<<< | Регистрация библиотеки | >>>Форматы и договоренности |
Содержание
Регистрация библиотеки
COM объект имеет .NET основу, поэтому его регистрация осуществляется с помощью специальной утилиты в составе Microsoft.NET. Стандартные способы регистрации могут не привести к желаемому результату.
После установки FRAMEWORK в его каталоге ( %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\ ) появится файл regsvcs.exe. Вообще Framework вносит свой каталог в пути по умолчанию, поэтому из командной строки файл должен быть доступен из любого текущего каталога.
ВНИМАНИЕ: Запускать regsvcs.exe нужно только из папки Framework, а не из папки Framework64.
Классика жанра предполагает предварительное размещение сборок приложения в Global Assembly Cache, но поскольку из-за самостоятельной системы обновлений возникают сложности с заменой, а также со строгими именами сборок и динамическим связыванием, весь проект приложения Oktell размещается в отдельном каталоге безотносительно версий сборок. Именно в нем и следует регистрировать библиотеку.
Команда для исполнения регистрации выглядит:
regsvcs Oktell.ClientComLib.dll
либо
путь\regsvcs путь\Oktell.ClientComLib.dll
Команда для удаления регистрации:
regsvcs /u Oktell.ClientComLib.dll
В момент регистрации в командном окне выводятся результаты. Модуль regsvcs предоставляет еще несколько сервисов, подробнее о которых можно узнать, выполнив команду regsvcs /?.
После успешной регистрации (о чем будет сообщено дополнительно в командном окне) в каталоге с регистрируемой библиотекой появляется файл Oktell.ClientComLib.tlb.
Информация об объекте
Полное имя объекта: oktellClient.ComLib.OktellComClient
GUID объекта: 645CB11F-244B-4CD7-B0B8-D37D81A2D582
Интерфейс для вызова методов: interface IOktellComClient
GUID интерфейса: CDF085C-3476-4F10-88D3-D15323EAF654
Интерфейс для прямой регистрации callback-методов: interface IOktellComClientEvents
GUID интерфейса: CDF085C-3476-4F10-88D3-D15323EAF653
Интерфейс для событий (IConnectionPointContainer): dispinterface IOktellComEvents
GUID интерфейса: CDF085C-3476-4F10-88D3-D15323EAF655
Подписка на события объекта может быть осуществлена через IConnectionPointContainer (dispinterface IOktellComEvents), либо прямой регистрацией для отдельных событий адресов callback-методов (делегатов) (interface IOktellComClientEvents).
При реализации долгосрочных проектов необходимо иметь в виду, что обновления Oktell зачастую сопровождаются изменениями интерфейса основного COM-объекта. Как правило происходит лишь дополнение интерфейса ранее отсутствовавшими методами. Каждый из методов интерфейса IOktellComClient имеет установленный DispId для последующей идентификации и корректного вызова при замене библиотеки Oktell.ClientComLib.dll на более новую версию.
В некоторых случаях при реализации осуществляется динамическая связка по имени метода на этапе исполнения. В других же необходимо гарантировать четкое соответствие и неизменность методов и их DispId при последующих обновлениях.
Независимый от версий интерфейс
В библиотеке описан альтернативный COM-объект, имеющий вместо интерфейса IOktellComClient интерфейс с единственным методом ExecMethod. С помощью этого метода можно вызвать любой из методов интерфейса IOktellComClient, описанных далее в настоящем разделе.
Полное имя объекта: oktellClient.ComLib.OktellComClientDynamic
GUID объекта: B6BC5DE5-8C98-4C16-A592-32A6B83F2F03
Интерфейс для вызова методов: interface IOktellComClient
GUID интерфейса: CDF085C-3476-4F10-88D3-D15323EAF654
Интерфейс для прямой регистрации callback-методов: interface IOktellComClientEvents
GUID интерфейса: CDF085C-3476-4F10-88D3-D15323EAF653
Интерфейс для событий (IConnectionPointContainer): dispinterface IOktellComEvents
GUID интерфейса: CDF085C-3476-4F10-88D3-D15323EAF655
Метод динамического вызова функций ядра описан
string ExecMethod ( string methodname, string param1, string param2 )
Для вызова с его помощью любого из описанных в настоящем разделе методов необходимо передать ему название соответствующего метода, а также строковое представление параметров (или произвольные значения в случае их отсутствия). Возвращаемый результат имеет строковое представление значения, возвращенного указанным методом или NULL в случае его отсутствия.
В остальном объект идентичен oktellClient.ComLib.OktellComClient, и далее в разделе рассматриваться не будет.
Для .NET разработчиков
COM объект, описываемый в руководстве, является ничем иным как оберткой для .NET экспортируемого типа oktellClient.ComLib.InnerComMapper, объявленного и реализованного в сборке oktell.ClientBaseLib.
Для упрощения интеграционной разработки и исключения COM-вызовов существует возможность осуществлять взаимодействие непосредственно через .NET объект. Его интерфейсы почти полностью аналогичны описанному интерфейсу COM-объекта в руководстве. Небольшая разница пристутсвует в способе отправки событий (callback-методов): некоторые вызовы становятся асинхронными именно в COM-обертке.
Наверх | Использование COM библиотеки Oktell из других приложений<<< | Регистрация библиотеки | >>>Форматы и договоренности |