ChannelFactory Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
- 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 |
| 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. |