Udostępnij za pośrednictwem


Wybieranie transportu

W tym temacie omówiono kryteria wyboru spośród trzech głównych transportów zawartych w programie Windows Communication Foundation (WCF): HTTP, TCP i nazwanych potoków. WCF zawiera również kolejkowanie komunikatów (nazywane również transportem MSMQ), ale ten dokument nie obejmuje kolejkowania komunikatów.

Model programowania WCF oddziela operacje punktu końcowego (wyrażone w umowie usługi) od mechanizmu transportu, który łączy dwa punkty końcowe. Dzięki temu można elastycznie decydować, jak uwidaczniać usługi w sieci.

W programie WCF określasz sposób przesyłania danych między siecią między punktami końcowymi przy użyciu powiązania, które składa się z sekwencji elementów powiązania. Transport jest reprezentowany przez element powiązania transportu, który jest częścią powiązania. Powiązanie zawiera opcjonalne elementy powiązania protokołu, takie jak zabezpieczenia, wymagany element powiązania kodera komunikatów i wymagany element powiązania transportu. Transport wysyła lub odbiera serializowaną formę wiadomości do lub z innej aplikacji.

Jeśli musisz nawiązać połączenie z istniejącym klientem lub serwerem, być może nie masz możliwości korzystania z określonego transportu. Jednak usługi WCF mogą być dostępne za pośrednictwem wielu punktów końcowych, z których każdy ma inny transport. Jeśli pojedynczy transport nie obejmuje przeznaczonej grupy odbiorców usługi, rozważ uwidocznienie usługi za pośrednictwem wielu punktów końcowych. Aplikacje klienckie mogą następnie używać punktu końcowego, który jest dla nich najlepszy.

Po wybraniu transportu należy wybrać powiązanie, które go używa. Możesz wybrać powiązanie dostarczone przez system (zobacz Powiązania dostarczone przez system) lub utworzyć własne powiązanie niestandardowe (zobacz Powiązania niestandardowe). Możesz również utworzyć własne powiązanie. Aby uzyskać więcej informacji, zobacz Tworzenie powiązań zdefiniowanych przez użytkownika.

Zalety każdego transportu

W tej sekcji opisano główne przyczyny wyboru jednego z trzech głównych transportów, w tym szczegółowy wykres decyzyjny do wyboru spośród nich.

Kiedy używać transportu HTTP

HTTP to protokół żądania/odpowiedzi między klientami i serwerami. Najczęściej spotykana aplikacja składa się z klientów przeglądarki sieci Web komunikujących się z serwerem sieci Web. Klient wysyła żądanie do serwera, który nasłuchuje komunikatów żądania klienta. Gdy serwer odbiera żądanie, zwraca odpowiedź zawierającą stan żądania. W przypadku pomyślnego, opcjonalne dane, takie jak strona sieci Web, komunikat o błędzie lub inne informacje są zwracane. Aby uzyskać więcej informacji na temat protokołu HTTP, zobacz HTTP — Protokół transferu hipertekstowego.

Protokół HTTP nie jest oparty na połączeniu — po wysłaniu odpowiedzi nie jest utrzymywany żaden stan. Aby obsługiwać transakcje wielostronicowe, aplikacja musi zachować dowolny niezbędny stan.

W programie WCF powiązanie transportu HTTP jest zoptymalizowane pod kątem współdziałania ze starszymi systemami innych niż WCF. Jeśli wszystkie komunikujące się strony korzystają z programu WCF, powiązania oparte na potokach tcp lub nazwanych są szybsze. Aby uzyskać więcej informacji, zobacz tematy NetTcpBinding oraz NetNamedPipeBinding.

Kiedy używać transportu TCP

TCP to oparta na połączeniu usługa dostarczania zorientowana na strumień z kompleksową wykrywaniem błędów i korektą. Połączenie oparte na sieci oznacza, że sesja komunikacji między hostami jest ustanawiana przed wymianą danych. Host to dowolne urządzenie w sieci TCP/IP identyfikowane przez logiczny adres IP.

Protokół TCP zapewnia niezawodne dostarczanie danych i łatwość użycia. W szczególności protokół TCP powiadamia nadawcę dostarczania pakietów, gwarantuje, że pakiety są dostarczane w tej samej kolejności, w jakiej są wysyłane, ponownie przesyła utracone pakiety i zapewnia, że pakiety danych nie są zduplikowane. Należy pamiętać, że ta niezawodna dostawa ma zastosowanie między dwoma węzłami TCP/IP i nie jest taka sama jak WS-ReliableMessaging, która ma zastosowanie między punktami końcowymi, niezależnie od liczby węzłów pośrednich, które mogą zawierać.

Transport TCP WCF jest zoptymalizowany pod kątem scenariusza, w którym oba końce komunikacji korzystają z usługi WCF. To powiązanie jest najszybszym powiązaniem WCF dla scenariuszy obejmujących komunikację między różnymi maszynami. Wymiana komunikatów używa elementu BinaryMessageEncodingBindingElement do zoptymalizowanego transferu komunikatów. Protokół TCP zapewnia komunikację dwukierunkową i może służyć do implementowania kontraktów dwukierunkowych, nawet jeśli klient znajduje się za translatorem adresów sieciowych (NAT).

Kiedy należy używać transportu nazwanego potoku

Nazwany potok jest obiektem w jądrze systemu operacyjnego Windows, takim jak sekcja pamięci udostępnionej, która może być używana przez procesy do komunikacji. Nazwany potok ma nazwę i może służyć do jednokierunkowej lub dwukierunkowej komunikacji między procesami na jednej maszynie.

Gdy komunikacja jest wymagana między różnymi aplikacjami WCF na jednym komputerze i chcesz zapobiec komunikacji z innej maszyny, użyj transportu nazwanych potoków. Dodatkowym ograniczeniem jest to, że procesy uruchomione z pulpitu zdalnego systemu Windows mogą być ograniczone do tej samej sesji pulpitu zdalnego systemu Windows, chyba że mają podwyższone uprawnienia.

Ostrzeżenie

W przypadku korzystania z transportu nazwanego potoku ze słabą rezerwacją adresu URL z symbolami wieloznacznymi w wielu witrynach hostowanych w usługach IIS może wystąpić następujący błąd: Wystąpił błąd w usłudze aktywacji "NetPipeActivator" protokołu "net.pipe" podczas próby nasłuchiwania witryny "2", dlatego protokół jest tymczasowo wyłączony dla witryny. Aby uzyskać więcej informacji, zobacz komunikat o wyjątku. Adres URL: WeakWildcard:net.pipe:/<nazwa> maszyny/ Stan: ConflictingRegistration Exception: Process Name: SMSvcHost Process ID: 1076\

Punkty decyzyjne dotyczące wybierania transportu

W poniższej tabeli opisano typowe punkty decyzyjne używane do wyboru transportu. Należy rozważyć wszelkie dodatkowe atrybuty i transporty, które mają zastosowanie do aplikacji. Zidentyfikuj atrybuty, które są ważne dla aplikacji, zidentyfikuj transporty, które kojarzą się z każdym z atrybutów, a następnie wybierz transporty, które najlepiej sprawdzają się w zestawie atrybutów.

Atrybut opis Preferowane transporty
Diagnostyka Diagnostyka umożliwia automatyczne wykrywanie problemów z łącznością transportową. Wszystkie transporty obsługują możliwość wysyłania informacji o błędach, które opisują łączność. Jednak program WCF nie obejmuje narzędzi diagnostycznych do badania problemów z siecią. Brak
Hosting Wszystkie punkty końcowe programu WCF muszą być hostowane wewnątrz aplikacji. Usługi IIS 6.0 i starsze wersje obsługują tylko aplikacje obsługujące transport HTTP. W systemie Windows Vista dodano obsługę hostowania wszystkich transportów WCF, w tym tcp i nazwanych potoków. Aby uzyskać więcej informacji, zobacz Hosting w usługach Internet Information Services i hosting w usłudze aktywacji procesów systemu Windows. HTTP
Inspekcja Inspekcja to możliwość wyodrębniania i przetwarzania informacji z komunikatów podczas transmisji. Protokół HTTP oddziela routing i kontrolę informacji od danych, co ułatwia tworzenie narzędzi do sprawdzania i analizowania komunikatów. Transporty, które są łatwe do sprawdzenia, mogą również wymagać mniejszej mocy obliczeniowej w urządzeniach sieciowych. Poziom używanych zabezpieczeń ma wpływ na to, czy komunikaty można sprawdzić. HTTP
Opóźnienie Opóźnienie to minimalny czas wymagany do ukończenia wymiany komunikatów. Wszystkie operacje sieciowe mają większe lub mniejsze opóźnienie w zależności od wyboru transportu. Korzystanie z dwukierunkowej lub jednokierunkowej komunikacji z transportem, którego natywny wzorzec wymiany komunikatów jest żądanie-odpowiedź, taki jak HTTP, może powodować dodatkowe opóźnienie ze względu na wymuszoną korelację komunikatów. W takiej sytuacji rozważ użycie transportu, którego natywny wzorzec wymiany komunikatów jest dwukierunkowy, taki jak TCP. TCP, nazwane

Rury
Usługa Reach Zasięg transportu odzwierciedla zdolność transportu do łączenia się z innymi systemami. Nazwany transport rurowy ma bardzo mały zasięg; może łączyć się tylko z usługami uruchomionymi na tym samym komputerze. Transporty TCP i HTTP mają doskonały zasięg i mogą przedostać się do niektórych konfiguracji translatora adresów sieciowych i zapory. Aby uzyskać więcej informacji, zobacz Working with NATs and Firewalls (Praca z zaporami i sieciami sieciowymi). HTTP, TCP
Zabezpieczenia Zabezpieczenia to możliwość ochrony komunikatów podczas transferu poprzez zapewnienie poufności, integralności lub uwierzytelniania. Poufność chroni wiadomość przed badaniem, integralność chroni komunikat przed modyfikacją, a uwierzytelnianie zapewnia nadawcę lub odbiorcę wiadomości.

Program WCF obsługuje zabezpieczenia transferu zarówno na poziomie komunikatu, jak i na poziomie transportu. Zabezpieczenia komunikatów są komponowane z transportem, jeśli transport obsługuje buforowany tryb transferu. Obsługa zabezpieczeń transportu różni się w zależności od wybranego transportu. Transporty http, TCP i nazwane potoki mają rozsądną parzystość w ich obsłudze bezpieczeństwa transportu.
wszystkie
Produktywność Przepływność mierzy ilość danych, które mogą być przesyłane i przetwarzane w określonym przedziale czasu. Podobnie jak opóźnienie, wybrany transport może mieć wpływ na przepływność operacji usługi. Maksymalizacja przepływności transportu wymaga zminimalizowania zarówno nakładu pracy związanego z przesyłaniem zawartości, jak i zminimalizowania czasu spędzonego na zakończenie wymiany komunikatów. Transporty tcp i nazwane potoki dodają niewielkie obciążenie do treści komunikatu i obsługują natywny kształt dwukierunkowy, który zmniejsza oczekiwanie na odpowiedzi komunikatów. TCP, nazwany potok
Narzędzia Narzędzia reprezentują obsługę aplikacji innych firm dla protokołu programowania, diagnostyki, hostingu i innych działań. Opracowywanie narzędzi i oprogramowania do pracy z protokołem HTTP oznacza szczególnie duże inwestycje. HTTP

Zobacz też