Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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. |