Binding Klasa

Definicja

Zawiera elementy powiązania, które określają protokoły, transporty i kodery komunikatów używane do komunikacji między klientami i usługami.

public ref class Binding abstract : System::ServiceModel::IDefaultCommunicationTimeouts
public abstract class Binding : System.ServiceModel.IDefaultCommunicationTimeouts
type Binding = class
    interface IDefaultCommunicationTimeouts
Public MustInherit Class Binding
Implements IDefaultCommunicationTimeouts
Dziedziczenie
Binding
Pochodne
Implementuje

Przykłady

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "binding1";

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

    // Open the ServiceHostBase to create listeners and start listening for messages.
    serviceHost.Open();

    // The service can now be accessed.
    Console.WriteLine("The service is ready.");
    Console.WriteLine("Press <ENTER> to terminate service.");
    Console.WriteLine();
    Console.ReadLine();
    // Close the ServiceHostBase to shutdown the service.
    serviceHost.Close();
}

Uwagi

Reprezentuje kolekcję elementów powiązań, z których każdy opisuje aspekt sposobu komunikowania się punktu końcowego z innymi punktami końcowymi i które są tworzone, spójnie, do fabryki kanałów na kliencie i do odbiornika kanału w usłudze. Powiązanie zawiera kolekcję elementów powiązań, które odpowiadają kanałom protokołu, kanałom transportu i koderom komunikatów. Może istnieć dowolna liczba elementów powiązania dla kanałów protokołu, ale jeden i tylko jeden element powiązania dla każdego transportu i kodera komunikatów. Istnieje często sześć warstw elementów powiązania w powiązaniu. Wymagane są tylko elementy powiązania transportu i kodowania w dolnej części stosu. Ponieważ kodowanie jest wymagane dla każdego powiązania, jeśli nie określono kodowania, Windows Communication Foundation (WCF) dodaje domyślne kodowanie. Wartość domyślna to Text/XML dla transportów HTTP i HTTPS oraz Binary dla innych transportów.

Poniższa tabela zawiera podsumowanie opcji dla każdej warstwy.

Warstwa Opcje Wymagane
Flow transakcji TransactionFlowBindingElement Nie
Niezawodność ReliableSessionBindingElement Nie
Zabezpieczenia Symetryczne, asymetryczne, Transport-Level Nie
Zmiana kształtu CompositeDuplexBindingElement Nie
Uaktualnienia transportu Strumień SSL, strumień Windows, rozpoznawanie równorzędne Nie
Encoding Tekst, binarny, MTOM, niestandardowy Tak
Transport TCP, nazwane potoki, HTTP, HTTPS, MSMQ, niestandardowe Tak

Każdy element powiązania udostępnia specyfikację tworzenia fabryki kanałów na kliencie i odbiorniku kanału w usłudze. Po utworzeniu stosu fabryki kanałów istnieje na przykład jedna fabryka kanałów w stosie dla każdego elementu powiązania w powiązaniu. To samo mapowanie dotyczy odbiorników kanałów w stosie w usłudze. Spójność na kliencie i usłudze ma kluczowe znaczenie dla ustanowienia połączenia opartego na kanale między tymi punktami końcowymi. Każda fabryka i odbiornik, z kolei, przetwarza wysyłanie i akceptowanie odpowiednich kanałów w stosie kanału, który je łączy, a te kanały mogą następnie wysyłać i odbierać komunikaty używane do komunikacji.

Każde wystąpienie obiektu Binding ma element Name i Namespace , które razem jednoznacznie identyfikują je w metadanych usługi. Jeśli nie określono żadnej nazwy lub przestrzeni nazw, program WCF dodaje dla Ciebie wartości domyślne. Nazwa domyślna to null i domyślna przestrzeń nazw to http://tempuri.org/. Ta nazwa użytkownika powiązania różni się od specyfikacji nazwy protokołu, która jest określona Scheme przez właściwość. Jeśli chcesz dodać więcej powiązań HTTP, możesz na przykład nazwać je niezależnie od potrzeb i ustawić wszystkie ich schematy na "http". Nie ma żadnej właściwej aplikacji ani wysyłania maszyny na Schemepodstawie . Aby uniknąć typowego problemu, nie można zarejestrować dodatkowych programów obsługi dla dobrze znanych protokołów. Możesz również łatwo pracować z wieloma wersjami powiązania obok siebie, podając każdą wersję inną nazwę.

Klasa Binding implementuje IDefaultCommunicationTimeouts interfejs w celu wyeliminowania ataków typu "odmowa usługi" (DOS), które polegają na wiązaniu zasobów przez dłuższy czas. Implementacja określa wartości limitu czasu komunikacji podczas otwierania i zamykania połączeń oraz operacji odczytu i zapisu skojarzonych z odbieraniem i wysyłaniem komunikatów. Właściwości używane do pobierania i ustawiania tych limitów czasu oraz ich domyślnych operacji wartości są sumowane w poniższej tabeli.

Właściwość limitu czasu Wartość domyślna
OpenTimeout 1 minuta
CloseTimeout 1 minuta
SendTimeout 1 minuta
ReceiveTimeout 10 minut

Podczas tworzenia powiązania dziedziczonego z Bindingklasy należy zastąpić CreateBindingElementselement .

Ponadto można zdefiniować własne elementy powiązania i wstawić je między dowolną ze zdefiniowanych warstw w poprzedniej tabeli. Aby uzyskać więcej informacji, zobacz klasę CustomBinding .

Konstruktory

Binding()

Inicjuje Binding nowe wystąpienie klasy z domyślną nazwą i przestrzenią nazw.

Binding(String, String)

Inicjuje nowe wystąpienie Binding klasy z określonego powiązania usługi.

Właściwości

CloseTimeout

Pobiera lub ustawia interwał czasu podanego dla połączenia do zamknięcia, zanim transport zgłasza wyjątek.

MessageVersion

Pobiera wersję komunikatu używaną przez klientów i usługi skonfigurowane za pomocą powiązania.

Name

Pobiera lub ustawia nazwę powiązania.

Namespace

Pobiera lub ustawia przestrzeń nazw XML powiązania.

OpenTimeout

Pobiera lub ustawia interwał czasu podany dla połączenia do otwarcia, zanim transport zgłosi wyjątek.

ReceiveTimeout

Pobiera lub ustawia interwał czasu, przez który połączenie może pozostać nieaktywne, podczas którego nie są odbierane żadne komunikaty aplikacji, zanim zostanie porzucony.

Scheme

Po zaimplementowaniu w klasie pochodnej ustawia schemat identyfikatora URI, który określa transport używany przez fabryki kanału i odbiornika, które są kompilowane przez powiązania.

SendTimeout

Pobiera lub ustawia interwał czasu dla operacji zapisu do ukończenia, zanim transport zgłosi wyjątek.

Metody

BuildChannelFactory<TChannel>(BindingParameterCollection)

Tworzy stos fabryki kanałów na kliencie, który tworzy określony typ kanału i spełnia funkcje określone przez kolekcję parametrów powiązania.

BuildChannelFactory<TChannel>(Object[])

Tworzy stos fabryki kanałów na kliencie, który tworzy określony typ kanału i spełnia funkcje określone przez tablicę obiektów.

BuildChannelListener<TChannel>(BindingParameterCollection)

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia funkcje określone przez kolekcję parametrów powiązania.

BuildChannelListener<TChannel>(Object[])

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

BuildChannelListener<TChannel>(Uri, Object[])

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

BuildChannelListener<TChannel>(Uri, String, Object[])

Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Zwraca wartość wskazującą, czy bieżące powiązanie może utworzyć stos fabryki kanału na kliencie, który spełnia określone parametry powiązania.

CanBuildChannelFactory<TChannel>(Object[])

Zwraca wartość wskazującą, czy bieżące powiązanie może utworzyć stos fabryki kanałów na kliencie, który spełnia wymagania określone przez tablicę obiektów.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

Zwraca wartość wskazującą, czy bieżące powiązanie może utworzyć stos odbiornika kanału w usłudze, która spełnia określone parametry powiązania.

CanBuildChannelListener<TChannel>(Object[])

Zwraca wartość wskazującą, czy bieżące powiązanie może utworzyć stos odbiornika kanału w usłudze, która spełnia kryteria określone w tablicy obiektów.

CreateBindingElements()

Po zastąpieniu w klasie pochodnej tworzy kolekcję zawierającą elementy powiązania, które są częścią bieżącego powiązania.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetProperty<T>(BindingParameterCollection)

Zwraca żądany obiekt typu z odpowiedniej warstwy w stosie powiązań.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ShouldSerializeName()

Zwraca, czy nazwa powiązania powinna być serializowana.

ShouldSerializeNamespace()

Zwraca, czy przestrzeń nazw powiązania powinna być serializowana.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy