ChannelFactory<TChannel> Klass

Definition

En fabrik som skapar kanaler av olika typer som används av klienter för att skicka meddelanden till olika konfigurerade tjänstslutpunkter.

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)

Typparametrar

TChannel

Den typ av kanal som produceras av kanalfabriken. Den här typen måste vara antingen IOutputChannel eller IRequestChannel.

Arv
ChannelFactory<TChannel>
Härledda
Implementeringar

Exempel

Följande exempel visar hur du skapar en kanalfabrik och använder den för att skapa och hantera kanaler.

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

I följande kodexempel visas hur du infogar programmatiskt ett klientbeteende innan du skapar kanalobjektet av fabriken.

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

Kommentarer

Den här allmänna klassen möjliggör mer avancerade scenarier där det finns ett krav på att skapa en kanalfabrik som kan användas för att skapa mer än en typ av kanal.

När du lägger till beteenden programmatiskt läggs beteendet till i lämplig Behaviors egenskap ChannelFactory innan någon kanal skapas. Se exempelavsnittet för ett kodexempel.

Klient- eller samtalsprogram (till exempel mellannivåprogram är också klientprogram) som använder den här typen har också komplexa tillståndshanteringsbehov och prestandabehov. Mer information om dessa scenarier finns iMiddle-Tier Klientprogram.

Konstruktorer

Name Description
ChannelFactory<TChannel>()

Initierar en ny instans av ChannelFactory<TChannel> klassen.

ChannelFactory<TChannel>(Binding, EndpointAddress)

Initierar en ny instans av ChannelFactory<TChannel> klassen med en angiven bindning och slutpunktsadress.

ChannelFactory<TChannel>(Binding, String)

Initierar en ny instans av ChannelFactory<TChannel> klassen med en angiven bindning och fjärradress.

ChannelFactory<TChannel>(Binding)

Initierar en ny instans av ChannelFactory<TChannel> klassen.

ChannelFactory<TChannel>(ServiceEndpoint)

Initierar en ny instans av ChannelFactory<TChannel> klassen som skapar kanaler med en angiven slutpunkt.

ChannelFactory<TChannel>(String, EndpointAddress)

Initierar en ny instans av klassen ChannelFactory<TChannel> som är associerad med ett angivet namn för slutpunktskonfigurationen och fjärradressen.

ChannelFactory<TChannel>(String)

Initierar en ny instans av ChannelFactory<TChannel> klassen med ett angivet slutpunktskonfigurationsnamn.

ChannelFactory<TChannel>(Type)

Initierar en ny instans av ChannelFactory<TChannel> klassen.

Egenskaper

Name Description
Credentials

Hämtar de autentiseringsuppgifter som används av klienter för att kommunicera en tjänstslutpunkt via de kanaler som produceras av fabriken.

(Ärvd från ChannelFactory)
DefaultCloseTimeout

Hämtar standardintervallet för den tid som angetts för att en stängningsåtgärd ska slutföras.

(Ärvd från ChannelFactory)
DefaultOpenTimeout

Hämtar standardintervallet för den tid som angetts för att en öppen åtgärd ska slutföras.

(Ärvd från ChannelFactory)
Endpoint

Hämtar tjänstslutpunkten som kanalerna som produceras av fabriken ansluter till.

(Ärvd från ChannelFactory)
IsDisposed

Hämtar ett värde som anger om kommunikationsobjektet har tagits bort.

(Ärvd från CommunicationObject)
State

Hämtar ett värde som anger det aktuella tillståndet för kommunikationsobjektet.

(Ärvd från CommunicationObject)
ThisLock

Hämtar det ömsesidigt uteslutande låset som skyddar klassinstansen under en tillståndsövergång.

(Ärvd från CommunicationObject)

Metoder

Name Description
Abort()

Gör att ett kommunikationsobjekt omedelbart övergår från dess aktuella tillstånd till det avslutande tillståndet.

(Ärvd från CommunicationObject)
ApplyConfiguration(String)

Initierar kanalfabriken med de beteenden som tillhandahålls av en angiven konfigurationsfil och med dem i tjänstslutpunkten för kanalfabriken.

(Ärvd från ChannelFactory)
BeginClose(AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att stänga ett kommunikationsobjekt.

(Ärvd från CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att stänga ett kommunikationsobjekt med en angiven tidsgräns.

(Ärvd från CommunicationObject)
BeginOpen(AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att öppna ett kommunikationsobjekt.

(Ärvd från CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att öppna ett kommunikationsobjekt inom ett angivet tidsintervall.

(Ärvd från CommunicationObject)
Close()

Gör att ett kommunikationsobjekt övergår från dess aktuella tillstånd till det stängda tillståndet.

(Ärvd från CommunicationObject)
Close(TimeSpan)

Gör att ett kommunikationsobjekt övergår från dess aktuella tillstånd till det stängda tillståndet inom ett angivet tidsintervall.

(Ärvd från CommunicationObject)
CreateChannel()

Skapar en kanal av en angiven typ till en angiven slutpunktsadress.

CreateChannel(Binding, EndpointAddress, Uri)

Skapar en kanal av en angiven typ som används för att skicka meddelanden till en tjänstslutpunkt på en angiven transportadress som har konfigurerats med en angiven bindning.

CreateChannel(Binding, EndpointAddress)

Skapar en kanal av en angiven typ som används för att skicka meddelanden till en tjänstslutpunkt som har konfigurerats med en angiven bindning.

CreateChannel(EndpointAddress, Uri)

Skapar en kanal som används för att skicka meddelanden till en tjänst på en specifik slutpunktsadress via en angiven transportadress.

CreateChannel(EndpointAddress)

Skapar en kanal som används för att skicka meddelanden till en tjänst på en specifik slutpunktsadress.

CreateChannel(String)

Skapar en kanal som används för att skicka meddelanden till en tjänst vars slutpunkt har konfigurerats på ett angivet sätt.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en åtgärd som säkerhetstoken på en specifik slutpunktsadress via en angiven transportadress.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en åtgärd som säkerhetstoken på en specifik slutpunktsadress.

CreateChannelWithActAsToken(SecurityToken)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en åtgärd som säkerhetstoken.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en utfärdad säkerhetstoken på en specifik slutpunktsadress via en angiven transportadress.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en utfärdad säkerhetstoken på en specifik slutpunktsadress.

CreateChannelWithIssuedToken(SecurityToken)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en utfärdad säkerhetstoken.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en för säkerhetstokens räkning på en specifik slutpunktsadress via en angiven transportadress.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en för säkerhetstokens räkning på en specifik slutpunktsadress.

CreateChannelWithOnBehalfOfToken(SecurityToken)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en för säkerhetstokens räkning.

CreateDescription()

Skapar en beskrivning av tjänstslutpunkten.

CreateFactory()

Skapar kanalfabriken för den aktuella slutpunkten för fabriken.

(Ärvd från ChannelFactory)
EndClose(IAsyncResult)

Slutför en asynkron åtgärd för att stänga ett kommunikationsobjekt.

(Ärvd från CommunicationObject)
EndOpen(IAsyncResult)

Slutför en asynkron åtgärd för att öppna ett kommunikationsobjekt.

(Ärvd från CommunicationObject)
EnsureOpened()

Öppnar den aktuella kanalfabriken om den inte har öppnats ännu.

(Ärvd från ChannelFactory)
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
Fault()

Gör att ett kommunikationsobjekt övergår från dess aktuella tillstånd till det felaktiga tillståndet.

(Ärvd från CommunicationObject)
GetCommunicationObjectType()

Hämtar typen av kommunikationsobjekt.

(Ärvd från CommunicationObject)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetProperty<T>()

Returnerar det typerade objektet som begärs, om det finns, från lämpligt lager i kanalstacken eller null om det inte finns.

(Ärvd från ChannelFactory)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InitializeEndpoint(Binding, EndpointAddress)

Initierar tjänstslutpunkten för kanalfabriken med en angiven bindning och adress.

(Ärvd från ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

Initierar tjänstslutpunkten för kanalfabriken med en angiven slutpunkt.

(Ärvd från ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

Initierar tjänstslutpunkten för kanalfabriken med en angiven adress och konfiguration.

(Ärvd från ChannelFactory)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnAbort()

Avslutar den inre kanalfabriken för den aktuella kanalfabriken.

(Ärvd från ChannelFactory)
OnBeginClose(TimeSpan, AsyncCallback, Object)

Påbörjar en asynkron stängningsåtgärd på den inre kanalfabriken i den aktuella kanalfabriken som har ett tillståndsobjekt associerat med den.

(Ärvd från ChannelFactory)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

Påbörjar en asynkron öppen åtgärd på den inre kanalfabriken i den aktuella kanalfabriken som har ett tillståndsobjekt associerat med den.

(Ärvd från ChannelFactory)
OnClose(TimeSpan)

Anrop stänger på den inre kanalfabriken med en angiven tidsgräns för slutförandet av åtgärden.

(Ärvd från ChannelFactory)
OnClosed()

Anropas under övergången av ett kommunikationsobjekt till stängningstillståndet.

(Ärvd från CommunicationObject)
OnClosing()

Anropas under övergången av ett kommunikationsobjekt till stängningstillståndet.

(Ärvd från CommunicationObject)
OnEndClose(IAsyncResult)

Slutför en asynkron stängningsåtgärd på den inre kanalfabriken i den aktuella kanalfabriken.

(Ärvd från ChannelFactory)
OnEndOpen(IAsyncResult)

Slutför en asynkron öppen åtgärd på den inre kanalfabriken i den aktuella kanalfabriken.

(Ärvd från ChannelFactory)
OnFaulted()

Infogar bearbetning av ett kommunikationsobjekt när det övergår till feltillståndet på grund av att en synkron felåtgärd har anropats.

(Ärvd från CommunicationObject)
OnOpen(TimeSpan)

Anrop öppnas på den inre kanalfabriken i den aktuella kanalfabriken med en angiven tidsgräns för slutförandet av åtgärden.

(Ärvd från ChannelFactory)
OnOpened()

Initierar en skrivskyddad kopia av ClientCredentials objektet för kanalfabriken.

(Ärvd från ChannelFactory)
OnOpening()

Skapar den inre kanalfabriken för den aktuella kanalen.

(Ärvd från ChannelFactory)
Open()

Gör att ett kommunikationsobjekt övergår från det skapade tillståndet till det öppnade tillståndet.

(Ärvd från CommunicationObject)
Open(TimeSpan)

Gör att ett kommunikationsobjekt övergår från det skapade tillståndet till det öppna tillståndet inom ett angivet tidsintervall.

(Ärvd från CommunicationObject)
ThrowIfDisposed()

Utlöser ett undantag om kommunikationsobjektet tas bort.

(Ärvd från CommunicationObject)
ThrowIfDisposedOrImmutable()

Utlöser ett undantag om kommunikationsobjektet State som egenskapen inte är inställd på tillståndet Created .

(Ärvd från CommunicationObject)
ThrowIfDisposedOrNotOpen()

Utlöser ett undantag om kommunikationsobjektet inte är i tillståndet Opened .

(Ärvd från CommunicationObject)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Händelser

Name Description
Closed

Inträffar när ett kommunikationsobjekt övergår till stängt tillstånd.

(Ärvd från CommunicationObject)
Closing

Inträffar när ett kommunikationsobjekt övergår till det avslutande tillståndet.

(Ärvd från CommunicationObject)
Faulted

Inträffar när ett kommunikationsobjekt övergår till feltillståndet.

(Ärvd från CommunicationObject)
Opened

Inträffar när ett kommunikationsobjekt övergår till öppet tillstånd.

(Ärvd från CommunicationObject)
Opening

Inträffar när ett kommunikationsobjekt övergår till öppningstillståndet.

(Ärvd från CommunicationObject)

Explicita gränssnittsimplementeringar

Name Description
IAsyncDisposable.DisposeAsync()

En fabrik som skapar kanaler av olika typer som används av klienter för att skicka meddelanden till olika konfigurerade tjänstslutpunkter.

(Ärvd från ChannelFactory)
IDisposable.Dispose()

Stänger den aktuella kanalfabriken.

(Ärvd från ChannelFactory)

Gäller för

Trådsäkerhet

Den här typen är trådsäker.