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 megadása a WS_SERVICE_HOSTWS_SERVICE_METADATA tulajdonságában.
- Adja meg a szolgáltatás nevét a WS_SERVICE_HOSTWS_SERVICE_METADATA tulajdonságában.
- Adja meg az egyes végpontok portjait a WS_SERVICE_ENDPOINTWS_SERVICE_ENDPOINT_PROPERTY_METADATA tulajdonságával.
- Engedélyezze egy vagy több WS_SERVICE_ENDPOINT struktúrák számára a WS-MetadataExchange kérések kiszolgálását.
- Ha szeretné, adja meg a WS_SERVICE_ENDPOINT_PROPERTY_METADATA_EXCHANGE_URL_SUFFIX a WS_SERVICE_ENDPOINT_PROPERTY_ID enumerálásban az adott cím Ws-MetadataExchange kéréseinek szervizelésére.
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. |