ChannelFactory 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í.
Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby.
public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IDisposable, System::ServiceModel::Channels::IChannelFactory
public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IAsyncDisposable, IDisposable, System::ServiceModel::Channels::IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IDisposable, System.ServiceModel.Channels.IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IAsyncDisposable, IDisposable, System.ServiceModel.Channels.IChannelFactory
type ChannelFactory = class
inherit CommunicationObject
interface IDisposable
interface IChannelFactory
interface ICommunicationObject
type ChannelFactory = class
inherit CommunicationObject
interface IDisposable
interface IChannelFactory
interface ICommunicationObject
interface IAsyncDisposable
type ChannelFactory = class
inherit CommunicationObject
interface IChannelFactory
interface ICommunicationObject
interface IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IChannelFactory, IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IAsyncDisposable, IChannelFactory, IDisposable
- Dědičnost
- Odvozené
- Implementuje
Příklady
Následující příklad kódu ukazuje, jak vložit programově chování klienta před vytvořením objektu kanálu objektu továrny.
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
Objekty pro vytváření kanálů, které implementují IChannelFactory rozhraní a jejich přidružené kanály, jsou obecně používány iniciátory komunikačního modelu. Továrny naslouchacího procesu, které implementují IChannelListener rozhraní a jejich přidružené naslouchací procesy, poskytují mechanismy, se kterými kanály jsou přijímány pro komunikaci.
Tato třída není součástí modelu kanálu, ale modelu služby. Metoda CreateFactory poskytuje prostředky pro vytvoření koncového IChannelFactory bodu služby. Slouží k vytvoření klienta, který se připojí ke kontraktu rozhraní ve službě bez použití metadat nebo zásad.
Note
Nastavení ChannelFactory.Credentials.Windows.AllowedImpersonationLevel tak, aby TokenImpersonationLevel.Anonymous vždy mělo za následek anonymní přihlášení bez ohledu na úroveň zosobnění.
Zvláštní poznámka pro spravované uživatele C++, kteří pocházejí z této třídy:
- Vložte kód čištění do (On)(Begin)Close (a/nebo OnAbort), ne do destruktoru.
- Vyhněte se destruktorům; způsobí, že kompilátor automaticky vygeneruje IDisposable.
- Vyhněte se nenákazovým členům; mohou způsobit, že kompilátor automaticky vygeneruje IDisposable.
- Vyhněte se použití finalizátoru; pokud ale zahrnete jeden, měli byste potlačit upozornění sestavení a volání SuppressFinalize(Object) a finalizátor samotný z (On)(Begin)Close (a/nebo OnAbort) emulovat, co by bylo automaticky generované IDisposable chování.
Při programovém přidávání chování 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.
Konstruktory
| Name | Description |
|---|---|
| ChannelFactory() |
Inicializuje novou instanci ChannelFactory třídy. |
Vlastnosti
| Name | Description |
|---|---|
| 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. |
| DefaultCloseTimeout |
Získá výchozí interval času zadaný pro dokončení operace uzavření. |
| DefaultOpenTimeout |
Získá výchozí časový interval zadaný pro dokončení otevřené operace. |
| Endpoint |
Získá koncový bod služby, ke kterému se kanály vytvořené továrnou připojují. |
| IsDisposed |
Získá hodnotu, která označuje, zda komunikační objekt byl uvolně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
| Name | Description |
|---|---|
| Abort() |
Způsobí, že komunikační objekt přejde okamžitě z aktuálního stavu do koncového stavu. (Zděděno od CommunicationObject) |
| ApplyConfiguration(String) |
Inicializuje objekt pro vytváření kanálů chování poskytnutým zadaným konfiguračním souborem a s těmi, které jsou v koncovém bodu služby objektu pro vytváření kanálů. |
| BeginClose(AsyncCallback, Object) |
Zahájí asynchronní operaci ukončení komunikačního objektu. (Zděděno od CommunicationObject) |
| BeginClose(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní operaci ukonč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 jeho 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) |
| CreateDescription() |
Při implementaci v odvozené třídě vytvoří popis koncového bodu služby přidruženého k objektu pro vytváření kanálů. |
| CreateFactory() |
Vytvoří objekt pro vytváření kanálů pro aktuální koncový bod továrny. |
| 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ý. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| Fault() |
Způsobí přechod komunikačního objektu z jeho 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() |
Získá Type aktuální instance. (Zděděno od Object) |
| InitializeEndpoint(Binding, EndpointAddress) |
Inicializuje koncový bod služby objektu pro vytváření kanálů se zadanou vazbou a adresou. |
| InitializeEndpoint(ServiceEndpoint) |
Inicializuje koncový bod služby objektu pro vytváření kanálů se zadaným koncovým bodem. |
| InitializeEndpoint(String, EndpointAddress) |
Inicializuje koncový bod služby objektu pro vytváření kanálů se zadanou adresou a konfigurací. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| OnAbort() |
Ukončí objekt pro vytváření vnitřních kanálů aktuální továrny kanálu. |
| OnBeginClose(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní operaci uzavření v objektu pro vnitřní kanál objektu pro vytváření aktuálního kanálu, který má přidružený objekt stavu. |
| OnBeginOpen(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní otevřenou operaci v objektu pro vytváření vnitřních kanálů objektu pro vytváření aktuálního kanálu, který má přidružený objekt stavu. |
| OnClose(TimeSpan) |
Volání se zavře v objektu pro vnitřní kanál s určeným časovým limitem pro dokončení operace. |
| OnClosed() |
Vyvoláno během přechodu komunikačního objektu do koncového stavu. (Zděděno od CommunicationObject) |
| OnClosing() |
Vyvoláno během přechodu komunikačního objektu do koncového stavu. (Zděděno od CommunicationObject) |
| OnEndClose(IAsyncResult) |
Dokončí asynchronní operaci uzavření v objektu pro vytváření vnitřních kanálů aktuálního kanálu. |
| OnEndOpen(IAsyncResult) |
Dokončí asynchronní otevřenou operaci ve vnitřní továrně kanálu aktuální továrny kanálu. |
| 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 vytváření vnitřních kanálů aktuálního kanálu s určeným časovým limitem pro dokončení operace. |
| OnOpened() |
Inicializuje kopii objektu ClientCredentials jen pro čtení pro objekt pro objekt pro vytváření kanálů. |
| OnOpening() |
Vytvoří objekt pro vytváření vnitřních kanálů pro aktuální kanál. |
| Open() |
Způsobí, že komunikační objekt přejde z vytvořeného stavu do otevřeného stavu. (Zděděno od CommunicationObject) |
| Open(TimeSpan) |
Způsobí, že komunikační objekt přejde 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 komunikační objekt uvolněn. (Zděděno od CommunicationObject) |
| ThrowIfDisposedOrImmutable() |
Vyvolá výjimku, pokud komunikační objekt State , který vlastnost není nastavena na Created 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
| Name | Description |
|---|---|
| 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 koncové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 stavu otevření. (Zděděno od CommunicationObject) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| IAsyncDisposable.DisposeAsync() |
Vytvoří a spravuje kanály, které klienti používají k odesílání zpráv do koncových bodů služby. |
| IDisposable.Dispose() |
Zavře aktuální objekt pro vytváření kanálů. |