다음을 통해 공유


메타데이터 가져오기

WWSAPI에는 엔드포인트와 통신하는 데 사용할 수 있는 정보를 추출하기 위해 엔드포인트에서 WSDL 및 정책을 처리하는 데 사용할 수 있는 API 요소가 포함되어 있습니다. 이러한 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 속성을 덮어써서 호스트 이름 확인을 사용하지 않도록 설정할 수 있습니다. 기본적으로 수행되는 호스트 이름 검사 사용하지 않도록 설정된 경우 애플리케이션은 다른 방법으로 신뢰하지 않는 다른 당사자의 서비스 주소가 포함된 메타데이터 문서로부터 자신을 보호해야 합니다.

기본적으로 메타데이터 런타임에서 메타데이터를 역직렬화하고 처리하는 데 사용되는 최대 메모리 양은 256k이고 추가될 수 있는 최대 문서 수는 32개입니다. 이러한 기본값은 WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZEWS_METADATA_PROPERTY_MAX_DOCUMENTS 속성으로 덮어쓸 수 있습니다. 이러한 범위는 다운로드 양을 제한하고 메타데이터를 누적하기 위해 할당된 메모리 양을 제한하도록 설계되었습니다. 이러한 값을 늘리면 과도한 메모리 사용량, CPU 사용량 또는 네트워크 대역폭 소비가 발생할 수 있습니다. 이진 형식의 사전 문자열 확장으로 인해 작은 메시지가 훨씬 더 큰 역직렬화된 형식으로 이어질 수 있으므로 이진 형식을 사용할 때는 작은 메시지를 사용하여 메타데이터 메모리 할당을 제한하는 것으로 충분하지 않습니다.

기본적으로 정책 대안의 최대 수는 32이지만 WS_POLICY_PROPERTY_MAX_ALTERNATIVES 속성으로 덮어쓸 수 있습니다. 애플리케이션이 각 대안을 반복하여 일치 항목을 찾는 경우 일치 항목을 찾기 전에 모든 대안을 검색해야 할 수 있습니다. 대안의 최대 수를 늘리면 CPU 사용률이 지나치게 높아질 수 있습니다.

다음 열거형은 메타데이터 가져오기의 일부입니다.

다음 함수는 메타데이터 가져오기의 일부입니다.

다음 핸들은 메타데이터 가져오기의 일부입니다.

다음 구조는 메타데이터 가져오기의 일부입니다.