ChannelFactory Klasa

Definicja

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
ChannelFactory
Pochodne
Implementuje

Przykłady

Poniższy przykład kodu pokazuje, jak programowo wstawić 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, które implementują IChannelFactory interfejs i skojarzone z nimi kanały, są zwykle używane przez inicjatorów wzorca komunikacji. Fabryki odbiorników, które implementują IChannelListener interfejs i skojarzone odbiorniki, zapewniają mechanizmy akceptowanych kanałów do komunikacji.

Ta klasa nie jest częścią modelu kanału, ale modelu usługi. Metoda CreateFactory zapewnia metodę tworzenia punktu IChannelFactory końcowego usługi. Służy do konstruowania klienta podłączanego do kontraktu interfejsu w usłudze bez używania metadanych ani zasad.

Uwaga

Ustawienie w ChannelFactory.Credentials.Windows.AllowedImpersonationLevel celu TokenImpersonationLevel.Anonymous zawsze powoduje logowanie anonimowe niezależnie od poziomu personifikacji.

Uwaga specjalna dla użytkowników zarządzanego języka C++ pochodzącego z tej klasy:

  • Umieść kod oczyszczania w (On)(Begin)Close (i/lub OnAbort), a nie w destruktorze.

  • Unikaj destruktorów; powodują, że kompilator automatycznie generuje IDisposableelement .

  • Unikaj elementów członkowskich innych niż odwołania; mogą spowodować, że kompilator automatycznie wygeneruje IDisposableelement .

  • Unikaj używania finalizatora; ale w przypadku dołączenia należy pominąć ostrzeżenie i wywołanie SuppressFinalize(Object) kompilacji oraz sam finalizator z (On)(Begin)Close (i/lub OnAbort), aby naśladować zachowanie wygenerowane IDisposable automatycznie.

Podczas programowego dodawania zachowań zachowanie jest dodawane do odpowiedniej Behaviors właściwości przed ChannelFactory 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 produkowane 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 wykluczaną blokadę, która chroni wystąpienie klasy podczas przejścia stanu.

(Odziedziczone po CommunicationObject)

Metody

Abort()

Powoduje natychmiastowe przejście obiektu komunikacji z bieżącego stanu do stanu zamknięcia.

(Odziedziczone po CommunicationObject)
ApplyConfiguration(String)

Inicjuje fabrykę kanałów przy użyciu zachowań udostępnianych przez określony plik konfiguracji i z tymi w punkcie końcowym usługi fabryki kanałów.

BeginClose(AsyncCallback, Object)

Rozpoczyna operację asynchroniczną, aby zamknąć obiekt 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ą, aby otworzyć obiekt 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 komunikacji z bieżącego stanu do stanu zamkniętego.

(Odziedziczone po CommunicationObject)
Close(TimeSpan)

Powoduje przejście obiektu komunikacji 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)

Kończy operację asynchroniczną, aby zamknąć obiekt komunikacji.

(Odziedziczone po CommunicationObject)
EndOpen(IAsyncResult)

Kończy operację asynchroniczną, aby otworzyć obiekt komunikacyjny.

(Odziedziczone po CommunicationObject)
EnsureOpened()

Otwiera bieżącą fabrykę kanałów, jeśli nie została jeszcze otwarta.

Equals(Object)

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

(Odziedziczone po Object)
Fault()

Powoduje przejście obiektu komunikacji z bieżącego stanu do stanu 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 z odpowiedniej warstwy w stosie kanału lub null jeśli nie istnieje.

GetType()

Type Pobiera bieżące wystąpienie.

(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 Objectelementu .

(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 ukończenia 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)

Kończy asynchroniczną operację otwierania w wewnętrznej fabryce kanałów bieżącej fabryki kanałów.

OnFaulted()

Wstawia przetwarzanie w obiekcie komunikacji po przejściu do stanu błędu z powodu wywołania operacji synchronicznej błędu.

(Odziedziczone po CommunicationObject)
OnOpen(TimeSpan)

Wywołuje otwarte w wewnętrznej fabryce kanałów bieżącej fabryki kanałów z określonym limitem czasu ukończenia operacji.

OnOpened()

Inicjuje ClientCredentials kopię obiektu tylko do odczytu dla fabryki kanałów.

OnOpening()

Tworzy wewnętrzną fabrykę kanałów dla bieżącego kanału.

Open()

Powoduje przejście obiektu komunikacji z utworzonego stanu do stanu otwartego.

(Odziedziczone po CommunicationObject)
Open(TimeSpan)

Powoduje przejście obiektu komunikacji z utworzonego stanu do stanu otwartego 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 State komunikacji, dla której właściwość nie jest ustawiona Created .

(Odziedziczone po CommunicationObject)
ThrowIfDisposedOrNotOpen()

Zgłasza wyjątek, jeśli obiekt komunikacji nie znajduje się w Opened stanie.

(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 uszkodzonego.

(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.

Dotyczy