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.
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:
- proxy a relací služby
- operace služby
- operace služby na straně klienta
- HttpCalculatorClientExample
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. |