ChannelFactory Klass

Definition

Skapar och hanterar de kanaler som används av klienter för att skicka meddelanden till tjänstslutpunkter.

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
Arv
ChannelFactory
Härledda
Implementeringar

Exempel

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

Kanalfabriker som implementerar IChannelFactory gränssnittet och deras associerade kanaler används vanligtvis av initierarna för ett kommunikationsmönster. Lyssnarfabriker som implementerar IChannelListener gränssnittet och deras associerade lyssnare tillhandahåller de mekanismer med vilka kanaler accepteras för kommunikation.

Den här klassen är inte en del av kanalmodellen, utan i tjänstmodellen. Metoden CreateFactory ger möjlighet att skapa en IChannelFactory för en tjänstslutpunkt. Använd den för att konstruera en klient som ansluter till ett gränssnittskontrakt för tjänsten utan att använda metadata eller princip.

Note

Om du anger ChannelFactory.Credentials.Windows.AllowedImpersonationLevel till TokenImpersonationLevel.Anonymous resulterar det alltid i en anonym inloggning oavsett personifieringsnivå.

Särskild anmärkning för hanterade C++-användare som härleds från den här klassen:

  • Placera din rensningskod i (På)(Begin)Close (och/eller OnAbort), inte i en destruktor.
  • Undvik destructors; de gör att kompilatorn automatiskt genererar IDisposable.
  • Undvik icke-referensmedlemmar; de kan göra så att kompilatorn automatiskt genererar IDisposable.
  • Undvik att använda en finalizer; men om du inkluderar en bör du ignorera byggvarningen och anropet SuppressFinalize(Object) och själva slutföraren från (På)(Begin)Close (och/eller OnAbort) för att emulera vad som skulle ha varit det automatiskt genererade beteendet IDisposable .

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.

Konstruktorer

Name Description
ChannelFactory()

Initierar en ny instans av ChannelFactory 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.

DefaultCloseTimeout

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

DefaultOpenTimeout

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

Endpoint

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

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.

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)
CreateDescription()

När den implementeras i en härledd klass skapar du en beskrivning av tjänstslutpunkten som är associerad med kanalfabriken.

CreateFactory()

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

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.

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.

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.

InitializeEndpoint(ServiceEndpoint)

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

InitializeEndpoint(String, EndpointAddress)

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

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnAbort()

Avslutar den inre kanalfabriken för den aktuella kanalfabriken.

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.

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.

OnClose(TimeSpan)

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

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.

OnEndOpen(IAsyncResult)

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

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.

OnOpened()

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

OnOpening()

Skapar den inre kanalfabriken för den aktuella kanalen.

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
IDisposable.Dispose()

Stänger den aktuella kanalfabriken.

Gäller för