ChannelFactory Klas

Definitie

Hiermee maakt en beheert u de kanalen die door clients worden gebruikt om berichten naar service-eindpunten te verzenden.

public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IDisposable, System::ServiceModel::Channels::IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, 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
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IChannelFactory, IDisposable
Overname
ChannelFactory
Afgeleid
Implementeringen

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u programmatisch een clientgedrag invoegt voordat het kanaalobject door de fabriek wordt gemaakt.

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

Opmerkingen

Kanaalfactory's die de IChannelFactory interface en de bijbehorende kanalen implementeren, worden doorgaans gebruikt door de initiators van een communicatiepatroon. Listener factory's die de IChannelListener interface en de bijbehorende listeners implementeren, bieden de mechanismen waarmee kanalen worden geaccepteerd voor communicatie.

Deze klasse maakt geen deel uit van het kanaalmodel, maar van het servicemodel. De CreateFactory methode biedt de middelen om een IChannelFactory voor een service-eindpunt te maken. Gebruik deze om een client te maken die is gekoppeld aan een interfacecontract voor de service zonder metagegevens of beleid te gebruiken.

Note

Als u ChannelFactory.Credentials.Windows.AllowedImpersonationLevel instelt op TokenImpersonationLevel.Anonymous, resulteert dit altijd in een anonieme aanmelding, ongeacht het imitatieniveau.

Speciale opmerking voor beheerde C++-gebruikers die zijn afgeleid van deze klasse:

  • Plaats de opschooncode in (On)(Begin)Close (en/of OnAbort), niet in een destructor.
  • Vermijd destructors; ze zorgen ervoor dat de compiler automatisch genereert IDisposable.
  • Vermijd niet-referentieleden; ze kunnen ertoe leiden dat de compiler automatisch genereert IDisposable.
  • Vermijd het gebruik van een finalizer; maar als u er een opneemt, moet u de buildwaarschuwing en -aanroep SuppressFinalize(Object) onderdrukken en de finalizer zelf van (On)(Begin)Close (en/of OnAbort) om te emuleren wat het automatisch gegenereerde IDisposable gedrag zou zijn geweest.

Wanneer u gedrag programmatisch toevoegt, wordt het gedrag aan de juiste Behaviors eigenschap toegevoegd voordat ChannelFactory u een kanaal maakt. Zie de voorbeeldsectie voor een codevoorbeeld.

Constructors

Name Description
ChannelFactory()

Initialiseert een nieuw exemplaar van de ChannelFactory klasse.

Eigenschappen

Name Description
Credentials

Hiermee haalt u de referenties op die door clients worden gebruikt om een service-eindpunt te communiceren via de kanalen die door de fabriek worden geproduceerd.

DefaultCloseTimeout

Hiermee wordt het standaardinterval van de tijd opgegeven voor een sluitingsbewerking voltooid.

DefaultOpenTimeout

Hiermee haalt u het standaardinterval van de tijd op dat een geopende bewerking moet worden voltooid.

Endpoint

Hiermee haalt u het service-eindpunt op waarnaar de kanalen die door de fabriek worden geproduceerd, verbinding maken.

IsDisposed

Hiermee wordt een waarde opgehaald die aangeeft of het communicatieobject is verwijderd.

(Overgenomen van CommunicationObject)
State

Hiermee wordt een waarde opgehaald die de huidige status van het communicatieobject aangeeft.

(Overgenomen van CommunicationObject)
ThisLock

Hiermee haalt u de wederzijds exclusieve vergrendeling op die het klasse-exemplaar beschermt tijdens een statusovergang.

(Overgenomen van CommunicationObject)

Methoden

Name Description
Abort()

Zorgt ervoor dat een communicatieobject onmiddellijk van de huidige status overgaat naar de slotstatus.

(Overgenomen van CommunicationObject)
ApplyConfiguration(String)

Initialiseert de kanaalfactory met het gedrag van een opgegeven configuratiebestand en met die in het service-eindpunt van de kanaalfactory.

BeginClose(AsyncCallback, Object)

Hiermee wordt een asynchrone bewerking gestart om een communicatieobject te sluiten.

(Overgenomen van CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Hiermee wordt een asynchrone bewerking gestart om een communicatieobject met een opgegeven time-out te sluiten.

(Overgenomen van CommunicationObject)
BeginOpen(AsyncCallback, Object)

Begint een asynchrone bewerking om een communicatieobject te openen.

(Overgenomen van CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Begint een asynchrone bewerking om een communicatieobject binnen een opgegeven tijdsinterval te openen.

(Overgenomen van CommunicationObject)
Close()

Zorgt ervoor dat een communicatieobject van de huidige status overgaat naar de gesloten status.

(Overgenomen van CommunicationObject)
Close(TimeSpan)

Zorgt ervoor dat een communicatieobject binnen een opgegeven tijdsinterval van de huidige status overgaat naar de gesloten status.

(Overgenomen van CommunicationObject)
CreateDescription()

Wanneer deze is geïmplementeerd in een afgeleide klasse, maakt u een beschrijving van het service-eindpunt dat is gekoppeld aan de kanaalfactory.

CreateFactory()

Hiermee wordt de kanaalfactory gebouwd voor het huidige eindpunt van de factory.

EndClose(IAsyncResult)

Hiermee voltooit u een asynchrone bewerking om een communicatieobject te sluiten.

(Overgenomen van CommunicationObject)
EndOpen(IAsyncResult)

Voltooit een asynchrone bewerking om een communicatieobject te openen.

(Overgenomen van CommunicationObject)
EnsureOpened()

Hiermee opent u de huidige kanaalfactory als deze nog niet is geopend.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
Fault()

Zorgt ervoor dat een communicatieobject wordt overgezet van de huidige status naar de foutieve status.

(Overgenomen van CommunicationObject)
GetCommunicationObjectType()

Hiermee wordt het type communicatieobject opgehaald.

(Overgenomen van CommunicationObject)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetProperty<T>()

Retourneert het aangevraagde getypte object, indien aanwezig, van de juiste laag in de kanaalstack of null indien niet aanwezig.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
InitializeEndpoint(Binding, EndpointAddress)

Initialiseert het service-eindpunt van de kanaalfactory met een opgegeven binding en een opgegeven adres.

InitializeEndpoint(ServiceEndpoint)

Initialiseert het service-eindpunt van de kanaalfactory met een opgegeven eindpunt.

InitializeEndpoint(String, EndpointAddress)

Initialiseert het service-eindpunt van de kanaalfactory met een opgegeven adres en configuratie.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
OnAbort()

Hiermee wordt de binnenste kanaalfactory van de huidige kanaalfactory beëindigd.

OnBeginClose(TimeSpan, AsyncCallback, Object)

Hiermee begint u een asynchrone sluitingsbewerking op de binnenkanaalfactory van de huidige kanaalfactory waaraan een statusobject is gekoppeld.

OnBeginOpen(TimeSpan, AsyncCallback, Object)

Hiermee wordt een asynchrone open bewerking gestart op de binnenkanaalfactory van de huidige kanaalfactory waaraan een statusobject is gekoppeld.

OnClose(TimeSpan)

Aanroepen sluiten op de binnenste kanaalfactory met een opgegeven time-out voor de voltooiing van de bewerking.

OnClosed()

Aangeroepen tijdens de overgang van een communicatieobject in de slotstatus.

(Overgenomen van CommunicationObject)
OnClosing()

Aangeroepen tijdens de overgang van een communicatieobject in de slotstatus.

(Overgenomen van CommunicationObject)
OnEndClose(IAsyncResult)

Hiermee voltooit u een asynchrone sluitingsbewerking op de binnenkanaalfactory van de huidige kanaalfactory.

OnEndOpen(IAsyncResult)

Hiermee voltooit u een asynchrone open bewerking op de binnenkanaalfactory van de huidige kanaalfactory.

OnFaulted()

Hiermee wordt de verwerking van een communicatieobject ingevoegd nadat het is overgeschakeld naar de status Met fouten als gevolg van de aanroep van een synchrone foutbewerking.

(Overgenomen van CommunicationObject)
OnOpen(TimeSpan)

Aanroepen worden geopend op de binnenste kanaalfactory van de huidige kanaalfactory met een opgegeven time-out voor de voltooiing van de bewerking.

OnOpened()

Initialiseert een alleen-lezen kopie van het ClientCredentials object voor de kanaalfactory.

OnOpening()

Hiermee wordt de binnenste kanaalfactory voor het huidige kanaal gebouwd.

Open()

Zorgt ervoor dat een communicatieobject wordt overgezet van de gemaakte status in de geopende status.

(Overgenomen van CommunicationObject)
Open(TimeSpan)

Zorgt ervoor dat een communicatieobject binnen een opgegeven tijdsinterval van de gemaakte status overgaat naar de geopende status.

(Overgenomen van CommunicationObject)
ThrowIfDisposed()

Genereert een uitzondering als het communicatieobject wordt verwijderd.

(Overgenomen van CommunicationObject)
ThrowIfDisposedOrImmutable()

Genereert een uitzondering als het communicatieobject de State eigenschap niet is ingesteld op de Created status.

(Overgenomen van CommunicationObject)
ThrowIfDisposedOrNotOpen()

Genereert een uitzondering als het communicatieobject niet de Opened status heeft.

(Overgenomen van CommunicationObject)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

gebeurtenis

Name Description
Closed

Treedt op wanneer een communicatieobject overgaat naar de gesloten status.

(Overgenomen van CommunicationObject)
Closing

Treedt op wanneer een communicatieobject overgaat naar de slotstatus.

(Overgenomen van CommunicationObject)
Faulted

Treedt op wanneer een communicatieobject overgaat naar de foutieve status.

(Overgenomen van CommunicationObject)
Opened

Treedt op wanneer een communicatieobject overgaat naar de geopende status.

(Overgenomen van CommunicationObject)
Opening

Treedt op wanneer een communicatieobject overgaat naar de openingsstatus.

(Overgenomen van CommunicationObject)

Expliciete interface-implementaties

Name Description
IDisposable.Dispose()

Hiermee sluit u de huidige kanaalfactory.

Van toepassing op