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


Szolgáltatásgazda

A szolgáltatásgazda egy folyamaton belüli szolgáltatás üzemeltetésére szolgáló futtatókörnyezet.

A szolgáltatás egy vagy több végpontot konfigurálhat egy szolgáltatás gazdagépen belül.

Szolgáltatásvégpontot tartalmazó szolgáltatásgazda struktúráját bemutató diagram.

Szolgáltatás-gazdagép létrehozása

A szolgáltatásgazda létrehozása előtt a szolgáltatásnak meg kell határoznia a végpontjait. A szolgáltatás gazdagépének végpontja a WS_SERVICE_ENDPOINT struktúrában van megadva, és az alábbi információk határozzák meg:

WS_SERVICE_ENDPOINT serviceEndpoint = {0};
const WS_SERVICE_ENDPOINT* serviceEndpoints[1];
serviceEndpoints[0] = &serviceEndpoint;
WS_STRING url = WS_STRING_VALUE(L"net.tcp://+/Example");

// Method based service contract for the service
static WS_SERVICE_CONTRACT calculatorContract = 
{
    &calculatorContractDescription, // comes from a generated header.
    NULL,
    &calculatorFunctions, // specified by the application
};

serviceEndpoint.address.url = &url;
serviceEndpoint.binding.channelBinding =  WS_TCP_CHANNEL_BINDING; 
serviceEndpoint.contract = &calculatorContract;  
serviceEndpoint.channelType = WS_CHANNEL_TYPE_DUPLEX_SESSION; 
serviceEndpoint.authorizationCallback = AuthorizationCallback; // Authorization callback.

A SOAP csak egyirányú szerződéseket támogat az UDP-ből, amelyet WS_UDP_CHANNEL_BINDING képvisel a WS_CHANNEL_BINDING enumerálásban.

A végpont definiálása után továbbítható a WsCreateServiceHost függvénynek, amely a WS_SERVICE_ENDPOINT struktúrákhoz mutató tömböt vesz fel.

HRESULT hr = WsCreateServiceHost (serviceEndpoints, 1, NULL, 0, &host, error);

Az alkalmazások opcionálisan szolgáltatástulajdonságokatWsCreateServiceHost a szolgáltatásgazda egyéni beállításainak konfigurálásához.

Egy alkalmazás megnyitja a szolgáltatás gazdagépét az ügyfélkérések fogadásának megkezdéséhez.

WsOpenServiceHost(serviceHost, NULL, NULL);

A szolgáltatásgazda megnyitása után az alkalmazás bezárhatja, ha nincs több olyan művelet, amely megköveteli. Vegye figyelembe, hogy ez nem adja ki az erőforrásait, és a WsResetServiceHost egy későbbi hívásával újra megnyitható.

WsCloseServiceHost(serviceHost, NULL, NULL);

A szolgáltatás gazdagépének bezárása után egy alkalmazás visszaállíthatja a szolgáltatás gazdagépét újrahasználatra.

WsResetServiceHost(serviceHost, NULL);

Ha az alkalmazás elkészült a szolgáltatás gazdagépével, felszabadíthatja a szolgáltatás gazdagépéhez társított erőforrásokat a WsFreeServiceHost függvény meghívásával. Vegye figyelembe, hogy a függvény meghívása előtt WsCloseServiceHost kell meghívni.

WsFreeServiceHost(serviceHost, NULL);

Az egyéni állapot szolgáltatás gazdagéphez való csatolásáról további információt Felhasználói gazdagép állapota

Az adott végponthoz tartozó szolgáltatásgazda engedélyezésével kapcsolatos információkért lásd szolgáltatásengedélyezési.

A szolgáltatásműveletek és szolgáltatási szerződések szolgáltatásszerződések megvalósításával kapcsolatos információt a szolgáltatásműveletek és szolgáltatási szerződéstémakörökben talál.

Biztonság

Az alkalmazások a következő tulajdonságok használatával szabályozhatják a szolgáltatásgazda által az alkalmazás nevében lefoglalt erőforrások mennyiségét:

Mindegyik tulajdonsághoz biztonságos alapértelmezett beállításokat választunk, az alkalmazásoknak körültekintőnek kell lenniük, ha módosítani szeretné ezeket a tulajdonságokat. A fent említett tulajdonságokon kívül csatorna, figyelő és üzenet is módosítható, adott tulajdonságokat az alkalmazás is módosíthatja. A beállítások módosítása előtt tekintse meg ezeknek az összetevőknek a biztonsági szempontjait.

Emellett a WWSAPI szolgáltatásgazda API használata során a következő alkalmazástervezési szempontokat kell alaposan értékelni:

  • A MEX használatakor az alkalmazásoknak óvatosnak kell lenniük arra, hogy ne tegyenek közzé bizalmas adatokat. Ha a MEX-en keresztül közzétett adatok természete érzékeny, az alkalmazások dönthetnek úgy, hogy biztonságos kötéssel konfigurálják a MEX-végpontot, amely legalább hitelesítést igényel, és a végpont részeként implementálják az engedélyezést a WS_SERVICE_SECURITY_CALLBACKhasználatával.
  • Alapértelmezés szerint az WS_SERVICE_PROPERTY_FAULT_DISCLOSURE tulajdonság letiltja a szolgáltatás gazdagépén a hibákon keresztüli részletes hibainformációkat. Az alkalmazás saját belátása szerint a hiba részeként részletes hibainformációkat küldhet. Ez azonban adatfeltárást eredményezhet, ezért javasoljuk, hogy ezt a beállítást csak hibakeresési forgatókönyvek esetén módosítsa.
  • Az alapprofil 2.0-s és XML-szerializálásán túl a szolgáltatásgazda nem végez ellenőrzést a szolgáltatásműveleti paraméterek részeként kapott adattartalomon. Az alkalmazás feladata az összes paraméter-ellenőrzés önálló végrehajtása.
  • Az engedélyezés nem a szolgáltatásgazda részeként van implementálva. Az alkalmazások azonban saját engedélyezési sémát implementálhatnak WS_SECURITY_DESCRIPTION és a WS_SERVICE_SECURITY_CALLBACKhasználatával.
  • Az alkalmazás felelőssége, hogy biztonságos kötéseket használjon a végpontján. A szolgáltatás gazdagépe nem biztosít semmilyen biztonságot a végponton konfiguráltnál.

A szolgáltatásgazda az alábbi API-elemeket használja.

Visszahívási Leírás
WS_SERVICE_ACCEPT_CHANNEL_CALLBACK Akkor hívható meg, ha a szolgáltatásgazda elfogad egy csatornát egy végpontfigyelőn.
WS_SERVICE_CLOSE_CHANNEL_CALLBACK Akkor hívható meg, ha egy csatorna bezárul vagy megszakad egy végponton.

 

Felsorolás Leírás
WS_SERVICE_ENDPOINT_PROPERTY_ID Nem kötelező paraméterek a WS_SERVICE_ENDPOINTkonfigurálásához.
WS_SERVICE_HOST_STATE Azok az állapotok, amelyekben egy szolgáltatás gazdagép lehet.
WS_SERVICE_PROPERTY_ID Nem kötelező paraméterek a szolgáltatás gazdagépének konfigurálásához.

 

Funkció Leírás
WsAbortServiceHost Megszakítja és megszakítja az aktuális műveleteket a szolgáltatás gazdagépén.
WsCloseServiceHost Bezárja az összes figyelőt, hogy az ügyfél ne fogadjon el új csatornákat.
WsCreateServiceHost Létrehoz egy szolgáltatás-gazdagépet.
WsFreeServiceHost Felszabadítja a szolgáltatásgazda objektumhoz társított memóriát.
WsGetServiceHostProperty Lekéri a megadott Szolgáltatásgazda tulajdonságot.
WsOpenServiceHost Megnyitja a szolgáltatás-gazdagépet a kommunikációhoz, és elindítja a figyelőket az összes végponton.
WsResetServiceHost Alaphelyzetbe állítja a szolgáltatás gazdagépét az újbóli használathoz, és alaphelyzetbe állítja a mögöttes csatornát és a figyelőket az újrafelhasználáshoz.

 

Fogantyú Leírás
WS_SERVICE_HOST Egy szolgáltatás gazdagépére való hivatkozáshoz használt átlátszatlan típus.

 

Szerkezet Leírás
WS_SERVICE_ENDPOINT Egy szolgáltatás gazdagépen lévő egyedi végpontot jelöl.
WS_SERVICE_ENDPOINT_PROPERTY Szolgáltatásspecifikus beállítást ad meg.
WS_SERVICE_PROPERTY Szolgáltatásspecifikus beállítást ad meg.
WS_SERVICE_PROPERTY_ACCEPT_CALLBACK Megadja a visszahívást, amelyet a csatorna sikeres elfogadásakor hív meg.
WS_SERVICE_PROPERTY_CLOSE_CALLBACK Megadja a visszahívást, amelyet egy csatorna bezárásakor hív meg.