0

私はWCFの初心者です。そのため、小さな wcf チャットのコードをオンラインで読んでいました。その wcf チャット用の wcf クライアントを作成するのに行き詰まりました。私が読んでいたURL http://islameldemery.blogspot.in/2008/05/wcf-serverclient-chat-sample.html

インターフェイスの一部があり、サービスはServiceHostの助けを借りて win 形式でホストされていますが、クライアント エンドでプロキシがどのように作成されたかを理解できません。

彼らはこのイベントを以下で使用します

InnerDuplexChannel.Opened
InnerDuplexChannel.Closed
InnerDuplexChannel.Faulted 

私は本当に理解していません。クライアントがどのように作成されたか教えてください。URL にアクセスして、その人がそのチャット サービスのクライアント側でプロキシを作成する方法を教えてください。

セルフホストのように動的にプロキシを作成しようとしました

var myBinding = new NetTcpBinding(SecurityMode.None);
  DuplexChannelFactory<ISampleChatCallback> cf =
          new DuplexChannelFactory<ISampleChatCallback>(
              new CallbackImpl(),
              myBinding,
              new EndpointAddress("net.tcp://192.168.1.2:8080/DataService")); 
  IServerWithCallback srv = cf.CreateChannel();

しかし、srvにはOpened、Closed、またはfaultedなどと呼ばれるイベントはありません.cleint endでプロキシがどのように作成されたかを本当に理解する必要があります. クライアント側のコードを完成させることができるので、プロキシの作成を手伝ってください。ありがとう

4

2 に答える 2

1

svcutil.exe.NET 用の WCF クライアントは、プロキシを生成できるというコマンド ライン ツールを使用して生成されます。それらを生成するための非常に一般的な他の方法は、Visual Studio でプロジェクトにサービス参照を追加することsvcutilです。このプロセスは、http: //msdn.microsoft.com/en-us/library/ms733133.aspxに記載されています。

Svcutil は必要なプロキシ クラスを生成しChannel、通信のために内部的に を使用します。Opened状態、ClosedおよびFaultedが定義されているのは、このチャネル用です。

于 2012-12-15T19:22:36.920 に答える
0

をご覧くださいprivate void buttonConnect_Click(object sender, EventArgs e)

if (CheckServer()) //this seems to get metadata (MEX) from server
{
    proxy = null;
    InstanceContext context = new InstanceContext(this);

    // Step into this method and see what code gets executed.
    // This code can be generated by Visual Studio or written manually
    proxy = new Client.SampleService.SampleChatClient(context);

    proxy.InnerDuplexChannel.Opened += new EventHandler(InnerDuplexChannel_Opened);
    ...
}

proxy、(私が推測する) WCF 二重チャネル通信クラス (それが何であれ) の単なるラッパーであるいくつかのイベントを公開します。これらのイベントは、新しい接続が開かれたとき、閉じられたとき、または障害状態になったときに発生します。

于 2012-12-15T19:23:58.440 に答える