Dela via


Metadataimport

WWSAPI innehåller API-element som kan användas för att bearbeta WSDL och policy från en slutpunkt med målet att extrahera information som kan användas för att kommunicera med slutpunkten. Dessa API:er används vanligtvis när kommunikationsprotokollet som stöds av slutpunkten inte redan är känt.

Använd följande sekvens för att bearbeta metadata:

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

Information om hur WSDL- och WS-Policy-försäkran motsvarar API:et finns i avsnittet metadatamappning.

Säkerhet

De nedladdade metadata är bara lika bra som den adress som används för att ladda ned dem. Ett program bör se till att är betrodda adressen. Dessutom bör ett program se till att det använder ett säkerhetsprotokoll för att ladda ned metadatadokumenten som inte tillåter manipulering av metadata.

Ett program bör kontrollera adresserna för de tjänster som exponeras av metadata. Som standard ser körningen till att tjänstens värdnamn matchar den ursprungliga URL:en som användes för att ladda ned metadata, men programmet kanske vill utföra ytterligare kontroller. Ett program kan inaktivera verifieringen av värdnamnet genom att skriva över WS_METADATA_PROPERTY_VERIFY_HOST_NAMES egenskap. Om värdnamnskontrollen som görs som standard är inaktiverad måste programmet skydda sig mot metadatadokumenten som innehåller adressen till en tjänst från en annan part som det inte litar på på något annat sätt.

Som standard är den maximala mängden minne som används av metadatakörningen för att deserialisera och bearbeta metadata 256 000, och det maximala antalet dokument som kan läggas till är 32. Dessa standardvärden kan skrivas över av WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE och WS_METADATA_PROPERTY_MAX_DOCUMENTS egenskaper. Dessa gränser är utformade för att begränsa mängden nedladdningar och begränsa mängden minne som allokeras för att samla metadata. Om du ökar dessa värden kan det leda till överdriven minnesanvändning, cpu-användning eller nätverksbandbreddsförbrukning. Observera att på grund av expansionen av ordlistesträngar i binärt format kan ett litet meddelande leda till ett mycket större deserialiserat formulär, så att förlita sig på små meddelanden för att begränsa metadataminnesallokering räcker inte när du använder binärt format.

Som standard är det maximala antalet principalternativ 32, även om det kan skrivas över av WS_POLICY_PROPERTY_MAX_ALTERNATIVES egenskap. Om ett program loopar igenom varje alternativ och letar efter en matchning kan det behöva söka efter alla alternativ innan du hittar en matchning. Om du ökar det maximala antalet alternativ kan det leda till överdriven processoranvändning.

Följande uppräkningar är en del av metadataimporten:

Följande funktioner är en del av metadataimporten:

Följande referenser är en del av metadataimporten:

Följande strukturer är en del av metadataimporten: