Condividi tramite


Importazione dei 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 come l'indirizzo usato per scaricarlo. Un'applicazione deve assicurarsi che sia 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 con i metadati.

Un'applicazione deve controllare 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 la proprietà WS_METADATA_PROPERTY_VERIFY_HOST_NAMES . Se il controllo hostname eseguito per impostazione predefinita è disabilitato, l'applicazione dovrà proteggersi dai documenti di metadati contenenti l'indirizzo di un servizio da un'altra parte che non si considera attendibile in altro modo.

Per impostazione predefinita, la quantità massima di memoria usata dal runtime dei metadati per deserializzare ed elaborare i metadati è 256k 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ò causare 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 del dizionario nel formato binario, un piccolo messaggio può causare una forma deserializzata molto più grande, quindi affidarsi a 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 dei criteri è 32, anche se può essere sovrascritto dalla proprietà WS_POLICY_PROPERTY_MAX_ALTERNATIVES . Se un'applicazione scorre 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 dei metadati:

Le strutture seguenti fanno parte dell'importazione dei metadati: