Sdílet prostřednictvím


Proxy služby

Proxy služby je proxy na straně klienta pro službu. Proxy služby umožňuje aplikacím odesílat a přijímat zprávy přes kanál jako volání metody.

Proxy služby se vytvářejí podle potřeby, otevírají se, používají se k volání služby a jsou zavřené, pokud už je nepotřebujete. Případně může aplikace opakovaně používat proxy služby k opakovanému připojení ke stejné službě bez výdajů na čas a prostředky potřebné k inicializaci proxy serveru služby více než jednou. Následující diagram znázorňuje tok možných stavů proxy služby a volání nebo událostí funkce, které vedou z jednoho stavu do druhého.

diagram znázorňující stavy proxy služby a volání nebo události funkce, které vedou z jednoho stavu do druhého

Tyto stavy proxy serveru služby jsou uvedené v WS_SERVICE_PROXY_STATE výčtu.

Jak znázorňuje předchozí diagram a následující kód, proxy služby se vytvoří voláním funkce WsCreateServiceProxy. Jako parametry pro toto volání poskytuje WWSAPI následující výčty:

Přijímá také volitelné parametry pomocí následujících datových typů:

Po vytvoření proxy služby vrátí funkce WsCreateServiceProxy odkaz na proxy služby WS_SERVICE_PROXYprostřednictvím výstupního parametru.

WS_SERVICE_PROXY* serviceProxy = NULL;
hr = WsCreateServiceProxy (
    WS_TCP_CHANNEL_BINDING, 
    WS_CHANNEL_TYPE_DUPLEX_SESSION, 
    NULL, 
    NULL, 
    0, 
    NULL,
    0,
    &serviceProxy, 
    error);

Po vytvoření proxy serveru služby může aplikace otevřít proxy služby pro komunikaci se službou voláním funkce WsOpenServiceProxy a předáním adresy struktury obsahující síťovou adresu koncového bodu služby pro připojení.

WS_ENDPOINT_ADDRESS address = {0};
address.uri.chars = "net.tcp://localhost/example";
address.uri.length = wcslen("net.tcp://localhost/example";);
hr = WsOpenServiceProxy(serviceProxy, &address, NULL, error);

Po otevření proxy serveru služby ji může aplikace použít k volání služby.

hr = Add(
    serviceProxy, 
    1, 
    2, 
    &result, 
    NULL, 
    0, 
    NULL, 
    error);

Pokud už aplikace nepotřebuje proxy služby, zavře proxy služby voláním funkce WsCloseServiceProxy. Uvolní také přidruženou paměť voláním WsFreeServiceProxy.

hr = WsCloseServiceProxy(
    serviceProxy, 
    NULL, 
    error);
hr = WsFreeServiceProxy(
    serviceProxy, 
    error);

Opětovné připojení proxy služby

Alternativně po volání WsCloseServiceProxy aplikace může znovu použít proxy služby voláním WsResetServiceProxy funkce.

hr = WsResetServiceProxy(
    serviceProxy, 
    error);

Další informace o tom, jak se proxy služby používají v různých kontextech, najdete v následujících tématech:

Bezpečnost

Při použití rozhraní API proxy služby WWSAPI byste měli pečlivě poznamenat následující aspekty návrhu aplikace:

  • Proxy služby neprovádí žádné ověření dat nad rámec ověřování základního profilu 2.0 a serializace XML. Aplikace zodpovídá za ověření dat obsažených v parametrech, které přijímá zpět v rámci volání.
  • Konfigurace maximálního počtu nevyřízených volání na proxy serveru služby pomocí WS_PROXY_PROPERTY_MAX_PENDING_CALLShodnoty výčtu WS_PROXY_PROPERTY_ID poskytuje ochranu před pomalým serverem. Výchozí maximum je 100. Aplikace musí být při úpravách výchozích hodnot opatrní.
  • Proxy služby neposkytuje žádné záruky zabezpečení nad rámec těch zadaných ve struktuře WS_SECURITY_DESCRIPTION používané ke komunikaci se serverem.
  • Při úpravě zpráv a kanálu výchozí nastavení na proxy služby je potřeba věnovat pozornost. Před úpravou jakýchkoli souvisejících vlastností si přečtěte důležité informace o zabezpečení spojené se zprávami a kanály.
  • Proxy služby šifruje všechny přihlašovací údaje, které uchovává v paměti.

Následující prvky rozhraní API se týkají proxy služeb.

Zpětné volání Popis
WS_PROXY_MESSAGE_CALLBACK Vyvoláno, když se hlavičky vstupní zprávy budou odesílat prostřednictvím nebo když se právě přijímají hlavičky výstupní zprávy.

 

Výčet Popis
WS_CALL_PROPERTY_ID Vytvoří výčet volitelných parametrů pro konfiguraci volání operace služby na straně klienta.
WS_PROXY_PROPERTY_ID Vytvoří výčet volitelných parametrů pro konfiguraci proxy serveru služby.
WS_SERVICE_PROXY_STATE Stav proxy služby.

 

Funkce Popis
WsAbandonCall Zruší zadané volání zadaného proxy serveru služby.
wsAbortServiceProxy Zruší veškerý čekající vstup a výstup na zadaném proxy serveru služby.
WsCall Pouze interní. Serializuje argumenty do zprávy a odešle je přes kanál.
wsCloseServiceProxy Zavře proxy služby pro komunikaci.
wsCreateServiceProxy Vytvoří proxy služby.
wsFreeServiceProxy Uvolní paměť přidruženou k proxy serveru služby.
WsGetServiceProxyProperty Načte zadanou vlastnost proxy služby.
wsOpenServiceProxy Otevře proxy služby do koncového bodu služby.
wsResetServiceProxy Resetuje proxy služby.

 

Klika Popis
WS_SERVICE_PROXY Neprůkazný typ použitý k odkazu na proxy služby.

 

Struktura Popis
WS_CALL_PROPERTY Určuje vlastnost volání.
WS_PROXY_PROPERTY. Určuje vlastnost proxy.