Поделиться через


Импорт метаданных

WWSAPI включает элементы API, которые можно использовать для обработки WSDL и политики из конечной точки с целью извлечения сведений, которые можно использовать для взаимодействия с конечной точкой. Эти API обычно используются, когда протокол связи, поддерживаемый конечной точкой, еще неизвестен.

Используйте следующую последовательность для обработки метаданных:

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

Сведения о том, как утверждения WSDL и WS-Policy соответствуют API, см. в разделе Сопоставление метаданных .

Безопасность

Скачанные метаданные так же хорошо, как и адрес, используемый для их скачивания. Приложение должно убедиться, что доверяет адресу. Кроме того, приложение должно использовать протокол безопасности для скачивания документов метаданных, которые не допускают незаконного изменения метаданных.

Приложение должно проверять адреса служб, предоставляемых метаданными. По умолчанию среда выполнения гарантирует, что имя узла службы совпадает с именем исходного URL-адреса, используемого для скачивания метаданных, но приложению может потребоваться выполнить дополнительные проверки. Приложение может отключить проверку имени узла, перезаписав свойство WS_METADATA_PROPERTY_VERIFY_HOST_NAMES . Если проверка имени узла, выполняемая по умолчанию, отключена, приложению потребуется защититься от документов метаданных, содержащих адрес службы от другой стороны, которому оно не доверяет каким-то другим способом.

По умолчанию максимальный объем памяти, используемый средой выполнения метаданных для десериализации и обработки метаданных, составляет 256 кб, а максимальное количество добавляемых документов — 32. Эти значения по умолчанию могут быть перезаписаны свойствами WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE и WS_METADATA_PROPERTY_MAX_DOCUMENTS . Эти границы предназначены для ограничения количества скачиваний и объема памяти, выделенной для накопления метаданных. Увеличение этих значений может привести к чрезмерному использованию памяти, загрузке ЦП или пропускной способности сети. Обратите внимание, что из-за расширения строк словаря в двоичном формате небольшое сообщение может привести к гораздо большей десериализованной форме, поэтому использование небольших сообщений для ограничения выделения памяти метаданных недостаточно при использовании двоичного формата.

По умолчанию максимальное количество альтернативных политик составляет 32, хотя его можно перезаписать с помощью WS_POLICY_PROPERTY_MAX_ALTERNATIVES свойства . Если приложение циклически просматривает каждую альтернативу в поисках совпадения, ему может потребоваться выполнить поиск по всем альтернативным вариантам, прежде чем найти совпадение. Увеличение максимального числа альтернатив может привести к чрезмерной загрузке ЦП.

Следующие перечисления являются частью импорта метаданных:

Следующие функции являются частью импорта метаданных:

Следующие дескрипторы являются частью импорта метаданных:

Следующие структуры являются частью импорта метаданных: