Importation de métadonnées

WWSAPI inclut des éléments d’API qui peuvent être utilisés pour traiter WSDL et Policy à partir d’un point de terminaison dans le but d’extraire des informations qui peuvent être utilisées pour communiquer avec le point de terminaison. Ces API sont généralement utilisées lorsque le protocole de communication pris en charge par le point de terminaison n’est pas déjà connu.

Utilisez la séquence suivante pour traiter les métadonnées :

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

Pour plus d’informations sur la façon dont les assertions WSDL et WS-Policy correspondent à l’API, consultez la rubrique Mappage des métadonnées .

Sécurité

Les métadonnées téléchargées sont aussi bonnes que l’adresse utilisée pour les télécharger. Une application doit s’assurer que fait confiance à l’adresse. En outre, une application doit s’assurer qu’elle utilise un protocole de sécurité pour télécharger les documents de métadonnées qui n’autorisent pas la falsification des métadonnées.

Une application doit inspecter les adresses des services exposés par les métadonnées. Par défaut, le runtime garantit que le nom d’hôte du service correspond à celui de l’URL d’origine utilisée pour télécharger les métadonnées, mais l’application peut souhaiter effectuer des vérifications supplémentaires. Une application peut désactiver la vérification du nom d’hôte en remplaçant WS_METADATA_PROPERTY_VERIFY_HOST_NAMES propriété. Si le nom d’hôte case activée effectué par défaut est désactivé, l’application doit se protéger contre les documents de métadonnées contenant l’adresse d’un service d’une autre partie qu’elle n’approuve pas d’une autre manière.

Par défaut, la quantité maximale de mémoire utilisée par le runtime de métadonnées pour désérialiser et traiter les métadonnées est de 256 000, et le nombre maximal de documents pouvant être ajoutés est de 32. Ces valeurs par défaut peuvent être remplacées par des propriétés WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE et WS_METADATA_PROPERTY_MAX_DOCUMENTS . Ces limites sont conçues pour limiter la quantité de téléchargements et la quantité de mémoire allouée afin d’accumuler les métadonnées. L’augmentation de ces valeurs peut entraîner une utilisation excessive de la mémoire, une utilisation du processeur ou une consommation de bande passante réseau. Notez qu’en raison de l’expansion des chaînes de dictionnaire au format binaire, un petit message peut entraîner une forme désérialisée beaucoup plus grande. Il n’est donc pas suffisant de s’appuyer sur de petits messages pour limiter l’allocation de mémoire des métadonnées lors de l’utilisation du format binaire.

Par défaut, le nombre maximal d’alternatives de stratégie est de 32, bien qu’il puisse être remplacé par WS_POLICY_PROPERTY_MAX_ALTERNATIVES propriété. Si une application effectue une boucle dans chaque alternative à la recherche d’une correspondance, elle peut avoir besoin de rechercher toutes les alternatives avant de trouver une correspondance. L’augmentation du nombre maximal d’alternatives peut entraîner une utilisation excessive du processeur.

Les énumérations suivantes font partie de l’importation de métadonnées :

Les fonctions suivantes font partie de l’importation de métadonnées :

Les descripteurs suivants font partie de l’importation de métadonnées :

Les structures suivantes font partie de l’importation de métadonnées :