ChannelFactory<TChannel> Třída

Definice

Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

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
    interface ICommunicationObject
    interface IChannelFactory<'Channel>
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory<'Channel>
    interface IChannelFactory
    interface ICommunicationObject
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)

Parametry typu

TChannel

Typ kanálu vytvořeného objektem pro vytváření kanálů. Tento typ musí být nebo IOutputChannelIRequestChannel.

Dědičnost
ChannelFactory<TChannel>
Odvozené
Implementuje

Příklady

Následující ukázka ukazuje, jak vytvořit objekt pro vytváření kanálů a používat ho k vytváření a správě kanálů.

    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();
}

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

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

Tato obecná třída umožňuje pokročilejší scénáře, kdy existuje požadavek na vytvoření objektu pro vytváření kanálů, který lze použít k vytvoření více než jednoho typu kanálu.

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

Často klientské nebo volající aplikace (například aplikace střední vrstvy jsou také klientské aplikace) používající tento typ mají také požadavky na složitou správu stavu a také požadavky na výkon. Další informace o těchto scénářích najdete v tématu Věnovaném klientským aplikacím střední vrstvy.

Konstruktory

ChannelFactory<TChannel>()

Inicializuje novou instanci ChannelFactory<TChannel> třídy .

ChannelFactory<TChannel>(Binding)

Inicializuje novou instanci ChannelFactory<TChannel> třídy .

ChannelFactory<TChannel>(Binding, EndpointAddress)

Inicializuje novou instanci ChannelFactory<TChannel> třídy se zadanou vazbou a adresou koncového bodu.

ChannelFactory<TChannel>(Binding, String)

Inicializuje novou instanci ChannelFactory<TChannel> třídy se zadanou vazbou a vzdálenou adresou.

ChannelFactory<TChannel>(ServiceEndpoint)

Inicializuje novou instanci ChannelFactory<TChannel> třídy, která vytváří kanály se zadaným koncovým bodem.

ChannelFactory<TChannel>(String)

Inicializuje novou instanci ChannelFactory<TChannel> třídy se zadaným názvem konfigurace koncového bodu.

ChannelFactory<TChannel>(String, EndpointAddress)

Inicializuje novou instanci ChannelFactory<TChannel> třídy přidružené k zadanému názvu konfigurace koncového bodu a vzdálené adresy.

ChannelFactory<TChannel>(Type)

Inicializuje novou instanci ChannelFactory<TChannel> 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.

(Zděděno od ChannelFactory)
DefaultCloseTimeout

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

(Zděděno od ChannelFactory)
DefaultOpenTimeout

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

(Zděděno od ChannelFactory)
Endpoint

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

(Zděděno od ChannelFactory)
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í, že komunikační objekt okamžitě přejde z aktuálního stavu do uzavírací.

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

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

(Zděděno od ChannelFactory)
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 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)
CreateChannel()

Vytvoří kanál zadaného typu na zadanou adresu koncového bodu.

CreateChannel(Binding, EndpointAddress)

Vytvoří kanál zadaného typu, který se používá k odesílání zpráv do koncového bodu služby, který je nakonfigurován se zadanou vazbou.

CreateChannel(Binding, EndpointAddress, Uri)

Vytvoří kanál zadaného typu, který se používá k odesílání zpráv do koncového bodu služby na zadané přenosové adrese, která je nakonfigurována se zadanou vazbou.

CreateChannel(EndpointAddress)

Vytvoří kanál, který se používá k odesílání zpráv do služby na konkrétní adrese koncového bodu.

CreateChannel(EndpointAddress, Uri)

Vytvoří kanál, který se používá k odesílání zpráv do služby na konkrétní adresu koncového bodu prostřednictvím zadané přenosové adresy.

CreateChannel(String)

Vytvoří kanál, který se používá k odesílání zpráv do služby, jejíž koncový bod je nakonfigurovaný zadaným způsobem.

CreateChannelWithActAsToken(SecurityToken)

Vytvoří kanál, který se používá k odesílání zpráv do služby s tokenem zabezpečení.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

Vytvoří kanál, který se používá k odesílání zpráv do služby s tokenem zabezpečení na konkrétní adrese koncového bodu.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

Vytvoří kanál, který se používá k odesílání zpráv do služby s tokenem zabezpečení na konkrétní adrese koncového bodu prostřednictvím zadané přenosové adresy.

CreateChannelWithIssuedToken(SecurityToken)

Vytvoří kanál, který se používá k odesílání zpráv do služby s vydaným tokenem zabezpečení.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

Vytvoří kanál, který se používá k odesílání zpráv do služby s vydaným tokenem zabezpečení na konkrétní adrese koncového bodu.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

Vytvoří kanál, který se používá k odesílání zpráv do služby s vystaveným tokenem zabezpečení na konkrétní adrese koncového bodu prostřednictvím zadané přenosové adresy.

CreateChannelWithOnBehalfOfToken(SecurityToken)

Vytvoří kanál, který se používá k odesílání zpráv do služby s tokenem zabezpečení jménem.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

Vytvoří kanál, který se používá k odesílání zpráv do služby s tokenem zabezpečení jménem na konkrétní adrese koncového bodu.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

Vytvoří kanál, který se používá k odesílání zpráv službě s tokenem zabezpečení jménem na konkrétní adresu koncového bodu prostřednictvím zadané přenosové adresy.

CreateDescription()

Vytvoří popis koncového bodu služby.

CreateFactory()

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

(Zděděno od ChannelFactory)
EndClose(IAsyncResult)

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

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

Dokončí asynchronní operaci pro 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ý.

(Zděděno od ChannelFactory)
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 stavu selhání.

(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í typovaný objekt požadovaný (pokud existuje) z příslušné vrstvy v zásobníku kanálů nebo null pokud neexistuje.

(Zděděno od ChannelFactory)
GetType()

Type Získá z aktuální instance.

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

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

(Zděděno od ChannelFactory)
InitializeEndpoint(EndpointAddress)

Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

(Zděděno od ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

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

(Zděděno od ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

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

(Zděděno od ChannelFactory)
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.

(Zděděno od ChannelFactory)
OnBeginClose(TimeSpan, AsyncCallback, Object)

Zahájí asynchronní operaci zavření na 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.

(Zděděno od ChannelFactory)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

Zahájí asynchronní operaci otevření na 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.

(Zděděno od ChannelFactory)
OnClose(TimeSpan)

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

(Zděděno od ChannelFactory)
OnCloseAsync(TimeSpan)

Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

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

Vyvoláno během přechodu komunikačního objektu do uzavíraného stavu.

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

Vyvoláno během přechodu komunikačního objektu do uzavíraného stavu.

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

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

(Zděděno od ChannelFactory)
OnEndOpen(IAsyncResult)

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

(Zděděno od ChannelFactory)
OnFaulted()

Vloží zpracování komunikačního objektu poté, co přejde do chybného stavu v důsledku 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.

(Zděděno od ChannelFactory)
OnOpenAsync(TimeSpan)

Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

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

Inicializuje kopii objektu určenou ClientCredentials jen pro čtení pro objekt pro vytváření kanálů.

(Zděděno od ChannelFactory)
OnOpening()

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

(Zděděno od ChannelFactory)
Open()

Způsobí přechod komunikačního objektu ze stavu vytvoření 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í nastavena Created na 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

Vyvolá se při přechodu komunikačního objektu do uzavřeného stavu.

(Zděděno od CommunicationObject)
Closing

Nastane, když komunikační objekt přejde do uzavírací stav.

(Zděděno od CommunicationObject)
Faulted

Vyvolá se při přechodu komunikačního objektu do chybného stavu.

(Zděděno od CommunicationObject)
Opened

Vyvolá se při přechodu komunikačního objektu 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)

Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

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

Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

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

Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

(Zděděno od ChannelFactory)
IDisposable.Dispose()

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

(Zděděno od ChannelFactory)

Metody rozšíření

CloseHelperAsync(ICommunicationObject, TimeSpan)

Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

OpenHelperAsync(ICommunicationObject, TimeSpan)

Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

GetInternalCloseTimeout(CommunicationObject)

Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různě nakonfigurovaných koncových bodů služby.

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguruje, jak se provádí funkce awaits u úloh vrácených z asynchronního jednorázového režimu.

Platí pro

Bezpečný přístup z více vláken

Tento typ je bezpečný pro přístup z více vláken.