Binding Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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, program 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 |
---|---|---|
Przepływ transakcji | TransactionFlowBindingElement | Nie |
Niezawodność | ReliableSessionBindingElement | Nie |
Zabezpieczenia | Symetryczne, asymetryczne, Transport-Level | Nie |
Zmiana kształtu | CompositeDuplexBindingElement | Nie |
Uaktualnienia transportu | Strumień SSL, strumień systemu 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ą tworzone przez powiązania. |
SendTimeout |
Pobiera lub ustawia interwał czasu podany 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łu 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 bieżące wystąpienie. (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) |