ChannelFactory 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.
Tworzy kanały używane przez klientów do wysyłania komunikatów do punktów końcowych usługi i zarządza nimi.
public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IDisposable, System::ServiceModel::Channels::IChannelFactory
public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IAsyncDisposable, IDisposable, System::ServiceModel::Channels::IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IDisposable, System.ServiceModel.Channels.IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IAsyncDisposable, IDisposable, System.ServiceModel.Channels.IChannelFactory
type ChannelFactory = class
inherit CommunicationObject
interface IDisposable
interface IChannelFactory
interface ICommunicationObject
type ChannelFactory = class
inherit CommunicationObject
interface IDisposable
interface IChannelFactory
interface ICommunicationObject
interface IAsyncDisposable
type ChannelFactory = class
inherit CommunicationObject
interface IChannelFactory
interface ICommunicationObject
interface IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IChannelFactory, IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IAsyncDisposable, IChannelFactory, IDisposable
- Dziedziczenie
- Pochodne
- Implementuje
Przykłady
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
Fabryki kanałów implementujące interfejs IChannelFactory i skojarzone z nimi kanały są zwykle używane przez inicjatorów wzorca komunikacji. Fabryki odbiorników, które implementują interfejs IChannelListener i skojarzone z nimi odbiorniki, zapewniają mechanizmy akceptowanych kanałów do komunikacji.
Ta klasa nie jest częścią modelu kanału, ale modelu usługi. Metoda CreateFactory umożliwia utworzenie IChannelFactory dla punktu końcowego usługi. Służy do konstruowania klienta, który podłącza się do kontraktu interfejsu w usłudze bez używania metadanych lub zasad.
Nuta
Ustawienie ChannelFactory.Credentials.Windows.AllowedImpersonationLevel
na TokenImpersonationLevel.Anonymous
zawsze powoduje anonimowe logowanie niezależnie od poziomu personifikacji.
Szczególna uwaga dla użytkowników zarządzanego języka C++ pochodnych z tej klasy:
Umieść kod oczyszczania w (On)(Begin)Close (i/lub OnAbort), a nie w destruktora.
Unikaj destruktorów; powodują one, że kompilator automatycznie generuje IDisposable.
Unikaj elementów członkowskich niebędących odwołaniami; mogą spowodować, że kompilator automatycznie wygeneruje IDisposable.
Unikaj używania finalizatora; ale jeśli go dołączysz, należy pominąć ostrzeżenie kompilacji i wywołać SuppressFinalize(Object) i sam finalizator z (On)(Begin)Close (i/lub OnAbort), aby emulować zachowanie wygenerowane automatycznie IDisposable.
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.
Konstruktory
ChannelFactory() |
Inicjuje nowe wystąpienie klasy ChannelFactory. |
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ę. |
DefaultCloseTimeout |
Pobiera domyślny interwał czasu podany na zakończenie operacji zamknięcia. |
DefaultOpenTimeout |
Pobiera domyślny interwał czasu podany dla operacji otwierania do ukończenia. |
Endpoint |
Pobiera punkt końcowy usługi, z którym łączą się kanały utworzone przez fabrykę. |
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. |
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) |
CreateDescription() |
Po zaimplementowaniu w klasie pochodnej tworzy opis punktu końcowego usługi skojarzonego z fabryką kanałów. |
CreateFactory() |
Tworzy fabrykę kanałów dla bieżącego punktu końcowego fabryki. |
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. |
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. |
InitializeEndpoint(ServiceEndpoint) |
Inicjuje punkt końcowy usługi fabryki kanałów z określonym punktem końcowym. |
InitializeEndpoint(String, EndpointAddress) |
Inicjuje punkt końcowy usługi fabryki kanałów z określonym adresem i konfiguracją. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
OnAbort() |
Przerywa wewnętrzną fabrykę kanałów bieżącej fabryki kanałów. |
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. |
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. |
OnClose(TimeSpan) |
Wywołuje zamknięcie fabryki kanałów wewnętrznych z określonym limitem czasu na zakończenie operacji. |
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. |
OnEndOpen(IAsyncResult) |
Wykonuje asynchroniczną operację otwierania w wewnętrznej fabryce kanałów bieżącej fabryki kanałów. |
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. |
OnOpened() |
Inicjuje kopię obiektu ClientCredentials tylko do odczytu dla fabryki kanałów. |
OnOpening() |
Tworzy fabrykę kanału wewnętrznego dla bieżącego kanału. |
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() |
Tworzy kanały używane przez klientów do wysyłania komunikatów do punktów końcowych usługi i zarządza nimi. |
IDisposable.Dispose() |
Zamyka bieżącą fabrykę kanałów. |
Metody rozszerzania
ConfigureAwait(IAsyncDisposable, Boolean) |
Konfiguruje, w jaki sposób będą wykonywane oczekiwania na zadania zwrócone z asynchronicznego jednorazowego użytku. |