CustomBinding 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.
Definiuje powiązanie z listy elementów powiązania.
public ref class CustomBinding : System::ServiceModel::Channels::Binding
public class CustomBinding : System.ServiceModel.Channels.Binding
[System.Windows.Markup.ContentProperty("Elements")]
public class CustomBinding : System.ServiceModel.Channels.Binding
type CustomBinding = class
inherit Binding
[<System.Windows.Markup.ContentProperty("Elements")>]
type CustomBinding = class
inherit Binding
Public Class CustomBinding
Inherits Binding
- Dziedziczenie
- Atrybuty
Przykłady
W poniższym przykładzie pokazano, jak utworzyć CustomBinding obiekt przy użyciu elementu ReliableSessionBindingElement i HttpTransportBindingElement
Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
// Create a custom binding that contains two binding elements.
ReliableSessionBindingElement reliableSession = new ReliableSessionBindingElement();
reliableSession.Ordered = true;
HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
CustomBinding binding = new CustomBinding(reliableSession, httpTransport);
// Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "");
// Add a MEX endpoint.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8001/servicemodelsamples");
serviceHost.Description.Behaviors.Add(smb);
// 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();
}
Dim baseAddress As New Uri("http://localhost:8000/servicemodelsamples/service")
' Create a ServiceHost for the CalculatorService type and provide the base address.
Using serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
' Create a custom binding that contains two binding elements.
Dim reliableSession As New ReliableSessionBindingElement()
reliableSession.Ordered = True
Dim httpTransport As New HttpTransportBindingElement()
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
Dim binding As New CustomBinding(reliableSession, httpTransport)
' Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, "")
' Add a MEX endpoint.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
smb.HttpGetUrl = New Uri("http://localhost:8001/servicemodelsamples")
serviceHost.Description.Behaviors.Add(smb)
' 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()
End Using
Uwagi
Użyj powiązania niestandardowego, gdy jedno z powiązań dostarczonych przez system nie spełnia wymagań usługi. Można na przykład użyć powiązania niestandardowego, aby umożliwić korzystanie z nowego transportu lub nowego kodera w punkcie końcowym usługi.
Powiązanie niestandardowe jest tworzone przy użyciu jednej z CustomBinding kolekcji elementów powiązania, które są "skumulowane" w określonej kolejności:
U góry jest opcjonalny, TransactionFlowBindingElement który umożliwia przepływanie transakcji.
Następnie jest opcjonalny ReliableSessionBindingElement , który udostępnia mechanizm sesji i kolejności zgodnie z definicją w specyfikacji WS-ReliableMessaging. To pojęcie sesji może przekraczać pośredników SOAP i transportowych.
Następnie jest opcjonalnym elementem powiązania zabezpieczeń, który zapewnia funkcje zabezpieczeń, takie jak autoryzacja, uwierzytelnianie, ochrona i poufność. Następujące elementy powiązania zabezpieczeń są dostarczane przez program Windows Communication Foundation (WCF):
Poniżej przedstawiono opcjonalne wzorce komunikatów określone przez elementy powiązania:
Następnie przedstawiono opcjonalne uaktualnienia transportu/elementy powiązania pomocników:
Następnie jest wymagany element powiązania kodowania komunikatów. Możesz użyć własnego transportu lub użyć jednego z następujących powiązań kodowania komunikatów:
Na dole znajduje się wymagany element transportu. Możesz użyć własnego transportu lub użyć jednego z elementów powiązania transportu dostarczonego przez Windows Communication Foundation (WCF):
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, smaki MSMQ, niestandardowe | Tak |
Ponadto można zdefiniować własne elementy powiązania i wstawić je między dowolną z poprzednich zdefiniowanych warstw.
Aby zapoznać się z omówieniem sposobu używania powiązania niestandardowego do modyfikowania powiązania dostarczonego przez system, zobacz How to: Customize a System-Provided Binding (Instrukcje: dostosowywanie powiązania System-Provided).
Uwaga
Podczas wywoływania usługi WCF utworzonej przy użyciu .NET Framework 4.0 lub nowszej z aplikacji klienckiej WCF utworzonej przy użyciu .NET Framework 3.5 lub starszego plik konfiguracji wygenerowany przez svcutil.exe lub dodanie odwołania do usługi z programu Visual Studio będzie zawierać atrybut ważności w konfiguracji powiązania. Ten atrybut nie jest rozpoznawany przez środowisko uruchomieniowe .NET Framework 3.5, a aplikacja zgłosi ConfigurationErrorsException komunikat "Nierozpoznana ważność atrybutu". Aby obejść ten problem, usuń atrybut ważności z konfiguracji powiązania.
Konstruktory
CustomBinding() |
Inicjuje nowe wystąpienie klasy CustomBinding. |
CustomBinding(Binding) |
Inicjuje CustomBinding nowe wystąpienie klasy z wartości określonego powiązania. |
CustomBinding(BindingElement[]) |
Inicjuje CustomBinding nowe wystąpienie klasy z tablicy elementów powiązania. |
CustomBinding(IEnumerable<BindingElement>) |
Inicjuje CustomBinding nowe wystąpienie klasy z elementami powiązania z kompletnym stosem kanału. |
CustomBinding(String) |
Inicjuje nowe wystąpienie klasy CustomBinding. |
CustomBinding(String, String, BindingElement[]) |
Inicjuje CustomBinding nowe wystąpienie klasy z tablicy elementów powiązania z określoną nazwą i przestrzenią nazw. |
Właściwości
CloseTimeout |
Pobiera lub ustawia interwał czasu podanego dla połączenia do zamknięcia, zanim transport zgłasza wyjątek. (Odziedziczone po Binding) |
Elements |
Pobiera elementy powiązania z powiązania niestandardowego. |
MessageVersion |
Pobiera wersję komunikatu używaną przez klientów i usługi skonfigurowane za pomocą powiązania. (Odziedziczone po Binding) |
Name |
Pobiera lub ustawia nazwę powiązania. (Odziedziczone po Binding) |
Namespace |
Pobiera lub ustawia przestrzeń nazw XML powiązania. (Odziedziczone po Binding) |
OpenTimeout |
Pobiera lub ustawia interwał czasu podany dla połączenia do otwarcia, zanim transport zgłosi wyjątek. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
Scheme |
Pobiera schemat identyfikatora URI do transportu używanego przez powiązanie niestandardowe. |
SendTimeout |
Pobiera lub ustawia interwał czasu podany dla operacji zapisu do ukończenia, zanim transport zgłosi wyjątek. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
BuildChannelListener<TChannel>(Object[]) |
Tworzy odbiornik kanału w usłudze, który akceptuje określony typ kanału i spełnia określone funkcje. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
CreateBindingElements() |
Zwraca ogólną kolekcję elementów powiązania z powiązania niestandardowego. |
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ń. (Odziedziczone po Binding) |
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. (Odziedziczone po Binding) |
ShouldSerializeNamespace() |
Zwraca, czy przestrzeń nazw powiązania powinna być serializowana. (Odziedziczone po Binding) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |