DuplexClientBase<TChannel> Sınıf

Tanım

Çift yönlü bir hizmete kanal oluşturmak ve bu kanalı bir geri çağırma nesnesiyle ilişkilendirmek için kullanılır.

generic <typename TChannel>
 where TChannel : classpublic ref class DuplexClientBase abstract : System::ServiceModel::ClientBase<TChannel>
public abstract class DuplexClientBase<TChannel> : System.ServiceModel.ClientBase<TChannel> where TChannel : class
type DuplexClientBase<'Channel (requires 'Channel : null)> = class
    inherit ClientBase<'Channel (requires 'Channel : null)>
Public MustInherit Class DuplexClientBase(Of TChannel)
Inherits ClientBase(Of TChannel)

Tür Parametreleri

TChannel

Oluşturulacak kanalın türü.

Devralma
DuplexClientBase<TChannel>

Örnekler

Aşağıdaki örnekte, geri çağırmaları dinlemek üzere geri çağırma nesnesiyle yeni System.ServiceModel.InstanceContext bir nesne geçirmek için çift yönlü WCF istemci türünün SampleDuplexHelloClientistemcisinde kullanımı gösterilmektedir.

using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Threading;

namespace Microsoft.WCF.Documentation
{
  [CallbackBehaviorAttribute(
   IncludeExceptionDetailInFaults= true,
    UseSynchronizationContext=true,
    ValidateMustUnderstand=true
  )]
  public class Client : SampleDuplexHelloCallback
  {
    AutoResetEvent waitHandle;

    public Client()
    {
      waitHandle = new AutoResetEvent(false);
    }

    public void Run()
    {
      // Picks up configuration from the configuration file.
      SampleDuplexHelloClient wcfClient
        = new SampleDuplexHelloClient(new InstanceContext(this), "WSDualHttpBinding_SampleDuplexHello");
      try
      {
        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine("Enter a greeting to send and press ENTER: ");
        Console.Write(">>> ");
        Console.ForegroundColor = ConsoleColor.Green;
        string greeting = Console.ReadLine();
        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine("Called service with: \r\n\t" + greeting);
        wcfClient.Hello(greeting);
        Console.WriteLine("Execution passes service call and moves to the WaitHandle.");
        this.waitHandle.WaitOne();
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.WriteLine("Set was called.");
        Console.Write("Press ");
        Console.ForegroundColor = ConsoleColor.Red;
        Console.Write("ENTER");
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.Write(" to exit...");
        Console.ReadLine();
      }
      catch (TimeoutException timeProblem)
      {
        Console.WriteLine("The service operation timed out. " + timeProblem.Message);
        Console.ReadLine();
      }
      catch (CommunicationException commProblem)
      {
        Console.WriteLine("There was a communication problem. " + commProblem.Message);
        Console.ReadLine();
      }
    }
    public static void Main()
    {
      Client client = new Client();
      client.Run();
    }

    public void Reply(string response)
    {
      Console.WriteLine("Received output.");
      Console.WriteLine("\r\n\t" + response);
      this.waitHandle.Set();
    }
  }
}

Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Threading

Namespace Microsoft.WCF.Documentation
  <CallbackBehaviorAttribute(IncludeExceptionDetailInFaults:= True, UseSynchronizationContext:=True, ValidateMustUnderstand:=True)> _
  Public Class Client
      Implements SampleDuplexHelloCallback
    Private waitHandle As AutoResetEvent

    Public Sub New()
      waitHandle = New AutoResetEvent(False)
    End Sub

    Public Sub Run()
      ' Picks up configuration from the configuration file.
      Dim wcfClient As New SampleDuplexHelloClient(New InstanceContext(Me), "WSDualHttpBinding_SampleDuplexHello")
      Try
        Console.ForegroundColor = ConsoleColor.White
        Console.WriteLine("Enter a greeting to send and press ENTER: ")
        Console.Write(">>> ")
        Console.ForegroundColor = ConsoleColor.Green
        Dim greeting As String = Console.ReadLine()
        Console.ForegroundColor = ConsoleColor.White
        Console.WriteLine("Called service with: " & Constants.vbCrLf & Constants.vbTab & greeting)
        wcfClient.Hello(greeting)
        Console.WriteLine("Execution passes service call and moves to the WaitHandle.")
        Me.waitHandle.WaitOne()
        Console.ForegroundColor = ConsoleColor.Blue
        Console.WriteLine("Set was called.")
        Console.Write("Press ")
        Console.ForegroundColor = ConsoleColor.Red
        Console.Write("ENTER")
        Console.ForegroundColor = ConsoleColor.Blue
        Console.Write(" to exit...")
        Console.ReadLine()
      Catch timeProblem As TimeoutException
        Console.WriteLine("The service operation timed out. " & timeProblem.Message)
        Console.ReadLine()
      Catch commProblem As CommunicationException
        Console.WriteLine("There was a communication problem. " & commProblem.Message)
        Console.ReadLine()
      End Try
    End Sub
    Public Shared Sub Main()
      Dim client As New Client()
      client.Run()
    End Sub

    Public Sub Reply(ByVal response As String) Implements SampleDuplexHelloCallback.Reply
      Console.WriteLine("Received output.")
      Console.WriteLine(Constants.vbCrLf & Constants.vbTab & response)
      Me.waitHandle.Set()
    End Sub
  End Class
End Namespace

Açıklamalar

Sınıfını DuplexClientBase<TChannel> kullanarak geri çağırma nesnesini belirten bir hizmete kanal oluşturun. DuplexClientBase<TChannel> nesnesi, WCF nesnesi için bağlantı sağlayan bir System.ServiceModel.DuplexChannelFactory<TChannel> nesneyi sarmalar. Çift yönlü bir hizmete bağlanmak için her iki türü de kullanabilirsiniz. Çift yönlü hizmetler hakkında daha fazla bilgi için bkz. Çift Yönlü Hizmetler.

Bu sınıftan türetilen Yönetilen C++ kullanıcıları için özel not:

  • Temizleme kodunuzu bir yıkıcıya değil (On)(Begin)Close (ve/veya OnAbort) içine yerleştirin.

  • Yıkıcılardan kaçının: derleyicinin otomatik olarak oluşturmasına neden olurlar IDisposable

  • Başvuru olmayan üyelerden kaçının: Derleyicinin otomatik olarak oluşturmasına neden olabilirler IDisposable

  • Sonlandırıcılardan kaçının; ancak bir tane eklerseniz, otomatik oluşturulan IDisposable davranışın ne olduğunu öykünmek için derleme uyarısını ve çağrısını SuppressFinalize(Object) ve sonlandırıcıyı (On)(Begin)Close (ve/veya OnAbort) öğesinden gizlemeniz gerekir.

Oluşturucular

DuplexClientBase<TChannel>(InstanceContext)

Belirtilen geri çağırma nesnesini kullanarak sınıfın DuplexClientBase<TChannel> yeni bir örneğini başlatır.

DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Belirtilen geri çağırma nesnesi, bağlama ve hizmet uç noktası adresini kullanarak sınıfın yeni bir örneğini DuplexClientBase<TChannel> başlatır.

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Belirtilen geri çağırma nesnesi ve hizmet uç noktası ile sınıfının yeni bir örneğini DuplexClientBase<TChannel> başlatır.

DuplexClientBase<TChannel>(InstanceContext, String)

Belirtilen geri çağırma nesnesini ve yapılandırma adını kullanarak sınıfın yeni bir örneğini DuplexClientBase<TChannel> başlatır.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Belirtilen geri çağırma nesnesini, yapılandırma adını ve hizmet uç noktası adresini kullanarak sınıfın yeni bir örneğini DuplexClientBase<TChannel> başlatır.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Belirtilen geri çağırma nesnesini, yapılandırma adını ve hizmet uç noktası adresini kullanarak sınıfın yeni bir örneğini DuplexClientBase<TChannel> başlatır.

DuplexClientBase<TChannel>(Object)

Belirtilen geri çağırma nesnesini kullanarak sınıfın DuplexClientBase<TChannel> yeni bir örneğini başlatır.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Belirtilen geri çağırma nesnesi, bağlama ve hizmet uç noktası adresini kullanarak sınıfın yeni bir örneğini DuplexClientBase<TChannel> başlatır.

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

Belirtilen geri çağırma nesnesi ve hizmet uç noktası ile sınıfının yeni bir örneğini DuplexClientBase<TChannel> başlatır.

DuplexClientBase<TChannel>(Object, String)

Belirtilen geri çağırma nesnesini ve yapılandırma adını kullanarak sınıfın yeni bir örneğini DuplexClientBase<TChannel> başlatır.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Belirtilen geri çağırma nesnesini, yapılandırma adını ve hizmet uç noktası adresini kullanarak sınıfın yeni bir örneğini DuplexClientBase<TChannel> başlatır.

DuplexClientBase<TChannel>(Object, String, String)

Belirtilen geri çağırma nesnesini, uç nokta yapılandırma adını ve hizmet uç noktası adresini kullanarak sınıfın yeni bir örneğini DuplexClientBase<TChannel> başlatır.

Özellikler

Channel

Çeşitli yapılandırılmış hizmet uç noktalarına ileti göndermek için kullanılan iç kanalı alır.

(Devralındığı yer: ClientBase<TChannel>)
ChannelFactory

Temel alınan ChannelFactory<TChannel> nesneyi alır.

(Devralındığı yer: ClientBase<TChannel>)
ClientCredentials

bir işlemi çağırmak için kullanılan istemci kimlik bilgilerini alır.

(Devralındığı yer: ClientBase<TChannel>)
Endpoint

WCF istemcisinin bağlanabileceği hizmet için hedef uç noktayı alır.

(Devralındığı yer: ClientBase<TChannel>)
InnerChannel

Temel alınan IClientChannel uygulamayı alır.

(Devralındığı yer: ClientBase<TChannel>)
InnerDuplexChannel

Çift yönlü kanal için temel alınan IClientChannel uygulamayı alır.

State

Nesnenin geçerli durumunu ClientBase<TChannel> alır.

(Devralındığı yer: ClientBase<TChannel>)

Yöntemler

Abort()

Nesnenin ClientBase<TChannel> geçerli durumundan kapalı duruma hemen geçişine neden olur.

(Devralındığı yer: ClientBase<TChannel>)
Close()

Nesnenin ClientBase<TChannel> geçerli durumundan kapalı duruma geçmesine neden olur.

(Devralındığı yer: ClientBase<TChannel>)
CloseAsync()

Çift yönlü bir hizmete kanal oluşturmak ve bu kanalı bir geri çağırma nesnesiyle ilişkilendirmek için kullanılır.

(Devralındığı yer: ClientBase<TChannel>)
CreateChannel()

Oluşturucuya geçirilen geri çağırma nesnesiyle ilişkili hizmete bir kanal döndürür.

CreateChannel()

Hizmete yeni bir kanal döndürür.

(Devralındığı yer: ClientBase<TChannel>)
DisplayInitializationUI()

İç kanala, kullanmadan önce kanalı başlatmak için gerekliyse bir kullanıcı arabirimi görüntülemesini bildirir.

(Devralındığı yer: ClientBase<TChannel>)
Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetDefaultValueForInitialization<T>()

C# dilinde varsayılan anahtar sözcüğün davranışını çoğaltır.

(Devralındığı yer: ClientBase<TChannel>)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object)

Olay tabanlı zaman uyumsuz deseni uygulamak için destek sağlar. Bu düzen hakkında daha fazla bilgi için bkz. Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış.

(Devralındığı yer: ClientBase<TChannel>)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
Open()

Nesnenin ClientBase<TChannel> oluşturulan durumdan açık duruma geçmesine neden olur.

(Devralındığı yer: ClientBase<TChannel>)
OpenAsync()

Çift yönlü bir hizmete kanal oluşturmak ve bu kanalı bir geri çağırma nesnesiyle ilişkilendirmek için kullanılır.

(Devralındığı yer: ClientBase<TChannel>)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

IAsyncDisposable.DisposeAsync()

Çift yönlü bir hizmete kanal oluşturmak ve bu kanalı bir geri çağırma nesnesiyle ilişkilendirmek için kullanılır.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.BeginClose(AsyncCallback, Object)

kapatmak için ClientBase<TChannel>zaman uyumsuz bir işlem başlatır.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object)

belirtilen zaman aşımı ile kapatmak ClientBase<TChannel> için zaman uyumsuz bir işlem başlatır.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.BeginOpen(AsyncCallback, Object)

Nesneyi açmak ClientBase<TChannel> için zaman uyumsuz bir işlem başlatır.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object)

Nesneyi belirli bir zaman aralığı içinde açmak ClientBase<TChannel> için zaman uyumsuz bir işlem başlatır.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.Close()

İletişim nesnesinin geçerli durumundan kapalı duruma geçmesine neden olur.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.Close(TimeSpan)

Nesnenin ClientBase<TChannel> geçerli durumundan kapalı duruma geçmesine neden olur.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.Closed

Nesne geçerli durumundan kapalı duruma geçtiğinde ClientBase<TChannel> çağrılan olay işleyicisi.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.Closing

Nesne geçerli durumundan kapalı duruma geçtiğinde ClientBase<TChannel> çağrılan olay işleyicisi.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.EndClose(IAsyncResult)

Nesneyi kapatmak için zaman uyumsuz bir işlemi tamamlar ClientBase<TChannel> .

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.EndOpen(IAsyncResult)

Nesneyi açmak için zaman uyumsuz bir işlemi tamamlar ClientBase<TChannel> .

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.Faulted

Nesne üzerinde bir işlem gerçekleştirirken bir hata oluştuğunda çağrılan olay işleyicisi ClientBase<TChannel> .

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.Open()

Bir iletişim nesnesinin oluşturulan durumdan açık duruma geçmesine neden olur.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.Open(TimeSpan)

Nesnenin ClientBase<TChannel> belirli bir süre içinde oluşturulan durumdan açık duruma geçmesine neden olur.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.Opened

Nesne oluşturulan durumdan açık duruma geçtiğinde ClientBase<TChannel> çağrılan olay işleyicisi.

(Devralındığı yer: ClientBase<TChannel>)
ICommunicationObject.Opening

Nesne oluşturulan durumdan açık duruma geçtiğinde ClientBase<TChannel> çağrılan olay işleyicisi.

(Devralındığı yer: ClientBase<TChannel>)
IDisposable.Dispose()

yönteminin Dispose() açık uygulaması.

(Devralındığı yer: ClientBase<TChannel>)

Uzantı Metotları

CloseHelperAsync(ICommunicationObject, TimeSpan)

Çift yönlü bir hizmete kanal oluşturmak ve bu kanalı bir geri çağırma nesnesiyle ilişkilendirmek için kullanılır.

OpenHelperAsync(ICommunicationObject, TimeSpan)

Çift yönlü bir hizmete kanal oluşturmak ve bu kanalı bir geri çağırma nesnesiyle ilişkilendirmek için kullanılır.

Şunlara uygulanır