ChannelFactory<TChannel> Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Een fabriek waarmee kanalen van verschillende typen worden gemaakt die door clients worden gebruikt om berichten te verzenden naar verschillende geconfigureerde service-eindpunten.
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
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)
Type parameters
- TChannel
Het type kanaal dat door de kanaalfactory wordt geproduceerd. Dit type moet een IOutputChannel of IRequestChannel.
- Overname
- Afgeleid
- Implementeringen
Voorbeelden
In het volgende voorbeeld ziet u hoe u een kanaalfactory maakt en deze gebruikt om kanalen te maken en te beheren.
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();
}
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
Deze algemene klasse maakt geavanceerdere scenario's mogelijk waarbij er een vereiste is om een kanaalfactory te maken die kan worden gebruikt om meer dan één type kanaal te maken.
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.
Clienttoepassingen of aanroepende toepassingen (bijvoorbeeld toepassingen in de middelste laag zijn ook clienttoepassingen) die dit type gebruiken, hebben ook complexe behoeften voor statusbeheer en prestatiebehoeften. Zie Middle-Tier Clienttoepassingen voor meer informatie over deze scenario's.
Constructors
| Name | Description |
|---|---|
| ChannelFactory<TChannel>() |
Initialiseert een nieuw exemplaar van de ChannelFactory<TChannel> klasse. |
| ChannelFactory<TChannel>(Binding, EndpointAddress) |
Initialiseert een nieuw exemplaar van de ChannelFactory<TChannel> klasse met een opgegeven binding en eindpuntadres. |
| ChannelFactory<TChannel>(Binding, String) |
Initialiseert een nieuw exemplaar van de ChannelFactory<TChannel> klasse met een opgegeven binding en een extern adres. |
| ChannelFactory<TChannel>(Binding) |
Initialiseert een nieuw exemplaar van de ChannelFactory<TChannel> klasse. |
| ChannelFactory<TChannel>(ServiceEndpoint) |
Initialiseert een nieuw exemplaar van de ChannelFactory<TChannel> klasse die kanalen produceert met een opgegeven eindpunt. |
| ChannelFactory<TChannel>(String, EndpointAddress) |
Initialiseert een nieuw exemplaar van de ChannelFactory<TChannel> klasse die is gekoppeld aan een opgegeven naam voor de eindpuntconfiguratie en het externe adres. |
| ChannelFactory<TChannel>(String) |
Initialiseert een nieuw exemplaar van de ChannelFactory<TChannel> klasse met een opgegeven eindpuntconfiguratienaam. |
| ChannelFactory<TChannel>(Type) |
Initialiseert een nieuw exemplaar van de ChannelFactory<TChannel> 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. (Overgenomen van ChannelFactory) |
| DefaultCloseTimeout |
Hiermee wordt het standaardinterval van de tijd opgegeven voor een sluitingsbewerking voltooid. (Overgenomen van ChannelFactory) |
| DefaultOpenTimeout |
Hiermee haalt u het standaardinterval van de tijd op dat een geopende bewerking moet worden voltooid. (Overgenomen van ChannelFactory) |
| Endpoint |
Hiermee haalt u het service-eindpunt op waarnaar de kanalen die door de fabriek worden geproduceerd, verbinding maken. (Overgenomen van ChannelFactory) |
| 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. (Overgenomen van ChannelFactory) |
| 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) |
| CreateChannel() |
Hiermee maakt u een kanaal van een opgegeven type naar een opgegeven eindpuntadres. |
| CreateChannel(Binding, EndpointAddress, Uri) |
Hiermee maakt u een kanaal van een opgegeven type dat wordt gebruikt voor het verzenden van berichten naar een service-eindpunt op een opgegeven transportadres dat is geconfigureerd met een opgegeven binding. |
| CreateChannel(Binding, EndpointAddress) |
Hiermee maakt u een kanaal van een opgegeven type dat wordt gebruikt voor het verzenden van berichten naar een service-eindpunt dat is geconfigureerd met een opgegeven binding. |
| CreateChannel(EndpointAddress, Uri) |
Hiermee maakt u een kanaal dat wordt gebruikt voor het verzenden van berichten naar een service op een specifiek eindpuntadres via een opgegeven transportadres. |
| CreateChannel(EndpointAddress) |
Hiermee maakt u een kanaal dat wordt gebruikt voor het verzenden van berichten naar een service op een specifiek eindpuntadres. |
| CreateChannel(String) |
Hiermee maakt u een kanaal dat wordt gebruikt voor het verzenden van berichten naar een service waarvan het eindpunt op een opgegeven manier is geconfigureerd. |
| CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri) |
Hiermee maakt u een kanaal dat wordt gebruikt om berichten naar een service te verzenden met een beveiligingstoken op een specifiek eindpuntadres via een opgegeven transportadres. |
| CreateChannelWithActAsToken(SecurityToken, EndpointAddress) |
Hiermee maakt u een kanaal dat wordt gebruikt om berichten naar een service te verzenden met een beveiligingstoken op een specifiek eindpuntadres. |
| CreateChannelWithActAsToken(SecurityToken) |
Hiermee maakt u een kanaal dat wordt gebruikt voor het verzenden van berichten naar een service met een actie als beveiligingstoken. |
| CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri) |
Hiermee maakt u een kanaal dat wordt gebruikt voor het verzenden van berichten naar een service met een uitgegeven beveiligingstoken op een specifiek eindpuntadres via een opgegeven transportadres. |
| CreateChannelWithIssuedToken(SecurityToken, EndpointAddress) |
Hiermee maakt u een kanaal dat wordt gebruikt voor het verzenden van berichten naar een service met een uitgegeven beveiligingstoken op een specifiek eindpuntadres. |
| CreateChannelWithIssuedToken(SecurityToken) |
Hiermee maakt u een kanaal dat wordt gebruikt voor het verzenden van berichten naar een service met een uitgegeven beveiligingstoken. |
| CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri) |
Hiermee maakt u een kanaal dat wordt gebruikt voor het verzenden van berichten naar een service met een beveiligingstoken namens een specifiek eindpuntadres via een opgegeven transportadres. |
| CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress) |
Hiermee maakt u een kanaal dat wordt gebruikt voor het verzenden van berichten naar een service met een namens een beveiligingstoken op een specifiek eindpuntadres. |
| CreateChannelWithOnBehalfOfToken(SecurityToken) |
Hiermee maakt u een kanaal dat wordt gebruikt voor het verzenden van berichten naar een service met een namens het beveiligingstoken. |
| CreateDescription() |
Hiermee maakt u een beschrijving van het service-eindpunt. |
| CreateFactory() |
Hiermee wordt de kanaalfactory gebouwd voor het huidige eindpunt van de factory. (Overgenomen van ChannelFactory) |
| 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. (Overgenomen van ChannelFactory) |
| 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 |
| 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. (Overgenomen van ChannelFactory) |
| InitializeEndpoint(ServiceEndpoint) |
Initialiseert het service-eindpunt van de kanaalfactory met een opgegeven eindpunt. (Overgenomen van ChannelFactory) |
| InitializeEndpoint(String, EndpointAddress) |
Initialiseert het service-eindpunt van de kanaalfactory met een opgegeven adres en configuratie. (Overgenomen van ChannelFactory) |
| 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. (Overgenomen van ChannelFactory) |
| OnBeginClose(TimeSpan, AsyncCallback, Object) |
Hiermee begint u een asynchrone sluitingsbewerking op de binnenkanaalfactory van de huidige kanaalfactory waaraan een statusobject is gekoppeld. (Overgenomen van ChannelFactory) |
| OnBeginOpen(TimeSpan, AsyncCallback, Object) |
Hiermee wordt een asynchrone open bewerking gestart op de binnenkanaalfactory van de huidige kanaalfactory waaraan een statusobject is gekoppeld. (Overgenomen van ChannelFactory) |
| OnClose(TimeSpan) |
Aanroepen sluiten op de binnenste kanaalfactory met een opgegeven time-out voor de voltooiing van de bewerking. (Overgenomen van ChannelFactory) |
| 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. (Overgenomen van ChannelFactory) |
| OnEndOpen(IAsyncResult) |
Hiermee voltooit u een asynchrone open bewerking op de binnenkanaalfactory van de huidige kanaalfactory. (Overgenomen van ChannelFactory) |
| 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. (Overgenomen van ChannelFactory) |
| OnOpened() |
Initialiseert een alleen-lezen kopie van het ClientCredentials object voor de kanaalfactory. (Overgenomen van ChannelFactory) |
| OnOpening() |
Hiermee wordt de binnenste kanaalfactory voor het huidige kanaal gebouwd. (Overgenomen van ChannelFactory) |
| 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. (Overgenomen van ChannelFactory) |
Van toepassing op
Veiligheid thread
Dit type is thread veilig.