ChannelFactory<TChannel> 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.
Fabryka, która tworzy kanały różnych typów, które są używane przez klientów do wysyłania komunikatów do różnych skonfigurowanych punktów końcowych usługi.
generic <typename TChannel>
public ref class ChannelFactory : System::ServiceModel::ChannelFactory, System::ServiceModel::Channels::IChannelFactory<TChannel>
public class ChannelFactory<TChannel> : System.ServiceModel.ChannelFactory, System.ServiceModel.Channels.IChannelFactory<TChannel>
type ChannelFactory<'Channel> = class
inherit ChannelFactory
interface IChannelFactory<'Channel>
interface IChannelFactory
interface ICommunicationObject
type ChannelFactory<'Channel> = class
inherit ChannelFactory
interface IChannelFactory
interface ICommunicationObject
interface IChannelFactory<'Channel>
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)
Parametry typu
- TChannel
Typ kanału produkowanego przez fabrykę kanałów. Ten typ musi być IOutputChannel lub IRequestChannel.
- Dziedziczenie
- Pochodne
- Implementuje
Przykłady
W poniższym przykładzie pokazano, jak utworzyć fabrykę kanałów i użyć jej do tworzenia kanałów i zarządzania nimi.
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:8000/ChannelApp");
ChannelFactory<IRequestChannel> factory =
new ChannelFactory<IRequestChannel>(binding, address);
IRequestChannel channel = factory.CreateChannel();
channel.Open();
Message request = Message.CreateMessage(MessageVersion.Soap11, "hello");
Message reply = channel.Request(request);
Console.Out.WriteLine(reply.Headers.Action);
reply.Close();
channel.Close();
factory.Close();
}
Poniższy przykład kodu pokazuje, jak wstawić programowe zachowanie klienta przed utworzeniem obiektu kanału przez fabrykę.
public class Client
{
public static void Main()
{
try
{
// Picks up configuration from the config file.
ChannelFactory<ISampleServiceChannel> factory
= new ChannelFactory<ISampleServiceChannel>("WSHttpBinding_ISampleService");
// Add the client side behavior programmatically to all created channels.
factory.Endpoint.Behaviors.Add(new EndpointBehaviorMessageInspector());
ISampleServiceChannel wcfClientChannel = factory.CreateChannel();
// Making calls.
Console.WriteLine("Enter the greeting to send: ");
string greeting = Console.ReadLine();
Console.WriteLine("The service responded: " + wcfClientChannel.SampleMethod(greeting));
Console.WriteLine("Press ENTER to exit:");
Console.ReadLine();
// Done with service.
wcfClientChannel.Close();
Console.WriteLine("Done!");
}
catch (TimeoutException timeProblem)
{
Console.WriteLine("The service operation timed out. " + timeProblem.Message);
Console.Read();
}
catch (FaultException<SampleFault> fault)
{
Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage);
Console.Read();
}
catch (CommunicationException commProblem)
{
Console.WriteLine("There was a communication problem. " + commProblem.Message);
Console.Read();
}
}
Public Class Client
Public Shared Sub Main()
Try
' Picks up configuration from the config file.
Dim factory As New ChannelFactory(Of ISampleServiceChannel)("WSHttpBinding_ISampleService")
' Add the client side behavior programmatically to all created channels.
factory.Endpoint.Behaviors.Add(New EndpointBehaviorMessageInspector())
Dim wcfClientChannel As ISampleServiceChannel = factory.CreateChannel()
' Making calls.
Console.WriteLine("Enter the greeting to send: ")
Dim greeting As String = Console.ReadLine()
Console.WriteLine("The service responded: " & wcfClientChannel.SampleMethod(greeting))
Console.WriteLine("Press ENTER to exit:")
Console.ReadLine()
' Done with service.
wcfClientChannel.Close()
Console.WriteLine("Done!")
Catch timeProblem As TimeoutException
Console.WriteLine("The service operation timed out. " & timeProblem.Message)
Console.Read()
Catch fault As FaultException(Of SampleFault)
Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage)
Console.Read()
Catch commProblem As CommunicationException
Console.WriteLine("There was a communication problem. " & commProblem.Message)
Console.Read()
End Try
End Sub
Uwagi
Ta klasa ogólna umożliwia bardziej zaawansowane scenariusze, w których istnieje wymóg utworzenia fabryki kanałów, która może służyć do tworzenia więcej niż jednego typu kanału.
Podczas programowego dodawania zachowań zachowanie jest dodawane do odpowiedniej właściwości Behaviors
w ChannelFactory przed utworzeniem dowolnego kanału. Zobacz przykładową sekcję przykładu kodu.
Często aplikacje klienckie lub wywołujące (na przykład aplikacje warstwy środkowej są aplikacjami klienckimi), korzystając z tego typu, mają również złożone potrzeby w zakresie zarządzania stanem, a także potrzeby dotyczące wydajności. Aby uzyskać więcej informacji na temat tych scenariuszy, zobacz Middle-Tier Aplikacje klienckie.
Konstruktory
ChannelFactory<TChannel>() |
Inicjuje nowe wystąpienie klasy ChannelFactory<TChannel>. |
ChannelFactory<TChannel>(Binding) |
Inicjuje nowe wystąpienie klasy ChannelFactory<TChannel>. |
ChannelFactory<TChannel>(Binding, EndpointAddress) |
Inicjuje nowe wystąpienie klasy ChannelFactory<TChannel> z określonym powiązaniem i adresem punktu końcowego. |
ChannelFactory<TChannel>(Binding, String) |
Inicjuje nowe wystąpienie klasy ChannelFactory<TChannel> z określonym powiązaniem i adresem zdalnym. |
ChannelFactory<TChannel>(ServiceEndpoint) |
Inicjuje nowe wystąpienie klasy ChannelFactory<TChannel>, która generuje kanały z określonym punktem końcowym. |
ChannelFactory<TChannel>(String) |
Inicjuje nowe wystąpienie klasy ChannelFactory<TChannel> o określonej nazwie konfiguracji punktu końcowego. |
ChannelFactory<TChannel>(String, EndpointAddress) |
Inicjuje nowe wystąpienie klasy ChannelFactory<TChannel> skojarzonej z określoną nazwą konfiguracji punktu końcowego i adresu zdalnego. |
ChannelFactory<TChannel>(Type) |
Inicjuje nowe wystąpienie klasy ChannelFactory<TChannel>. |
Właściwości
Credentials |
Pobiera poświadczenia używane przez klientów do komunikowania punktu końcowego usługi za pośrednictwem kanałów generowanych przez fabrykę. (Odziedziczone po ChannelFactory) |
DefaultCloseTimeout |
Pobiera domyślny interwał czasu podany na zakończenie operacji zamknięcia. (Odziedziczone po ChannelFactory) |
DefaultOpenTimeout |
Pobiera domyślny interwał czasu podany dla operacji otwierania do ukończenia. (Odziedziczone po ChannelFactory) |
Endpoint |
Pobiera punkt końcowy usługi, z którym łączą się kanały utworzone przez fabrykę. (Odziedziczone po ChannelFactory) |
IsDisposed |
Pobiera wartość wskazującą, czy obiekt komunikacji został usunięty. (Odziedziczone po CommunicationObject) |
State |
Pobiera wartość wskazującą bieżący stan obiektu komunikacji. (Odziedziczone po CommunicationObject) |
ThisLock |
Pobiera wzajemnie wykluczającą się blokadę, która chroni wystąpienie klasy podczas przejścia stanu. (Odziedziczone po CommunicationObject) |
Metody
Abort() |
Powoduje natychmiastowe przejście obiektu komunikacyjnego z bieżącego stanu do stanu zamknięcia. (Odziedziczone po CommunicationObject) |
ApplyConfiguration(String) |
Inicjuje fabrykę kanałów przy użyciu zachowań dostarczonych przez określony plik konfiguracji i z tymi w punkcie końcowym usługi fabryki kanałów. (Odziedziczone po ChannelFactory) |
BeginClose(AsyncCallback, Object) |
Rozpoczyna operację asynchroniczną w celu zamknięcia obiektu komunikacji. (Odziedziczone po CommunicationObject) |
BeginClose(TimeSpan, AsyncCallback, Object) |
Rozpoczyna operację asynchroniczną, aby zamknąć obiekt komunikacji z określonym limitem czasu. (Odziedziczone po CommunicationObject) |
BeginOpen(AsyncCallback, Object) |
Rozpoczyna operację asynchroniczną w celu otwarcia obiektu komunikacji. (Odziedziczone po CommunicationObject) |
BeginOpen(TimeSpan, AsyncCallback, Object) |
Rozpoczyna operację asynchroniczną, aby otworzyć obiekt komunikacji w określonym przedziale czasu. (Odziedziczone po CommunicationObject) |
Close() |
Powoduje przejście obiektu komunikacyjnego z bieżącego stanu do stanu zamkniętego. (Odziedziczone po CommunicationObject) |
Close(TimeSpan) |
Powoduje przejście obiektu komunikacyjnego z bieżącego stanu do stanu zamkniętego w określonym przedziale czasu. (Odziedziczone po CommunicationObject) |
CreateChannel() |
Tworzy kanał określonego typu do określonego adresu punktu końcowego. |
CreateChannel(Binding, EndpointAddress) |
Tworzy kanał określonego typu, który jest używany do wysyłania komunikatów do punktu końcowego usługi skonfigurowanego przy użyciu określonego powiązania. |
CreateChannel(Binding, EndpointAddress, Uri) |
Tworzy kanał określonego typu, który jest używany do wysyłania komunikatów do punktu końcowego usługi na określonym adresie transportu skonfigurowanym przy użyciu określonego powiązania. |
CreateChannel(EndpointAddress) |
Tworzy kanał używany do wysyłania komunikatów do usługi pod określonym adresem punktu końcowego. |
CreateChannel(EndpointAddress, Uri) |
Tworzy kanał używany do wysyłania komunikatów do usługi pod określonym adresem punktu końcowego za pośrednictwem określonego adresu transportu. |
CreateChannel(String) |
Tworzy kanał używany do wysyłania komunikatów do usługi, której punkt końcowy jest skonfigurowany w określony sposób. |
CreateChannelWithActAsToken(SecurityToken) |
Tworzy kanał używany do wysyłania komunikatów do usługi z tokenem zabezpieczającym. |
CreateChannelWithActAsToken(SecurityToken, EndpointAddress) |
Tworzy kanał używany do wysyłania komunikatów do usługi z tokenem zabezpieczającym pod określonym adresem punktu końcowego. |
CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri) |
Tworzy kanał służący do wysyłania komunikatów do usługi z tokenem zabezpieczającym pod określonym adresem punktu końcowego za pośrednictwem określonego adresu transportu. |
CreateChannelWithIssuedToken(SecurityToken) |
Tworzy kanał używany do wysyłania komunikatów do usługi z wystawionym tokenem zabezpieczającym. |
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress) |
Tworzy kanał używany do wysyłania komunikatów do usługi z wystawionym tokenem zabezpieczającym pod określonym adresem punktu końcowego. |
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri) |
Tworzy kanał używany do wysyłania komunikatów do usługi z wystawionym tokenem zabezpieczającym pod określonym adresem punktu końcowego za pośrednictwem określonego adresu transportu. |
CreateChannelWithOnBehalfOfToken(SecurityToken) |
Tworzy kanał używany do wysyłania komunikatów do usługi z tokenem zabezpieczającym w imieniu użytkownika. |
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress) |
Tworzy kanał używany do wysyłania komunikatów do usługi z tokenem zabezpieczającym w imieniu tokenu zabezpieczającego pod określonym adresem punktu końcowego. |
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri) |
Tworzy kanał służący do wysyłania komunikatów do usługi z tokenem zabezpieczającym w imieniu określonego adresu punktu końcowego za pośrednictwem określonego adresu transportu. |
CreateDescription() |
Tworzy opis punktu końcowego usługi. |
CreateFactory() |
Tworzy fabrykę kanałów dla bieżącego punktu końcowego fabryki. (Odziedziczone po ChannelFactory) |
EndClose(IAsyncResult) |
Wykonuje operację asynchroniczną w celu zamknięcia obiektu komunikacyjnego. (Odziedziczone po CommunicationObject) |
EndOpen(IAsyncResult) |
Wykonuje operację asynchroniczną, aby otworzyć obiekt komunikacji. (Odziedziczone po CommunicationObject) |
EnsureOpened() |
Otwiera bieżącą fabrykę kanałów, jeśli nie została jeszcze otwarta. (Odziedziczone po ChannelFactory) |
Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
Fault() |
Powoduje przejście obiektu komunikacyjnego z bieżącego stanu na stan błędu. (Odziedziczone po CommunicationObject) |
GetCommunicationObjectType() |
Pobiera typ obiektu komunikacji. (Odziedziczone po CommunicationObject) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetProperty<T>() |
Zwraca żądany obiekt typu , jeśli istnieje, z odpowiedniej warstwy w stosie kanału lub |
GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
InitializeEndpoint(Binding, EndpointAddress) |
Inicjuje punkt końcowy usługi fabryki kanałów z określonym powiązaniem i adresem. (Odziedziczone po ChannelFactory) |
InitializeEndpoint(ServiceEndpoint) |
Inicjuje punkt końcowy usługi fabryki kanałów z określonym punktem końcowym. (Odziedziczone po ChannelFactory) |
InitializeEndpoint(String, EndpointAddress) |
Inicjuje punkt końcowy usługi fabryki kanałów z określonym adresem i konfiguracją. (Odziedziczone po ChannelFactory) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
OnAbort() |
Przerywa wewnętrzną fabrykę kanałów bieżącej fabryki kanałów. (Odziedziczone po ChannelFactory) |
OnBeginClose(TimeSpan, AsyncCallback, Object) |
Rozpoczyna asynchroniczną operację zamykania w wewnętrznej fabryce kanałów bieżącej fabryki kanałów, która ma skojarzony z nim obiekt stanu. (Odziedziczone po ChannelFactory) |
OnBeginOpen(TimeSpan, AsyncCallback, Object) |
Rozpoczyna asynchroniczną operację otwierania w wewnętrznej fabryce kanałów bieżącej fabryki kanałów, która ma skojarzony z nim obiekt stanu. (Odziedziczone po ChannelFactory) |
OnClose(TimeSpan) |
Wywołuje zamknięcie fabryki kanałów wewnętrznych z określonym limitem czasu na zakończenie operacji. (Odziedziczone po ChannelFactory) |
OnClosed() |
Wywoływane podczas przejścia obiektu komunikacyjnego do stanu zamknięcia. (Odziedziczone po CommunicationObject) |
OnClosing() |
Wywoływane podczas przejścia obiektu komunikacyjnego do stanu zamknięcia. (Odziedziczone po CommunicationObject) |
OnEndClose(IAsyncResult) |
Kończy asynchroniczną operację zamykania w wewnętrznej fabryce kanałów bieżącej fabryki kanałów. (Odziedziczone po ChannelFactory) |
OnEndOpen(IAsyncResult) |
Wykonuje asynchroniczną operację otwierania w wewnętrznej fabryce kanałów bieżącej fabryki kanałów. (Odziedziczone po ChannelFactory) |
OnFaulted() |
Wstawia przetwarzanie na obiekcie komunikacji po przejściu do stanu błędu z powodu wywołania operacji błędu synchronicznego. (Odziedziczone po CommunicationObject) |
OnOpen(TimeSpan) |
Wywołuje otwarte w wewnętrznej fabryce kanałów bieżącej fabryki kanałów z określonym limitem czasu na zakończenie operacji. (Odziedziczone po ChannelFactory) |
OnOpened() |
Inicjuje kopię obiektu ClientCredentials tylko do odczytu dla fabryki kanałów. (Odziedziczone po ChannelFactory) |
OnOpening() |
Tworzy fabrykę kanału wewnętrznego dla bieżącego kanału. (Odziedziczone po ChannelFactory) |
Open() |
Powoduje przejście obiektu komunikacyjnego ze stanu utworzonego na otwarty stan. (Odziedziczone po CommunicationObject) |
Open(TimeSpan) |
Powoduje przejście obiektu komunikacyjnego z utworzonego stanu do otwartego stanu w określonym przedziale czasu. (Odziedziczone po CommunicationObject) |
ThrowIfDisposed() |
Zgłasza wyjątek, jeśli obiekt komunikacji jest usuwany. (Odziedziczone po CommunicationObject) |
ThrowIfDisposedOrImmutable() |
Zgłasza wyjątek, jeśli obiekt komunikacji właściwość State nie jest ustawiona na stan Created. (Odziedziczone po CommunicationObject) |
ThrowIfDisposedOrNotOpen() |
Zgłasza wyjątek, jeśli obiekt komunikacji nie znajduje się w stanie Opened. (Odziedziczone po CommunicationObject) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Zdarzenia
Closed |
Występuje, gdy obiekt komunikacji przechodzi do stanu zamkniętego. (Odziedziczone po CommunicationObject) |
Closing |
Występuje, gdy obiekt komunikacji przechodzi do stanu zamknięcia. (Odziedziczone po CommunicationObject) |
Faulted |
Występuje, gdy obiekt komunikacji przechodzi do stanu błędu. (Odziedziczone po CommunicationObject) |
Opened |
Występuje, gdy obiekt komunikacji przechodzi do otwartego stanu. (Odziedziczone po CommunicationObject) |
Opening |
Występuje, gdy obiekt komunikacji przechodzi do stanu otwierania. (Odziedziczone po CommunicationObject) |
Jawne implementacje interfejsu
IAsyncDisposable.DisposeAsync() |
Fabryka, która tworzy kanały różnych typów, które są używane przez klientów do wysyłania komunikatów do różnych skonfigurowanych punktów końcowych usługi. (Odziedziczone po ChannelFactory) |
IDisposable.Dispose() |
Zamyka bieżącą fabrykę kanałów. (Odziedziczone po ChannelFactory) |
Metody rozszerzania
ConfigureAwait(IAsyncDisposable, Boolean) |
Konfiguruje, w jaki sposób będą wykonywane oczekiwania na zadania zwrócone z asynchronicznego jednorazowego użytku. |
Dotyczy
Bezpieczeństwo wątkowe
Ten typ jest bezpieczny wątkiem.