Compartilhar via


Importação de metadados

O WWSAPI inclui elementos de API que podem ser usados para processar wsdl e política de um ponto de extremidade com o objetivo de extrair informações que podem ser usadas para se comunicar com o ponto de extremidade. Essas APIs normalmente são usadas quando o protocolo de comunicação compatível com o ponto de extremidade ainda não é conhecido.

Use a seguinte sequência para processar metadados:

WsCreateMetadata    // create a metadata object

while there are metadata documents to add
{
    // retrieve the metadata document from it's location
    // (download, read from file, etc)

    // add the document to the metadata object
    WsReadMetadata

    // optionally query the metadata object for any missing documents
    WsGetMissingMetadataDocumentAddress?
}

// get the endpoints from the metadata object
WsGetMetadataEndpoints

for each endpoint
{            
    // examine the endpoint information to see if 
    // the endpoint is relevant for the particular scenario

    if the endpoint is relevant
    {
        // get the policy object from the endpoint

        // get the number of policy alternatives in the policy
        WsGetPolicyAlternativeCount

        for each policy alternative
        {
            // construct a policy constraints structure that specifies
            // what policy is acceptable and what information to extract
            // from the policy

            // see if the policy alternative matches the constraints
            WsMatchPolicyAlternative

            // if there is a match, then use it

            // if there is not a match, then it is also possible to 
            // try with a different constraint structure
        }
    }
}

// If reusing the metadata object for a different set of documents
WsResetMetadata? // reset metadata object, which removes all documents

WsFreeMetadata // free the metadata object

para obter informações sobre como as declarações WSDL e WS-Policy correspondem à API, consulte o tópico mapeamento de metadados do.

Segurança

Os metadados baixados são tão bons quanto o endereço usado para baixá-lo. Um aplicativo deve garantir que ele confie no endereço. Além disso, um aplicativo deve garantir que ele use um protocolo de segurança para baixar os documentos de metadados que não permitem a adulteração dos metadados.

Um aplicativo deve inspecionar os endereços dos serviços expostos pelos metadados. Por padrão, o runtime garante que o nome do host do serviço corresponda ao da URL original usada para baixar os metadados, mas talvez o aplicativo queira executar verificações adicionais. Um aplicativo pode desabilitar a verificação do nome do host substituindo WS_METADATA_PROPERTY_VERIFY_HOST_NAMES propriedade. Se a verificação do nome do host feita por padrão estiver desabilitada, o aplicativo precisará se proteger contra os documentos de metadados que contêm o endereço de um serviço de outra parte em que ele não confia de alguma outra forma.

Por padrão, a quantidade máxima de memória usada pelo runtime de metadados para desserializar e processar os metadados é de 256 mil, e o número máximo de documentos que podem ser adicionados é 32. Esses valores padrão podem ser substituídos por propriedades WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE e WS_METADATA_PROPERTY_MAX_DOCUMENTS. Esses limites são projetados para limitar a quantidade de downloads e limitar a quantidade de memória alocada para acumular os metadados. Aumentar esses valores pode levar a uso excessivo de memória, uso de CPU ou consumo de largura de banda de rede. Observe que, devido à expansão de cadeias de caracteres de dicionário no formato binário, uma mensagem pequena pode levar a um formulário desserializado muito maior, portanto, depender de mensagens pequenas para limitar a alocação de memória de metadados não é suficiente ao usar o formato binário.

Por padrão, o número máximo de alternativas de política é 32, embora possa ser substituído por WS_POLICY_PROPERTY_MAX_ALTERNATIVES propriedade. Se um aplicativo percorrer cada alternativa procurando uma correspondência, talvez seja necessário pesquisar todas as alternativas antes de encontrar uma correspondência. Aumentar o número máximo de alternativas pode levar à utilização excessiva da CPU.

As seguintes enumerações fazem parte da importação de metadados:

As seguintes funções fazem parte da importação de metadados:

  • WsCreateMetadata
  • WsFreeMetadata
  • WsGetMetadataEndpoints
  • WsGetMetadataProperty
  • WsGetMissingMetadataDocumentAddress
  • WsGetPolicyAlternativeCount
  • WsGetPolicyProperty
  • WsMatchPolicyAlternative
  • WsReadMetadata
  • WsResetMetadata

Os identificadores a seguir fazem parte da importação de metadados:

As estruturas a seguir fazem parte da importação de metadados: