Import metadat
WWSAPI obsahuje prvky rozhraní API, které je možné použít ke zpracování WSDL a zásad z koncového bodu s cílem extrahovat informace, které je možné použít ke komunikaci s koncovým bodem. Tato rozhraní API se obvykle používají, když komunikační protokol podporovaný koncovým bodem ještě není známý.
Ke zpracování metadat použijte následující sekvenci:
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
Informace o tom, jak WSDL a WS-Policy kontrolní výrazy odpovídají rozhraní API, naleznete v tématu mapování metadat.
Bezpečnost
Stažená metadata jsou stejná jako adresa použitá ke stažení. Aplikace by měla zajistit, aby adresa důvěřovala. Aplikace by také měla zajistit, aby ke stažení dokumentů metadat, které nepovolují manipulaci s metadaty, používala protokol zabezpečení.
Aplikace by měla kontrolovat adresy služeb vystavených metadaty. Modul runtime ve výchozím nastavení zajišťuje, aby název hostitele služby odpovídal názvu původní adresy URL použité ke stažení metadat, ale aplikace může chtít provést další kontroly. Aplikace může ověření názvu hostitele zakázat přepsáním WS_METADATA_PROPERTY_VERIFY_HOST_NAMES vlastnosti. Pokud je kontrola názvu hostitele ve výchozím nastavení zakázaná, aplikace se bude muset chránit před dokumenty metadat obsahujícími adresu služby od jiné strany, které jiným způsobem nedůvěřuje.
Ve výchozím nastavení je maximální množství paměti používané modulem runtime metadat k deserializaci a zpracování metadat 256 tisíc a maximální počet dokumentů, které lze přidat, je 32. Tyto výchozí hodnoty lze přepsat WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE a WS_METADATA_PROPERTY_MAX_DOCUMENTS vlastnostmi. Tyto hranice jsou navrženy tak, aby omezovaly množství stahování a omezovaly množství paměti přidělené pro kumulování metadat. Zvýšení těchto hodnot může vést k nadměrnému využití paměti, využití procesoru nebo spotřebě šířky pásma sítě. Všimněte si, že vzhledem k rozšíření řetězců slovníku v binárním formátu může malá zpráva vést k mnohem větší deserializované formě, takže při použití binárního formátu nestačí spoléhat na malé zprávy, které omezují přidělení paměti metadat.
Ve výchozím nastavení je maximální počet alternativ zásad 32, i když může být přepsán WS_POLICY_PROPERTY_MAX_ALTERNATIVES vlastností. Pokud aplikace prochází každou alternativu, která hledá shodu, může být potřeba vyhledat všechny alternativy před vyhledáním shody. Zvýšení maximálního počtu alternativ může vést k nadměrnému využití procesoru.
Následující výčty jsou součástí importu metadat:
- WS_METADATA_PROPERTY_ID
- WS_METADATA_STATE
- WS_POLICY_EXTENSION_TYPE
- WS_POLICY_PROPERTY_ID
- WS_POLICY_STATE
- WS_SECURITY_BINDING_CONSTRAINT_TYPE
Import metadat tvoří následující funkce:
- wsCreateMetadata
- wsFreeMetadata
- wsGetMetadataEndpoints
- wsGetMetadataProperty
- wsGetMissingMetadataDocumentAddress
- WsGetPolicyAlternativeCount
- WsGetPolicyProperty
- WsMatchPolicyAlternative
- wsReadMetadata
- wsResetMetadata
Následující popisovače jsou součástí importu metadat:
Import metadat tvoří následující struktury:
- WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_CHANNEL_PROPERTY_CONSTRAINT
- WS_ENDPOINT_POLICY_EXTENSION
- WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT
- WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_METADATA_ENDPOINT
- WS_METADATA_ENDPOINTS
- WS_METADATA_PROPERTY
- WS_POLICY_CONSTRAINTS
- WS_POLICY_EXTENSION
- WS_POLICY_PROPERTIES
- WS_POLICY_PROPERTY
- WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT
- WS_SECURITY_BINDING_CONSTRAINT
- WS_SECURITY_BINDING_PROPERTY_CONSTRAINT
- WS_SECURITY_CONSTRAINTS
- WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_SECURITY_PROPERTY_CONSTRAINT
- WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT
- WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT
- WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT