Condividi tramite


Importazione metadati

WWSAPI include elementi API che possono essere usati per elaborare WSDL e Criteri da un endpoint con l'obiettivo di estrarre informazioni che possono essere usate per comunicare con l'endpoint. Queste API vengono in genere usate quando il protocollo di comunicazione supportato dall'endpoint non è già noto.

Usare la sequenza seguente per elaborare i metadati:

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

per informazioni sul modo in cui WSDL e WS-Policy asserzioni corrispondono all'API, vedere l'argomento mapping dei metadati.

Sicurezza

I metadati scaricati sono validi solo se l'indirizzo usato per scaricarlo. Un'applicazione deve assicurarsi che consideri attendibile l'indirizzo. Inoltre, un'applicazione deve assicurarsi che usi un protocollo di sicurezza per scaricare i documenti di metadati che non consentono la manomissione dei metadati.

Un'applicazione deve esaminare gli indirizzi dei servizi esposti dai metadati. Per impostazione predefinita, il runtime garantisce che il nome host del servizio corrisponda a quello dell'URL originale usato per scaricare i metadati, ma l'applicazione potrebbe voler eseguire controlli aggiuntivi. Un'applicazione può disabilitare la verifica del nome host sovrascrivendo WS_METADATA_PROPERTY_VERIFY_HOST_NAMES proprietà. Se il controllo hostname eseguito per impostazione predefinita è disabilitato, l'applicazione dovrà proteggersi dai documenti di metadati contenenti l'indirizzo di un servizio di un'altra parte che non considera attendibile in altro modo.

Per impostazione predefinita, la quantità massima di memoria usata dal runtime dei metadati per deserializzare ed elaborare i metadati è 256.000 e il numero massimo di documenti che possono essere aggiunti è 32. Questi valori predefiniti possono essere sovrascritti da WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE e WS_METADATA_PROPERTY_MAX_DOCUMENTS proprietà. Questi limiti sono progettati per limitare la quantità di download e limitare la quantità di memoria allocata per accumulare i metadati. L'aumento di questi valori può comportare un utilizzo eccessivo della memoria, l'utilizzo della CPU o l'utilizzo della larghezza di banda di rete. Si noti che a causa dell'espansione delle stringhe di dizionario nel formato binario, un piccolo messaggio può portare a una forma deserializzata molto più grande, quindi fare affidamento su messaggi di piccole dimensioni per limitare l'allocazione della memoria dei metadati non è sufficiente quando si usa il formato binario.

Per impostazione predefinita, il numero massimo di alternative ai criteri è 32, anche se può essere sovrascritto da WS_POLICY_PROPERTY_MAX_ALTERNATIVES proprietà. Se un'applicazione esegue un ciclo in ogni alternativa cercando una corrispondenza, potrebbe essere necessario cercare tutte le alternative prima di trovare una corrispondenza. L'aumento del numero massimo di alternative può causare un utilizzo eccessivo della CPU.

Le enumerazioni seguenti fanno parte dell'importazione dei metadati:

Le funzioni seguenti fanno parte dell'importazione dei metadati:

Gli handle seguenti fanno parte dell'importazione di metadati:

Le strutture seguenti fanno parte dell'importazione di metadati: