Aracılığıyla paylaş


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 bir System.ServiceModel.InstanceContext nesnesi geçirmek için çift yönlü WCF istemci türü olan SampleDuplexHelloClientistemcisindeki 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

geri çağırma nesnesini belirten bir hizmete kanal oluşturmak için DuplexClientBase<TChannel> sınıfını kullanın. DuplexClientBase<TChannel> nesnesi, WCF nesnesi için bağlantı sağlayan bir System.ServiceModel.DuplexChannelFactory<TChannel> nesnesi sarmalar. Çift yönlü hizmete bağlanmak için iki türden birini 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 IDisposable oluşturmasına neden olurlar

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

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

Oluşturucular

DuplexClientBase<TChannel>(InstanceContext)

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

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

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

DuplexClientBase<TChannel>(InstanceContext, String)

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

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

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

DuplexClientBase<TChannel>(InstanceContext, String, String)

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

DuplexClientBase<TChannel>(Object)

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

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

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

DuplexClientBase<TChannel>(Object, String)

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

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Belirtilen geri çağırma nesnesini, yapılandırma adını ve hizmet uç noktası adresini kullanarak DuplexClientBase<TChannel> sınıfının yeni bir örneğini 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 DuplexClientBase<TChannel> sınıfının yeni bir örneğini 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> nesnesini 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 hizmetin hedef uç noktasını alır.

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

Temel alınan IClientChannel uygulamasını alır.

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

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

State

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

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

Yöntemler

Abort()

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

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

ClientBase<TChannel> nesnesinin 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, kanalı kullanmadan önce 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()

Geçerli örneğin Type 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 Objectbasit bir kopyasını oluşturur.

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

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

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

Geçerli nesneyi temsil eden bir dize 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)

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

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

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

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

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

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

Belirli bir zaman aralığı içinde ClientBase<TChannel> nesnesini açmak 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)

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

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

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

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

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

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

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

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

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

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

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

(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)

ClientBase<TChannel> nesnesinin belirtilen zaman aralığı içinde oluşturulan durumdan açık duruma geçmesine neden olur.

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

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

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

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

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

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

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

Uzantı Metotları

ConfigureAwait(IAsyncDisposable, Boolean)

Zaman uyumsuz bir atılabilir öğeden döndürülen görevlerde awaits işleminin nasıl gerçekleştirileceğini yapılandırılır.

Şunlara uygulanır