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


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

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. Если приложение выполняет цикл по каждому альтернативному поиску совпадения, может потребоваться выполнить поиск всех альтернативных вариантов, прежде чем найти совпадение. Увеличение максимального числа альтернативных вариантов может привести к чрезмерному использованию ЦП.

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

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

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

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