Поделиться через


Сетевой интерфейс программирования

Интерфейс сетевого программирования или NPI определяет интерфейс между сетевыми модулями , которые могут быть подключены друг к другу. Клиентский модуль , зарегистрированный в качестве клиента определенного NPI, может быть присоединен только к модулям поставщика , зарегистрированным в качестве поставщиков того же NPI. Аналогичным образом модуль поставщика, зарегистрированный в качестве поставщика определенного NPI, может быть присоединен только к клиентским модулям, зарегистрированным в качестве клиентов одного NPI.

Каждый NPI определяет следующие элементы:

  • Идентификатор NPI, который однозначно идентифицирует NPI. Сетевой модуль задает идентификатор NPI, указывающий конкретный NPI, который он поддерживает, когда сетевой модуль регистрируется в регистраторе сетевых модулей (NMR). Сетевой модуль может поддерживать несколько НПИ, регистрируя себя в NMR несколько раз, каждый раз для каждой поддерживаемой НПИ. NMR инициирует присоединение клиентского модуля к модулю поставщика только в том случае, если они поддерживают один и тот же NPI.

  • Необязательная структура характеристик клиента , указывающая характеристики NPI каждого клиентского модуля. Такие характеристики NPI могут включать такие элементы, как версия (или версии) NPI, которую поддерживает клиентский модуль, или какие семейства адресов или протокол требуется клиентскому модулю. Модуль поставщика может использовать сведения, содержащиеся в структуре характеристик клиента клиентского модуля, чтобы определить, будет ли он присоединен к клиентскому модулю. Если NPI не определяет характеристики клиента, зависящие от NPI, эта структура не требуется.

  • Необязательная структура характеристик поставщика , указывающая характеристики NPI каждого модуля поставщика. Такие характеристики NPI могут включать такие элементы, как версия (или версии) NPI, которую поддерживает модуль поставщика, или какие семейства адресов или протоколы, поддерживаемые модулем поставщика. Клиентский модуль может использовать сведения, содержащиеся в структуре характеристик клиента модуля поставщика, чтобы определить, будет ли он присоединен к модулю поставщика. Если NPI не определяет характеристики поставщика NPI, эта структура не требуется.

  • Ноль или более функций обратного вызова модуля клиента. После успешного подключения модуля поставщика к клиентскому модулю модуль поставщика может получить доступ к функциям клиентского модуля, вызвав функции обратного вызова клиентского модуля.

  • Один или несколько функций модуля поставщика. После успешного подключения клиентского модуля к модулю поставщика клиентский модуль может получить доступ к функциям модуля поставщика, вызвав функции модуля поставщика.

  • Структура таблицы диспетчеризации клиента , содержащая указатели функций на каждую из функций обратного вызова модуля клиента. Если NPI не определяет функции обратного вызова модуля клиента, то эта структура не требуется.

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

Клиентский модуль, поддерживающий определенный NPI, использует элементы, определенные NPI, для реализации клиентской стороны интерфейса. Аналогичным образом, модуль поставщика, поддерживающий определенный NPI, использует элементы, определенные NPI, для реализации стороны поставщика интерфейса.

Все элементы, определенные NPI, непрозрачны к NMR, за исключением идентификатора NPI. NMR использует идентификатор NPI, чтобы определить, какие клиентские модули должны быть присоединены к модулям поставщика.