Metaadatok importálása
A WWSAPI olyan API-elemeket tartalmaz, amelyek a WSDL és a szabályzat végpontokból történő feldolgozására használhatók, és amelyek a végponttal való kommunikációhoz használható információk kinyerésére szolgálnak. Ezeket az API-kat általában akkor használják, ha a végpont által támogatott kommunikációs protokoll még nem ismert.
A metaadatok feldolgozásához használja az alábbi sorrendet:
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
A WSDL és WS-Policy állítások API-nak való megfeleltetéséről a Metaadatok leképezése című témakörben olvashat.
Biztonság
A letöltött metaadatok csak olyan jók, mint a letöltéshez használt cím. Az alkalmazásnak biztosítania kell, hogy megbízható legyen a cím. Emellett az alkalmazásnak biztosítania kell, hogy biztonsági protokoll használatával töltse le a metaadat-dokumentumokat, amelyek nem teszik lehetővé a metaadatok illetéktelen használatát.
Az alkalmazásnak meg kell vizsgálnia a metaadatok által közzétett szolgáltatások címét. Alapértelmezés szerint a futtatókörnyezet biztosítja, hogy a szolgáltatás állomásneve megegyezik a metaadatok letöltéséhez használt eredeti URL-címével, de előfordulhat, hogy az alkalmazás további ellenőrzéseket szeretne végrehajtani. Az alkalmazások WS_METADATA_PROPERTY_VERIFY_HOST_NAMES tulajdonság felülírásával letilthatják a gazdagépnév-ellenőrzést. Ha az alapértelmezett állomásnév-ellenőrzés le van tiltva, az alkalmazásnak védenie kell magát egy másik féltől származó szolgáltatás címét tartalmazó metaadat-dokumentumokkal szemben, amelyekben más módon nem bízik.
Alapértelmezés szerint a metaadat-futtatókörnyezet által a metaadatok deszerializálásához és feldolgozásához használt memória maximális mennyisége 256 ezer, a hozzáadható dokumentumok maximális száma pedig 32. Ezeket az alapértelmezett értékeket felülírhatja WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE és WS_METADATA_PROPERTY_MAX_DOCUMENTS tulajdonságok. Ezek a korlátok a letöltések mennyiségének korlátozására és a lefoglalt memória mennyiségének korlátozására szolgálnak a metaadatok összegyűjtése érdekében. Ezeknek az értékeknek a növelése túlzott memóriahasználathoz, processzorhasználathoz vagy hálózati sávszélesség-használathoz vezethet. Vegye figyelembe, hogy a szótári sztringek bináris formátumban való kibővítése miatt egy kis üzenet sokkal nagyobb deszerializált űrlapot eredményezhet, ezért a bináris formátum használatakor nem elegendő a kis üzenetekre támaszkodni a metaadatok memóriafoglalásának korlátozására.
Alapértelmezés szerint a szabályzat alternatíváinak maximális száma 32, de WS_POLICY_PROPERTY_MAX_ALTERNATIVES tulajdonság felülírhatja. Ha egy alkalmazás végighalad az egyes alternatívákon, és keres egyezést, előfordulhat, hogy az összes alternatívában kell keresnie, mielőtt talál egyezést. Az alternatívák maximális számának növelése túlzott processzorhasználathoz vezethet.
Az alábbi enumerálások a metaadatok importálásának részei:
- WS_METADATA_PROPERTY_ID
- WS_METADATA_STATE
- WS_POLICY_EXTENSION_TYPE
- WS_POLICY_PROPERTY_ID
- WS_POLICY_STATE
- WS_SECURITY_BINDING_CONSTRAINT_TYPE
Az alábbi függvények a metaadatok importálásának részei:
- WsCreateMetadata
- WsFreeMetadata
- WsGetMetadataEndpoints
- WsGetMetadataProperty
- WsGetMissingMetadataDocumentAddress
- WsGetPolicyAlternativeCount
- WsGetPolicyProperty
- WsMatchPolicyAlternative
- WsReadMetadata
- WsResetMetadata
Az alábbi leírók a metaadatok importálásának részei:
Az alábbi struktúrák a metaadatok importálásának részei:
- 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