Partilhar via


Interface de programação de rede

Um Network Programming Interface, ou NPI, define a interface entre módulos de rede que podem ser conectados uns aos outros. Um módulo de cliente que está registrado como um cliente de um NPI específico só pode ser anexado a módulos de provedor que estão registrados como provedores do mesmo NPI. Da mesma forma, um módulo de provedor que está registrado como um provedor de um NPI específico só pode ser anexado a módulos de cliente que estão registrados como clientes do mesmo NPI.

Cada NPI define os seguintes itens:

  • Um identificador de NPI, , que identifica o NPI de forma exclusiva. Um módulo de rede especifica um identificador NPI para indicar o NPI específico que ele suporta quando o módulo de rede se registra no Network Module Registrar (NMR). Um módulo de rede pode suportar vários NPIs registrando-se com a RMN várias vezes, uma vez para cada NPI suportado. A RMN iniciará a anexação de um módulo cliente a um módulo de provedor somente se ambos suportarem o mesmo NPI.

  • Uma estrutura opcional de características do cliente que especifica as características específicas do NPI de cada módulo do cliente. Tais características específicas do NPI podem incluir itens como qual versão (ou versões) do NPI um módulo cliente suporta ou qual família de endereços ou protocolo um módulo cliente requer. Um módulo de provedor pode usar as informações contidas nas características do cliente de um módulo cliente para determinar se se ligará ao módulo cliente. Se um NPI não definir nenhuma característica de cliente específica do NPI, essa estrutura não será necessária.

  • Uma estrutura de características opcionais do provedor que especifica as características do NPI específicas de cada módulo do provedor. Essas características específicas do NPI podem incluir itens como qual versão (ou versões) do NPI um módulo de provedor suporta ou quais famílias ou protocolos de endereçamento um módulo de provedor suporta. Um módulo cliente pode usar as informações contidas na estrutura de características do cliente de um módulo provedor para determinar se ele será anexado ao módulo provedor. Se um NPI não definir nenhuma característica específica do provedor NPI, essa estrutura não será necessária.

  • Zero ou mais funções de retorno de chamada do módulo cliente. Depois que um módulo de provedor se conecta com êxito a um módulo de cliente, o módulo de provedor pode acessar a funcionalidade do módulo cliente chamando as funções de retorno de chamada do módulo cliente.

  • Uma ou mais funções do módulo do provedor. Depois que um módulo cliente é anexado com êxito a um módulo provedor, o módulo cliente pode acessar a funcionalidade do módulo provedor chamando as funções do módulo provedor.

  • Uma estrutura de tabela de despacho de cliente que contém ponteiros de função para cada uma das funções de retorno de chamada do módulo de cliente. Se um NPI não definir nenhuma função de retorno de chamada do módulo cliente, essa estrutura não será necessária.

  • Uma estrutura de tabela de despacho do provedor que contém apontadores de função para cada uma das funções do módulo do provedor.

Um módulo cliente que suporta um NPI específico usa os itens definidos pelo NPI para implementar o lado do cliente da interface. Da mesma forma, um módulo de provedor que suporta um NPI específico usa os itens definidos pelo NPI para implementar o lado do provedor da interface.

Todos os itens definidos por um NPI são opacos para a RMN, exceto o identificador NPI. A RMN usa o identificador NPI para determinar quais módulos de cliente devem ser anexados a quais módulos de provedor.