Serwer proxy usługi
Serwer proxy usługi to serwer proxy po stronie klienta dla usługi. Serwer proxy usługi umożliwia aplikacjom wysyłanie i odbieranie komunikatów przez kanał jako wywołania metody.
Serwery proxy usługi są tworzone zgodnie z potrzebami, otwierane, używane do wywoływania usługi i zamykane, gdy nie są już potrzebne. Alternatywnie aplikacja może ponownie użyć serwera proxy usługi, aby wielokrotnie łączyć się z tą samą usługą bez wydatków na czas i zasoby wymagane do zainicjowania serwera proxy usługi więcej niż raz. Na poniższym diagramie przedstawiono przepływ możliwych stanów serwera proxy usługi oraz wywołań funkcji lub zdarzeń prowadzących z jednego stanu do drugiego.
Te stany serwera proxy usługi są wyliczane w wyliczenie WS_SERVICE_PROXY_STATE.
Jak pokazano na powyższym diagramie i poniższym kodzie, serwer proxy usługi jest tworzony przez wywołanie funkcji WsCreateServiceProxy. Jako parametry tego wywołania interfejs WWSAPI udostępnia następujące wyliczenia:
Akceptuje również opcjonalne parametry przy użyciu następujących typów danych:
Po utworzeniu serwera proxy usługi funkcja WsCreateServiceProxy zwraca odwołanie do serwera proxy usługi, WS_SERVICE_PROXY, za pomocą parametru out.
WS_SERVICE_PROXY* serviceProxy = NULL;
hr = WsCreateServiceProxy (
WS_TCP_CHANNEL_BINDING,
WS_CHANNEL_TYPE_DUPLEX_SESSION,
NULL,
NULL,
0,
NULL,
0,
&serviceProxy,
error);
Po utworzeniu serwera proxy usługi aplikacja może otworzyć serwer proxy usługi na potrzeby komunikacji z usługą, wywołując funkcję WsOpenServiceProxy, przekazującadresstruktury zawierającej adres sieciowy punktu końcowego usługi do nawiązania połączenia.
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 otwarciu serwera proxy usługi aplikacja może jej używać do wykonywania wywołań do usługi.
hr = Add(
serviceProxy,
1,
2,
&result,
NULL,
0,
NULL,
error);
Gdy aplikacja nie potrzebuje już serwera proxy usługi, zamyka serwer proxy usługi, wywołując funkcję WsCloseServiceProxy. Zwalnia również skojarzona pamięć przez wywołanie WsFreeServiceProxy.
hr = WsCloseServiceProxy(
serviceProxy,
NULL,
error);
hr = WsFreeServiceProxy(
serviceProxy,
error);
Ponowne przy użyciu serwera proxy usługi
Alternatywnie po wywołaniu WsCloseServiceProxy aplikacja może ponownie użyć serwera proxy usługi, wywołując funkcję WsResetServiceProxy.
hr = WsResetServiceProxy(
serviceProxy,
error);
Aby uzyskać więcej informacji na temat sposobu użycia serwerów proxy usługi w różnych kontekstach, zobacz następujące tematy:
- serwer proxy usługi i sesje
- operacji usługi
- operacje usługi po stronie klienta
- HttpCalculatorClientExample
Bezpieczeństwo
Podczas korzystania z interfejsu API serwera proxy usługi WWSAPI należy dokładnie zauważyć następujące zagadnienia dotyczące projektowania aplikacji:
- Serwer proxy usługi nie przeprowadzi żadnej weryfikacji danych poza weryfikacją profilu podstawowego 2.0 i serializacji XML. Aplikacja odpowiada za zweryfikowanie danych zawartych w parametrach odbieranych z powrotem w ramach wywołania.
- Skonfigurowanie maksymalnej liczby oczekujących wywołań na serwerze proxy usługi przy użyciu wartości wyliczania WS_PROXY_PROPERTY_IDWS_PROXY_PROPERTY_MAX_PENDING_CALLSzapewnia ochronę przed powolnym działaniem serwera. Wartość domyślna to 100. Aplikacje muszą zachować ostrożność podczas modyfikowania ustawień domyślnych.
- Serwer proxy usługi nie zapewnia żadnych gwarancji zabezpieczeń wykraczających poza te określone w strukturze WS_SECURITY_DESCRIPTION używanej do komunikacji z serwerem.
- Podczas modyfikowania komunikatów i kanału wartości domyślnych na serwerze proxy usługi. Przed zmodyfikowaniem dowolnych powiązanych właściwości zapoznaj się z zagadnieniami dotyczącymi zabezpieczeń skojarzonymi z komunikatami i kanałami.
- Serwer proxy usługi szyfruje wszystkie poświadczenia, które przechowuje w pamięci.
Następujące elementy interfejsu API odnoszą się do serwerów proxy usługi.
Wywołania zwrotnego | Opis |
---|---|
WS_PROXY_MESSAGE_CALLBACK | Wywoływane, gdy nagłówki komunikatu wejściowego zostaną wysłane za pośrednictwem lub gdy nagłówki komunikatów wyjściowych zostaną właśnie odebrane. |
Wyliczenie | Opis |
---|---|
WS_CALL_PROPERTY_ID | Wylicza parametry opcjonalne do konfigurowania wywołania operacji usługi po stronie klienta. |
WS_PROXY_PROPERTY_ID | Wylicza opcjonalne parametry konfigurowania serwera proxy usługi. |
WS_SERVICE_PROXY_STATE | Stan serwera proxy usługi. |
Funkcja | Opis |
---|---|
WsAbandonCall | Porzuca określone wywołanie określonego serwera proxy usługi. |
WsAbortServiceProxy | Anuluje wszystkie oczekujące dane wejściowe i wyjściowe na określonym serwerze proxy usługi. |
WsCall | Tylko wewnętrzne. Serializuje argumenty w wiadomości i wysyła je za pośrednictwem kanału. |
WsCloseServiceProxy | Zamyka serwer proxy usługi na potrzeby komunikacji. |
WsCreateServiceProxy | Tworzy serwer proxy usługi. |
WsFreeServiceProxy | Zwalnia pamięć skojarzona z serwerem proxy usługi. |
WsGetServiceProxyProperty | Pobiera określoną właściwość serwera proxy usługi. |
WsOpenServiceProxy | Otwiera serwer proxy usługi do punktu końcowego usługi. |
WsResetServiceProxy | Resetuje serwer proxy usługi. |
Uchwyt | Opis |
---|---|
WS_SERVICE_PROXY | Nieprzezroczystym typem używanym do odwoływania się do serwera proxy usługi. |
Struktura | Opis |
---|---|
WS_CALL_PROPERTY | Określa właściwość wywołania. |
WS_PROXY_PROPERTY. | Określa właściwość serwera proxy. |