Udostępnij za pośrednictwem


Importowanie metadanych

WWSAPI zawiera elementy interfejsu API, które mogą służyć do przetwarzania WSDL i zasad z punktu końcowego z celem wyodrębniania informacji, które mogą służyć do komunikowania się z punktem końcowym. Te interfejsy API są zwykle używane, gdy protokół komunikacyjny obsługiwany przez punkt końcowy nie jest już znany.

Użyj następującej sekwencji, aby przetworzyć metadane:

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

Aby uzyskać informacje na temat sposobu, w jaki asercji WSDL i WS-Policy odpowiadają interfejsowi API, zobacz temat Mapowanie metadanych.

Bezpieczeństwo

Pobrane metadane są tylko tak dobre, jak adres użyty do jego pobrania. Aplikacja powinna zapewnić zaufanie do adresu. Ponadto aplikacja powinna zapewnić, że używa protokołu zabezpieczeń do pobierania dokumentów metadanych, które nie zezwalają na manipulowanie metadanymi.

Aplikacja powinna sprawdzić adresy usług uwidocznionych przez metadane. Domyślnie środowisko uruchomieniowe gwarantuje, że nazwa hosta usługi jest zgodna z oryginalnym adresem URL używanym do pobierania metadanych, ale aplikacja może chcieć wykonać dodatkowe kontrole. Aplikacja może wyłączyć weryfikację nazwy hosta przez zastąpienie właściwości WS_METADATA_PROPERTY_VERIFY_HOST_NAMES. Jeśli nazwa hosta jest domyślnie wyłączona, aplikacja będzie musiała chronić się przed dokumentami metadanymi zawierającymi adres usługi od innej firmy, która nie ufa w inny sposób.

Domyślnie maksymalna ilość pamięci używanej przez środowisko uruchomieniowe metadanych do deserializacji i przetwarzania metadanych wynosi 256 tys., a maksymalna liczba dokumentów, które można dodać, wynosi 32. Te wartości domyślne można zastąpić za pomocą właściwości WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE i WS_METADATA_PROPERTY_MAX_DOCUMENTS. Te granice mają na celu ograniczenie ilości pobierania i ograniczenie ilości pamięci przydzielonej w celu zebrania metadanych. Zwiększenie tych wartości może prowadzić do nadmiernego użycia pamięci, użycia procesora CPU lub zużycia przepustowości sieci. Należy pamiętać, że ze względu na rozszerzenie ciągów słownika w formacie binarnym mały komunikat może prowadzić do znacznie większej deserializacji formularza, więc poleganie na małych komunikatach w celu ograniczenia alokacji pamięci metadanych nie jest wystarczające w przypadku korzystania z formatu binarnego.

Domyślnie maksymalna liczba alternatyw zasad wynosi 32, chociaż można ją zastąpić przez właściwość WS_POLICY_PROPERTY_MAX_ALTERNATIVES. Jeśli aplikacja przechodzi przez każdą alternatywę wyszukując dopasowanie, może być konieczne wyszukanie wszystkich alternatyw przed znalezieniem dopasowania. Zwiększenie maksymalnej liczby alternatyw może prowadzić do nadmiernego wykorzystania procesora CPU.

Następujące wyliczenia są częścią importowania metadanych:

Następujące funkcje są częścią importowania metadanych:

Następujące dojścia są częścią importowania metadanych:

Następujące struktury są częścią importowania metadanych: