Регистрация библиотеки — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
 
(не показано 16 промежуточных версии этого же участника)
Строка 1: Строка 1:
 +
{|cellpadding="10" cellspacing="0" border="0"
 +
| [[Использование_COM_библиотеки_Oktell_из_других_приложений|Наверх]]
 +
| [[Использование_COM_библиотеки_Oktell_из_других_приложений|Использование COM библиотеки Oktell из других приложений<<<]]
 +
| [[Регистрация библиотеки|Регистрация библиотеки]]
 +
| [[Форматы и договоренности|>>>Форматы и договоренности]]
 +
|-
 +
|}
 +
 +
__TOC__
 +
 
== Регистрация библиотеки ==
 
== Регистрация библиотеки ==
  
 
COM объект имеет .NET основу, поэтому его регистрация осуществляется с помощью специальной утилиты в составе Microsoft.NET. Стандартные способы регистрации могут не привести к желаемому результату.
 
COM объект имеет .NET основу, поэтому его регистрация осуществляется с помощью специальной утилиты в составе Microsoft.NET. Стандартные способы регистрации могут не привести к желаемому результату.
  
После установки FRAMEWORK в его каталоге ( %SystemRoot%\Microsoft.NET\Framework\v1.1.4322\ ) появится файл <span style="color:green">regsvcs.exe</span>. Вообще 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 размещается в отдельном каталоге безотносительно версий сборок. Именно в нем и следует регистрировать библиотеку.
Строка 22: Строка 34:
  
 
После успешной регистрации (о чем будет сообщено дополнительно в командном окне) в каталоге с регистрируемой библиотекой появляется файл <span style="color:green">Oktell.ClientComLib.tlb</span>.
 
После успешной регистрации (о чем будет сообщено дополнительно в командном окне) в каталоге с регистрируемой библиотекой появляется файл <span style="color:green">Oktell.ClientComLib.tlb</span>.
 +
 +
 +
[[Файл:Регистрация COM библиотеки.png|center]]
 +
 +
  
 
== Информация об объекте ==
 
== Информация об объекте ==
Строка 47: Строка 64:
 
Подписка на события объекта может быть осуществлена через <span style="color:darkred">IConnectionPointContainer</span> (dispinterface IOktellComEvents), либо прямой  регистрацией для отдельных событий адресов callback-методов (делегатов)  (interface IOktellComClientEvents).
 
Подписка на события объекта может быть осуществлена через <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> на более новую версию.
  
При реализации долгосрочных проектов необходимо иметь в виду, что обновления Oktell зачастую сопровождаются изменениями интерфейса основного COM-объекта. Как правило происходит лишь дополнение интерфейса ранее отсутствовавшими методами. Каждый из методов интерфейса IOktellComClient имеет установленный DispId для последующей идентификации и корректного вызова при замене библиотеки Oktell.ClientComLib.dll на более новую версию.
+
В некоторых случаях при реализации осуществляется динамическая связка по имени метода на этапе исполнения. В других же необходимо гарантировать четкое соответствие и неизменность методов и их '''DispId''' при последующих обновлениях.
 
+
 
+
В некоторых случаях при реализации осуществляется динамическая связка по имени метода на этапе исполнения. В других же необходимо гарантировать четкое соответствие и неизменность методов и их 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> в случае его отсутствия.
  
Для вызова с его помощью любого из описанных в настоящем разделе методов необходимо передать ему название соответствующего метода, а также строковое представление параметров (или произвольные значения в случае их отсутствия). Возвращаемый результат имеет строковое представление значения, возвращенного указанным методом или NULL в случае его отсутствия.
+
В остальном объект идентичен <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.


Регистрация COM библиотеки.png


Информация об объекте

Полное имя объекта: 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 из других приложений<<< Регистрация библиотеки >>>Форматы и договоренности