Metadatenimport
Die WWSAPI enthält API-Elemente, die zum Verarbeiten von WSDL und Policy von einem Endpunkt verwendet werden können, um Informationen zu extrahieren, die für die Kommunikation mit dem Endpunkt verwendet werden können. Diese APIs werden in der Regel verwendet, wenn das vom Endpunkt unterstützte Kommunikationsprotokoll noch nicht bekannt ist.
Verwenden Sie die folgende Sequenz, um Metadaten zu verarbeiten:
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
Informationen dazu, wie WSDL und WS-Policy Assertionen der API entsprechen, finden Sie im Thema Metadatenzuordnung.
Sicherheit
Die heruntergeladenen Metadaten sind nur so gut wie die Zum Herunterladen verwendete Adresse. Eine Anwendung sollte sicherstellen, dass die Adresse als vertrauenswürdig gilt. Außerdem sollte eine Anwendung sicherstellen, dass ein Sicherheitsprotokoll zum Herunterladen der Metadatendokumente verwendet wird, die keine Manipulation der Metadaten zulassen.
Eine Anwendung sollte die Adressen der Dienste prüfen, die von den Metadaten verfügbar gemacht werden. Standardmäßig stellt die Laufzeit sicher, dass der Hostname des Diensts mit der der ursprünglichen URL übereinstimmt, die zum Herunterladen der Metadaten verwendet wird, die Anwendung jedoch möglicherweise zusätzliche Überprüfungen durchführen möchte. Eine Anwendung kann die Überprüfung des Hostnamens deaktivieren, indem WS_METADATA_PROPERTY_VERIFY_HOST_NAMES Eigenschaft überschrieben wird. Wenn die Standardmäßige Überprüfung des Hostnamens deaktiviert ist, muss sich die Anwendung vor den Metadatendokumenten schützen, die die Adresse eines Diensts von einer anderen Partei enthalten, der sie auf andere Weise nicht vertraut.
Standardmäßig beträgt die maximale Arbeitsspeichermenge, die von der Metadatenlaufzeit zum Deserialisieren und Verarbeiten der Metadaten verwendet wird, 256k, und die maximale Anzahl von Dokumenten, die hinzugefügt werden können, beträgt 32. Diese Standardwerte können von WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE und WS_METADATA_PROPERTY_MAX_DOCUMENTS Eigenschaften überschrieben werden. Diese Grenzen sind so konzipiert, dass die Anzahl der Downloads begrenzt und die Menge des zugeordneten Arbeitsspeichers begrenzt wird, um die Metadaten zu sammeln. Das Erhöhen dieser Werte kann zu übermäßiger Speicherauslastung, CPU-Auslastung oder Netzwerkbandbreitenverbrauch führen. Beachten Sie, dass aufgrund der Erweiterung von Wörterbuchzeichenfolgen im Binärformat eine kleine Nachricht möglicherweise zu einer viel größeren deserialisierten Form führen kann, sodass die Verwendung des Binärformats auf kleine Nachrichten zum Einschränken der Metadatenspeicherzuweisung nicht ausreicht.
Standardmäßig beträgt die maximale Anzahl von Richtlinienalternativen 32, kann jedoch von WS_POLICY_PROPERTY_MAX_ALTERNATIVES Eigenschaft überschrieben werden. Wenn eine Anwendung jede Alternative durchläuft, die nach einer Übereinstimmung sucht, muss sie möglicherweise alle Alternativen durchsuchen, bevor Sie eine Übereinstimmung finden. Eine Erhöhung der maximalen Anzahl von Alternativen kann zu einer übermäßigen CPU-Auslastung führen.
Die folgenden Enumerationen sind Teil des Metadatenimports:
- WS_METADATA_PROPERTY_ID
- WS_METADATA_STATE
- WS_POLICY_EXTENSION_TYPE
- WS_POLICY_PROPERTY_ID
- WS_POLICY_STATE
- WS_SECURITY_BINDING_CONSTRAINT_TYPE
Die folgenden Funktionen sind Teil des Metadatenimports:
- WsCreateMetadata-
- WsFreeMetadata-
- WsGetMetadataEndpoints-
- WsGetMetadataProperty-
- WsGetMissingMetadataDocumentAddress
- WsGetPolicyAlternativeCount
- WsGetPolicyProperty-
- WsMatchPolicyAlternative
- WsReadMetadata-
- WsResetMetadata-
Die folgenden Handles sind Teil des Metadatenimports:
Die folgenden Strukturen sind Teil des Metadatenimports:
- 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