ChannelFactory<TChannel> Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Továrna, která vytváří kanály různých typů, které klienti používají k odesílání zpráv do různých nakonfigurovaných koncových bodů služby.
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
interface ICommunicationObject
interface IChannelFactory<'Channel>
type ChannelFactory<'Channel> = class
inherit ChannelFactory
interface IChannelFactory<'Channel>
interface IChannelFactory
interface ICommunicationObject
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)
Parametry typu
- TChannel
Typ kanálu vytvořeného továrnou kanálu. Tento typ musí být buď IOutputChannel nebo IRequestChannel.
- Dědičnost
- Odvozené
- Implementuje
Příklady
Následující ukázka ukazuje, jak vytvořit objekt pro vytváření kanálů a používat ho k vytváření a správě kanálů.
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();
}
Následující příklad kódu ukazuje, jak vložit programové chování klienta před vytvořením objektu kanálu továrnou.
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
Poznámky
Tato obecná třída umožňuje pokročilejší scénáře, kdy existuje požadavek na vytvoření objektu pro vytváření kanálů, který lze použít k vytvoření více než jednoho typu kanálu.
Při přidávání chování prostřednictvím kódu programu se toto chování přidá do příslušné Behaviors
vlastnosti ChannelFactory před vytvořením libovolného kanálu. Ukázku kódu najdete v ukázkové části s ukázkovým kódem.
Často klientské nebo volací aplikace (například aplikace střední vrstvy jsou také klientské aplikace) s tímto typem mají také komplexní požadavky na správu stavu a také požadavky na výkon. Další informace o těchto scénářích najdete v tématu Klientské aplikace střední vrstvy.
Konstruktory
ChannelFactory<TChannel>() |
Inicializuje novou instanci ChannelFactory<TChannel> třídy. |
ChannelFactory<TChannel>(Binding) |
Inicializuje novou instanci ChannelFactory<TChannel> třídy. |
ChannelFactory<TChannel>(Binding, EndpointAddress) |
Inicializuje novou instanci ChannelFactory<TChannel> třídy se zadanou vazbou a adresou koncového bodu. |
ChannelFactory<TChannel>(Binding, String) |
Inicializuje novou instanci ChannelFactory<TChannel> třídy se zadanou vazbou a vzdálenou adresou. |
ChannelFactory<TChannel>(ServiceEndpoint) |
Inicializuje novou instanci ChannelFactory<TChannel> třídy, která vytváří kanály se zadaným koncovým bodem. |
ChannelFactory<TChannel>(String) |
Inicializuje novou instanci ChannelFactory<TChannel> třídy se zadaným názvem konfigurace koncového bodu. |
ChannelFactory<TChannel>(String, EndpointAddress) |
Inicializuje novou instanci ChannelFactory<TChannel> třídy přidružené k zadanému názvu konfigurace koncového bodu a vzdálené adresy. |
ChannelFactory<TChannel>(Type) |
Inicializuje novou instanci ChannelFactory<TChannel> třídy. |
Vlastnosti
Credentials |
Získá přihlašovací údaje používané klienty ke komunikaci koncového bodu služby přes kanály vytvořené továrnou. (Zděděno od ChannelFactory) |
DefaultCloseTimeout |
Získá výchozí interval času zadaný pro dokončení zavřené operace. (Zděděno od ChannelFactory) |
DefaultOpenTimeout |
Získá výchozí interval času zadaný pro dokončení otevřené operace. (Zděděno od ChannelFactory) |
Endpoint |
Získá koncový bod služby, ke kterému se kanály vytvořené propojením továrny. (Zděděno od ChannelFactory) |
IsDisposed |
Získá hodnotu, která označuje, zda komunikační objekt byl odstraněn. (Zděděno od CommunicationObject) |
State |
Získá hodnotu, která označuje aktuální stav komunikačního objektu. (Zděděno od CommunicationObject) |
ThisLock |
Získá vzájemně vylučující zámek, který chrání instanci třídy během přechodu stavu. (Zděděno od CommunicationObject) |
Metody
Abort() |
Způsobí, že komunikační objekt přejde okamžitě z aktuálního stavu do konečného stavu. (Zděděno od CommunicationObject) |
ApplyConfiguration(String) |
Inicializuje objekt pro vytváření kanálů s chováním poskytovaným zadaným konfiguračním souborem a s těmi v koncovém bodu služby objektu pro vytváření kanálů. (Zděděno od ChannelFactory) |
BeginClose(AsyncCallback, Object) |
Zahájí asynchronní operaci uzavření komunikačního objektu. (Zděděno od CommunicationObject) |
BeginClose(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní operaci uzavření komunikačního objektu se zadaným časovým limitem. (Zděděno od CommunicationObject) |
BeginOpen(AsyncCallback, Object) |
Zahájí asynchronní operaci otevření komunikačního objektu. (Zděděno od CommunicationObject) |
BeginOpen(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní operaci otevření komunikačního objektu v zadaném časovém intervalu. (Zděděno od CommunicationObject) |
Close() |
Způsobí přechod komunikačního objektu z aktuálního stavu do uzavřeného stavu. (Zděděno od CommunicationObject) |
Close(TimeSpan) |
Způsobí, že komunikační objekt přejde z aktuálního stavu do uzavřeného stavu v zadaném časovém intervalu. (Zděděno od CommunicationObject) |
CreateChannel() |
Vytvoří kanál zadaného typu na zadanou adresu koncového bodu. |
CreateChannel(Binding, EndpointAddress) |
Vytvoří kanál zadaného typu, který slouží k odesílání zpráv do koncového bodu služby, který je nakonfigurovaný pomocí zadané vazby. |
CreateChannel(Binding, EndpointAddress, Uri) |
Vytvoří kanál zadaného typu, který se používá k odesílání zpráv do koncového bodu služby na zadané přenosové adrese nakonfigurované se zadanou vazbou. |
CreateChannel(EndpointAddress) |
Vytvoří kanál, který se používá k odesílání zpráv do služby na konkrétní adrese koncového bodu. |
CreateChannel(EndpointAddress, Uri) |
Vytvoří kanál, který se používá k odesílání zpráv do služby na konkrétní adrese koncového bodu prostřednictvím zadané přenosové adresy. |
CreateChannel(String) |
Vytvoří kanál, který slouží k odesílání zpráv do služby, jejíž koncový bod je nakonfigurovaný určitým způsobem. |
CreateChannelWithActAsToken(SecurityToken) |
Vytvoří kanál, který se používá k odesílání zpráv do služby pomocí tokenu zabezpečení. |
CreateChannelWithActAsToken(SecurityToken, EndpointAddress) |
Vytvoří kanál, který se používá k odesílání zpráv do služby s tokenem zabezpečení na konkrétní adrese koncového bodu. |
CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri) |
Vytvoří kanál, který se používá k odesílání zpráv do služby s tokenem zabezpečení na konkrétní adrese koncového bodu prostřednictvím zadané přenosové adresy. |
CreateChannelWithIssuedToken(SecurityToken) |
Vytvoří kanál, který se používá k odesílání zpráv do služby s vydaným tokenem zabezpečení. |
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress) |
Vytvoří kanál, který se používá k odesílání zpráv do služby s vydaným tokenem zabezpečení na konkrétní adrese koncového bodu. |
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri) |
Vytvoří kanál, který se používá k odesílání zpráv do služby s vydaným tokenem zabezpečení na konkrétní adrese koncového bodu prostřednictvím zadané přenosové adresy. |
CreateChannelWithOnBehalfOfToken(SecurityToken) |
Vytvoří kanál, který se používá k odesílání zpráv službě jménem tokenu zabezpečení. |
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress) |
Vytvoří kanál, který se používá k odesílání zpráv službě jménem tokenu zabezpečení na konkrétní adrese koncového bodu. |
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri) |
Vytvoří kanál, který se používá k odesílání zpráv službě jménem tokenu zabezpečení na konkrétní adrese koncového bodu prostřednictvím zadané přenosové adresy. |
CreateDescription() |
Vytvoří popis koncového bodu služby. |
CreateFactory() |
Vytvoří objekt pro vytváření kanálů pro aktuální koncový bod továrny. (Zděděno od ChannelFactory) |
EndClose(IAsyncResult) |
Dokončí asynchronní operaci pro zavření komunikačního objektu. (Zděděno od CommunicationObject) |
EndOpen(IAsyncResult) |
Dokončí asynchronní operaci pro otevření komunikačního objektu. (Zděděno od CommunicationObject) |
EnsureOpened() |
Otevře aktuální objekt pro vytváření kanálů, pokud ještě není otevřen. (Zděděno od ChannelFactory) |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
Fault() |
Způsobí přechod komunikačního objektu z aktuálního stavu do chybného stavu. (Zděděno od CommunicationObject) |
GetCommunicationObjectType() |
Získá typ komunikačního objektu. (Zděděno od CommunicationObject) |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetProperty<T>() |
Vrátí požadovaný typ objektu z příslušné vrstvy v zásobníku kanálu nebo |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
InitializeEndpoint(Binding, EndpointAddress) |
Inicializuje koncový bod služby objektu pro vytváření kanálů se zadanou vazbou a adresou. (Zděděno od ChannelFactory) |
InitializeEndpoint(ServiceEndpoint) |
Inicializuje koncový bod služby objektu pro vytváření kanálů se zadaným koncovým bodem. (Zděděno od ChannelFactory) |
InitializeEndpoint(String, EndpointAddress) |
Inicializuje koncový bod služby objektu pro vytváření kanálů se zadanou adresou a konfigurací. (Zděděno od ChannelFactory) |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
OnAbort() |
Ukončí továrnu vnitřního kanálu aktuální továrny kanálu. (Zděděno od ChannelFactory) |
OnBeginClose(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní operaci uzavření ve vnitřní továrně kanálu aktuální továrny kanálu, která má přidružený stavový objekt. (Zděděno od ChannelFactory) |
OnBeginOpen(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní otevřenou operaci ve vnitřní továrně kanálu aktuální továrny kanálu, která má přidružený objekt stavu. (Zděděno od ChannelFactory) |
OnClose(TimeSpan) |
Volání zavřená továrnu vnitřního kanálu se zadaným časovým limitem pro dokončení operace. (Zděděno od ChannelFactory) |
OnClosed() |
Vyvoláno během přechodu komunikačního objektu do konečného stavu. (Zděděno od CommunicationObject) |
OnClosing() |
Vyvoláno během přechodu komunikačního objektu do konečného stavu. (Zděděno od CommunicationObject) |
OnEndClose(IAsyncResult) |
Dokončí asynchronní operaci uzavření ve vnitřní továrně kanálu aktuální továrny kanálu. (Zděděno od ChannelFactory) |
OnEndOpen(IAsyncResult) |
Dokončí asynchronní otevřenou operaci ve vnitřní továrně kanálu aktuální továrny kanálu. (Zděděno od ChannelFactory) |
OnFaulted() |
Vloží zpracování na komunikační objekt poté, co přejde do chybného stavu kvůli vyvolání synchronní operace selhání. (Zděděno od CommunicationObject) |
OnOpen(TimeSpan) |
Volání otevřená v objektu pro vytvoření vnitřního kanálu aktuální továrny kanálu se zadaným časovým limitem pro dokončení operace. (Zděděno od ChannelFactory) |
OnOpened() |
Inicializuje kopii objektu ClientCredentials jen pro čtení pro objekt pro vytváření kanálů. (Zděděno od ChannelFactory) |
OnOpening() |
Vytvoří továrnu vnitřního kanálu pro aktuální kanál. (Zděděno od ChannelFactory) |
Open() |
Způsobí přechod komunikačního objektu z vytvořeného stavu do otevřeného stavu. (Zděděno od CommunicationObject) |
Open(TimeSpan) |
Způsobí přechod komunikačního objektu z vytvořeného stavu do otevřeného stavu v zadaném časovém intervalu. (Zděděno od CommunicationObject) |
ThrowIfDisposed() |
Vyvolá výjimku, pokud je objekt komunikace odstraněn. (Zděděno od CommunicationObject) |
ThrowIfDisposedOrImmutable() |
Vyvolá výjimku, pokud komunikační objekt State , který vlastnost není nastavena Created na stav. (Zděděno od CommunicationObject) |
ThrowIfDisposedOrNotOpen() |
Vyvolá výjimku, pokud komunikační objekt není ve Opened stavu. (Zděděno od CommunicationObject) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
událost
Closed |
Nastane, když komunikační objekt přejde do uzavřeného stavu. (Zděděno od CommunicationObject) |
Closing |
Nastane, když komunikační objekt přejde do konečného stavu. (Zděděno od CommunicationObject) |
Faulted |
Nastane, když komunikační objekt přejde do chybného stavu. (Zděděno od CommunicationObject) |
Opened |
Nastane, když komunikační objekt přejde do otevřeného stavu. (Zděděno od CommunicationObject) |
Opening |
Nastane, když komunikační objekt přejde do otevřeného stavu. (Zděděno od CommunicationObject) |
Explicitní implementace rozhraní
IDisposable.Dispose() |
Zavře aktuální objekt pro vytváření kanálů. (Zděděno od ChannelFactory) |
Platí pro
Bezpečný přístup z více vláken
Tento typ je bezpečný pro přístup z více vláken.