Impor Metadata

WWSAPI mencakup elemen API yang dapat digunakan untuk memproses WSDL dan Policy dari titik akhir dengan tujuan mengekstrak informasi yang dapat digunakan untuk berkomunikasi dengan titik akhir. API ini biasanya digunakan ketika protokol komunikasi yang didukung oleh titik akhir belum diketahui.

Gunakan urutan berikut untuk memproses metadata:

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

untuk informasi tentang bagaimana pernyataan WSDL dan WS-Policy sesuai dengan API, lihat topik Pemetaan Metadata .

Keamanan

Metadata yang diunduh hanya sebagus alamat yang digunakan untuk mengunduhnya. Aplikasi harus memastikan bahwa mempercayai alamat. Selain itu, aplikasi harus memastikan bahwa aplikasi menggunakan protokol keamanan untuk mengunduh dokumen metadata yang tidak memungkinkan perubahan metadata.

Aplikasi harus memeriksa alamat layanan yang diekspos oleh metadata. Secara default, runtime memastikan bahwa nama host layanan cocok dengan URL asli yang digunakan untuk mengunduh metadata, tetapi aplikasi mungkin ingin melakukan pemeriksaan tambahan. Aplikasi dapat menonaktifkan verifikasi nama host dengan menimpa properti WS_METADATA_PROPERTY_VERIFY_HOST_NAMES . Jika pemeriksaan nama host yang dilakukan secara default dinonaktifkan, aplikasi harus melindungi dirinya dari dokumen metadata yang berisi alamat layanan dari pihak lain yang tidak dipercaya dengan cara lain.

Secara default, jumlah maksimum memori yang digunakan oleh runtime metadata untuk mendeserialisasi dan memproses metadata adalah 256k, dan jumlah maksimum dokumen yang dapat ditambahkan adalah 32. Nilai default ini dapat ditimpa oleh properti WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE dan WS_METADATA_PROPERTY_MAX_DOCUMENTS . Batas ini dirancang untuk membatasi jumlah unduhan dan membatasi jumlah memori yang dialokasikan untuk mengakumulasi metadata. Meningkatkan nilai-nilai ini dapat menyebabkan penggunaan memori yang berlebihan, penggunaan CPU, atau konsumsi bandwidth jaringan. Perhatikan bahwa karena perluasan string kamus dalam format biner, pesan kecil dapat menyebabkan bentuk deserialisasi yang jauh lebih besar, sehingga mengandalkan pesan kecil untuk membatasi alokasi memori metadata tidak cukup saat menggunakan format biner.

Secara default, jumlah maksimum alternatif kebijakan adalah 32, meskipun dapat ditimpa oleh properti WS_POLICY_PROPERTY_MAX_ALTERNATIVES . Jika aplikasi mengulang setiap alternatif mencari kecocokan, aplikasi mungkin perlu mencari semua alternatif sebelum menemukan kecocokan. Meningkatkan jumlah maksimum alternatif dapat menyebabkan pemanfaatan CPU yang berlebihan.

Enumerasi berikut adalah bagian dari impor metadata:

Fungsi berikut adalah bagian dari impor metadata:

Handel berikut adalah bagian dari impor metadata:

Struktur berikut adalah bagian dari impor metadata: