Megosztás a következőn keresztül:


Szolgáltatás metaadatai

A WWSAPI szolgáltatás gazdagépe támogatja a végpontok WS-MetadataExchange. Az alábbi lépésekkel engedélyezheti az ilyen metaadatok cseréjét a szolgáltatás gazdagépén:

Metaadat-dokumentumok/szolgáltatásnév megadása a szolgáltatás gazdagépén

Az első lépés a szolgáltatásgazda metaadat-dokumentumainak megadása. Ehhez gyűjtse össze az egyes dokumentumokat WS_XML_STRING*-ok tömbjeként. Ezek a sztringek lehetnek XML-séma, WSDL vagy WS-Policy dokumentum. Ez a WS_SERVICE_PROPERTY_METADATA tulajdonságon keresztül van megadva.

Az alkalmazások megadhatják a szolgáltatásnevet és a névteret is a WS_SERVICE_METADATArészeként. Ha a metaadat-dokumentum nem adja meg az adott szolgáltatásnév szolgáltatáselemét, a szolgáltatásmodell létrehoz egy szolgáltatáselemet a szolgáltatás megfelelő WSDL-portjaival.

WS_SERVICE_METADATA_DOCUMENT document = {0};
WS_STRING documentName = WS_STRING_VALUE(L"a.wsdl");
document.name = &documentName;
document.content = &wsdlDocument
WS_SERVICE_METADATA_DOCUMENT** metadataDocuments [] = {&document};
WS_SERVICE_METADATA serviceMetadata = {0};
// Specify Metadata documents
serviceMetadata.count = WsCountOf(metadataDocuments);
serviceMetadata.documents = &metadataDocuments;
// Specify service name
serviceMetadata.serviceName = &serviceName;
serviceMetadata.serviceNs = &serviceNamespace;


WS_SERVICE_PROPERTY serviceProperties[1] = {0};
serviceProperties[0].id = WS_SERVICE_PROPERTY_METADATA;
serviceProperties[0].value =  &serviceMetadata;
serviceProperties[0].ValueSize = sizeof(serviceMetadata);

Vegye figyelembe, hogy az egyes metaadat-dokumentumok ellenőrzése nem történik meg a dokumentumokon. Az alkalmazás feladata a dokumentumok tartalmának ellenőrzése és annak biztosítása, hogy az összes importútvonal viszonylagos legyen megadva.

A megadott névtér annak a dokumentumnak a megkeresésére szolgál, amelyben a szolgáltatáselemet a szolgáltatásgazda hozzáadja.

Szolgáltatáselem hozzáadása a WSDL-dokumentumhoz

A szolgáltatásgazda lehetővé teszi az alkalmazás számára egy szolgáltatáselem hozzáadását a nevében, ha még nincs megadva. A viselkedés engedélyezéséhez az alkalmazásnak meg kell adnia a serivceName és serviceNs mezőket a WS_SERVICE_METADATA struktúrában. Ha a serviceName és a serviceN is NULL nincs szolgáltatáselem hozzáadva a WSDL-dokumentumhoz. Mindkettő a serviceElement hozzáadására szolgáló dokumentum azonosítására szolgál.

Ha WS_SERVICE_PROPERTY_METADATA tulajdonság nincs megadva, a szolgáltatás gazdagépén nem történik metaadat-kihangosítás.

A port megadása a WS_SERVICE_ENDPOINT

Ahhoz, hogy egy WS_SERVICE_ENDPOINT portként elérhető legyen a WSDL-dokumentum szolgáltatáselemén belül, az alkalmazásnak meg kell adnia WS_SERVICE_ENDPOINT_PROPERTY_METADATA tulajdonságot rajta.

WS_SERVICE_ENDPOINT_METADATA endpointPort = {0}
endpointPort.name = &portName;
endpointPort.bindingName = &bindingName;
endpointPort.bindingNs = &bindingNs;

WS_SERVICE_ENDPOINT_PROPERTY serviceProperties[1] = {0};
serviceProperties[0].id = WS_SERVICE_ENDPOINT_PROPERTY_METADATA;
serviceProperties[0].value =  &endpointPort;
serviceProperties[0].valueSize = sizeof(endpointPort);

Feltételezzük, hogy a kötés nevére és névterére való hivatkozás megtalálható a szolgáltatás gazdagépén a WS_SERVICE_PROPERTY_METADATA részeként megadott dokumentumokban. A futtatókörnyezet nem ellenőrzi ezt az alkalmazás nevében.

WS-MetadataExchange-karbantartás engedélyezése a WS_SERVICE_ENDPOINT

A WS-MetadataExchange kérések kiszolgálásához a szolgáltatás gazdagépének legalább egy olyan végponttal kell rendelkeznie, amely engedélyezve van a WS-MetadataExchange kérések karbantartásához. Ez a WS_SERVICE_ENDPOINTWS-MetadataExchange megfelelő verziójának beállításával történik.

WS_METADATA_EXCHANGE_TYPE metadataExchangeType = WS_METADATA_EXCHANGE_TYPE_MEX;
WS_SERVICE_ENDPOINT_PROPERTY serviceProperties[1] = {0};
serviceProperties[0].id = WS_SERVICE_ENDPOINT_PROPERTY_METADATA_EXCHANGE_TYPE;
serviceProperties[0].value =  &metadataExchangeType;
serviceProperties[0].ValueSize = sizeof(metadataExchangeType);

HTTP GET-karbantartás engedélyezése WS_SERVICE_ENDPOINT

AHTTP GET-kérelmek kiszolgálásához a szolgáltatás gazdagépének legalább egy végpontot engedélyeznie kell a WS-MetadataExchange kérések karbantartásához. Ez a WS_SERVICE_ENDPOINTWS-MetadataExchange megfelelő verziójának beállításával történik.

WS_METADATA_EXCHANGE_TYPE metadataExchangeType = WS_METADATA_EXCHANGE_TYPE_HTTP_GET;
WS_SERVICE_ENDPOINT_PROPERTY serviceProperties[1] = {0};
serviceProperties[0].id = WS_SERVICE_ENDPOINT_PROPERTY_METADATA_EXCHANGE_TYPE;
serviceProperties[0].value =  &metadataExchangeType;
serviceProperties[0].ValueSize = sizeof(metadataExchangeType);

URL-utótag megadása Ws-MetadataExchange kérésekhez

Az alkalmazások opcionálisan csak egy adott útvonalon engedélyezhetik a WS-MetadataExchange kéréseinek elfogadását. Ez az adott WS_SERVICE_ENDPOINT utótagjának megadásával történik. Ez az utótag as-is összefűzve a WS_SERVICE_ENDPOINT tényleges URL-címével. A program az összefűzött sztringet használja a kapott "to" fejléc url-címeként.

const WS_STRING suffix = WS_STRING_VALUE(L"mex");
WS_SERVICE_ENDPOINT_PROPERTY serviceProperties[1] = {};
serviceProperties[0].id = WS_SERVICE_ENDPOINT_PROPERTY_METADATA_EXCHANGE_URL_SUFFIX;
serviceProperties[0].value =  &suffix;
serviceProperties[0].valueSize = sizeof(suffix);

A következő API-elemek a szolgáltatás metadához kapcsolódnak.

Felsorolás Leírás
WS_METADATA_EXCHANGE_TYPE Engedélyezi vagy letiltja WS-MetadataExchange és HTTP GET-karbantartást a végponton.

 

Szerkezet Leírás
WS_SERVICE_ENDPOINT_METADATA A végpont portelemét jelöli.
WS_SERVICE_METADATA A szolgáltatás metaadat-dokumentumtömbjének megadása.
WS_SERVICE_METADATA_DOCUMENT Megadja a szolgáltatás metaadatait alkotó egyes dokumentumokat.