ChannelFactory Třída

Definice

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

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 IChannelFactory
    interface ICommunicationObject
    interface IDisposable
    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
Dědičnost
ChannelFactory
Odvozené
Implementuje

Příklady

Následující příklad kódu ukazuje, jak programově vložit chování klienta před vytvořením objektu kanálu továrnou.

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

Poznámky

Továrny kanálů, které implementují IChannelFactory rozhraní a přidružené kanály, jsou obecně používány iniciátory komunikačního modelu. Továrny naslouchacího IChannelListener procesu, které implementují rozhraní a jejich přidružené naslouchací procesy, poskytují mechanismy, se kterými jsou kanály přijímány pro komunikaci.

Tato třída není součástí modelu kanálu, ale modelu služby. Metoda CreateFactory poskytuje prostředky k vytvoření koncového IChannelFactory bodu služby. Slouží k vytvoření klienta, který se připojí ke smlouvě rozhraní služby bez použití metadat nebo zásad.

Poznámka

Nastavení ChannelFactory.Credentials.Windows.AllowedImpersonationLevel na vždy vede k TokenImpersonationLevel.Anonymous anonymnímu přihlášení bez ohledu na úroveň zosobnění.

Zvláštní poznámka pro uživatele spravovaného jazyka C++, kteří jsou odvozeni z této třídy:

  • Vložte kód čištění do (On)(Begin)Close (a/nebo OnAbort), ne do destruktoru.

  • Vyhněte se destruktorů; způsobí, že kompilátor automaticky vygeneruje IDisposable.

  • Vyhněte se ne referenčním členům; mohou způsobit, že kompilátor automaticky vygeneruje IDisposable.

  • Vyhněte se použití finalizátoru; Ale pokud ho zahrnete, měli byste potlačit upozornění sestavení a volat SuppressFinalize(Object) a finalizátor samotný z (On)(Begin)Close (nebo OnAbort), aby se emulovalo, jaké by bylo automaticky vygenerované IDisposable chování.

Při programovém přidávání chování se chování přidá do příslušné Behaviors vlastnosti ChannelFactory před vytvořením libovolného kanálu. Ukázku kódu najdete v ukázkové části.

Konstruktory

ChannelFactory()

Inicializuje novou instanci ChannelFactory třídy.

Vlastnosti

Credentials

Získá přihlašovací údaje používané klienty ke komunikaci koncového bodu služby přes kanály vytvořené továrnou.

DefaultCloseTimeout

Získá výchozí časový interval zadaný pro dokončení operace uzavření.

DefaultOpenTimeout

Získá výchozí časový interval zadaný pro dokončení operace otevření.

Endpoint

Získá koncový bod služby, ke kterému se kanály vytvořené továrnou připojují.

IsDisposed

Získá hodnotu, která označuje, zda komunikační objekt byl odstraněn.

(Zděděno od CommunicationObject)
State

Získá hodnotu, která označuje aktuální stav komunikačního objektu.

(Zděděno od CommunicationObject)
ThisLock

Získá vzájemně se vylučující zámek, který chrání instanci třídy během přechodu stavu.

(Zděděno od CommunicationObject)

Metody

Abort()

Způsobí okamžitý přechod komunikačního objektu z aktuálního stavu do koncového stavu.

(Zděděno od CommunicationObject)
ApplyConfiguration(String)

Inicializuje objekt pro vytváření kanálů pomocí chování poskytovaného zadaným konfiguračním souborem a chováním v koncovém bodu služby objektu pro vytváření kanálů.

BeginClose(AsyncCallback, Object)

Zahájí asynchronní operaci k zavření komunikačního objektu.

(Zděděno od CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Zahájí asynchronní operaci uzavření komunikačního objektu se zadaným časovým limitem.

(Zděděno od CommunicationObject)
BeginOpen(AsyncCallback, Object)

Zahájí asynchronní operaci k otevření komunikačního objektu.

(Zděděno od CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Zahájí asynchronní operaci, která otevře komunikační objekt v zadaném časovém intervalu.

(Zděděno od CommunicationObject)
Close()

Způsobí přechod komunikačního objektu z aktuálního stavu do uzavřeného stavu.

(Zděděno od CommunicationObject)
Close(TimeSpan)

Způsobí přechod komunikačního objektu z aktuálního stavu do uzavřeného stavu v zadaném časovém intervalu.

(Zděděno od CommunicationObject)
CreateDescription()

Při implementaci v odvozené třídě vytvoří popis koncového bodu služby přidruženého k objektu pro vytváření kanálů.

CreateFactory()

Vytvoří objekt pro vytváření kanálů pro aktuální koncový bod továrny.

EndClose(IAsyncResult)

Dokončí asynchronní operaci k zavření komunikačního objektu.

(Zděděno od CommunicationObject)
EndOpen(IAsyncResult)

Dokončí asynchronní operaci k otevření komunikačního objektu.

(Zděděno od CommunicationObject)
EnsureOpened()

Otevře aktuální objekt pro vytváření kanálů, pokud ještě není otevřen.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
Fault()

Způsobí přechod komunikačního objektu z aktuálního stavu do vadného stavu.

(Zděděno od CommunicationObject)
GetCommunicationObjectType()

Získá typ komunikačního objektu.

(Zděděno od CommunicationObject)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetProperty<T>()

Vrátí zadaný objekt požadovaný, pokud je k dispozici, z příslušné vrstvy v zásobníku kanálů, nebo null pokud není k dispozici.

GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
InitializeEndpoint(Binding, EndpointAddress)

Inicializuje koncový bod služby objektu pro vytváření kanálů se zadanou vazbou a adresou.

InitializeEndpoint(EndpointAddress)

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

InitializeEndpoint(ServiceEndpoint)

Inicializuje koncový bod služby objektu pro vytváření kanálů se zadaným koncovým bodem.

InitializeEndpoint(String, EndpointAddress)

Inicializuje koncový bod služby objektu pro vytváření kanálů se zadanou adresou a konfigurací.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnAbort()

Ukončí vytváření vnitřního kanálu aktuálního kanálu.

OnBeginClose(TimeSpan, AsyncCallback, Object)

Zahájí asynchronní operaci zavření v objektu pro vytváření vnitřního kanálu aktuálního objektu pro vytváření kanálů, který má přidružený objekt stavu.

OnBeginOpen(TimeSpan, AsyncCallback, Object)

Zahájí asynchronní operaci otevření v objektu pro vytváření vnitřního kanálu aktuálního kanálu, který má přidružený objekt stavu.

OnClose(TimeSpan)

Volání uzavřou na objektu pro vytváření vnitřního kanálu se zadaným časovým limitem pro dokončení operace.

OnCloseAsync(TimeSpan)

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

OnCloseAsync(TimeSpan)

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

(Zděděno od CommunicationObject)
OnClosed()

Vyvolána během přechodu komunikačního objektu do koncového stavu.

(Zděděno od CommunicationObject)
OnClosing()

Vyvolána během přechodu komunikačního objektu do koncového stavu.

(Zděděno od CommunicationObject)
OnEndClose(IAsyncResult)

Dokončí asynchronní operaci zavření v objektu pro vytváření vnitřního kanálu aktuálního kanálu.

OnEndOpen(IAsyncResult)

Dokončí asynchronní operaci otevření v objektu pro vytváření vnitřního kanálu aktuálního kanálu.

OnFaulted()

Vloží zpracování komunikačního objektu poté, co přejde do chybového stavu kvůli vyvolání synchronní operace selhání.

(Zděděno od CommunicationObject)
OnOpen(TimeSpan)

Volání otevřená v objektu pro vytváření vnitřního kanálu aktuálního kanálu se zadaným časovým limitem pro dokončení operace.

OnOpenAsync(TimeSpan)

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

OnOpenAsync(TimeSpan)

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

(Zděděno od CommunicationObject)
OnOpened()

Inicializuje kopii objektu ClientCredentials jen pro čtení pro kanál factory.

OnOpening()

Vytvoří objekt pro vytváření vnitřního kanálu pro aktuální kanál.

Open()

Způsobí přechod komunikačního objektu z vytvořeného stavu do otevřeného stavu.

(Zděděno od CommunicationObject)
Open(TimeSpan)

Způsobí přechod komunikačního objektu z vytvořeného stavu do otevřeného stavu v zadaném časovém intervalu.

(Zděděno od CommunicationObject)
ThrowIfDisposed()

Vyvolá výjimku, pokud je komunikační objekt odstraněn.

(Zděděno od CommunicationObject)
ThrowIfDisposedOrImmutable()

Vyvolá výjimku, pokud komunikační objekt State vlastnost není nastaven na Created stav.

(Zděděno od CommunicationObject)
ThrowIfDisposedOrNotOpen()

Vyvolá výjimku, pokud komunikační objekt není ve Opened stavu.

(Zděděno od CommunicationObject)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Událost

Closed

Nastane, když komunikační objekt přejde do uzavřeného stavu.

(Zděděno od CommunicationObject)
Closing

Nastane při přechodu komunikačního objektu do koncového stavu.

(Zděděno od CommunicationObject)
Faulted

Nastane při přechodu komunikačního objektu do chybového stavu.

(Zděděno od CommunicationObject)
Opened

Nastane, když komunikační objekt přejde do otevřeného stavu.

(Zděděno od CommunicationObject)
Opening

Nastane, když komunikační objekt přejde do stavu otevření.

(Zděděno od CommunicationObject)

Explicitní implementace rozhraní

IAsyncCommunicationObject.CloseAsync(TimeSpan)

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

(Zděděno od CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

(Zděděno od CommunicationObject)
IAsyncDisposable.DisposeAsync()

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

IDisposable.Dispose()

Zavře aktuální objekt pro vytváření kanálů.

Metody rozšíření

CloseHelperAsync(ICommunicationObject, TimeSpan)

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

OpenHelperAsync(ICommunicationObject, TimeSpan)

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

GetInternalCloseTimeout(CommunicationObject)

Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguruje, jak se provádí čekání na úlohy vrácené z asynchronního jednorázového použití.

Platí pro