繁体   English   中英

如何为Windows应用程序中托管的WCF服务创建代理

[英]How to create a proxy for WCF service hosted in windows apps

我是WCF的初学者。 所以我在网上阅读有关小型wcf聊天的代码。我被困在为该wcf聊天创建wcf客户端。 我从中读取的网址http://islameldemery.blogspot.in/2008/05/wcf-serverclient-chat-sample.html

界面有一部分,服务是在ServiceHost的帮助下以Win形式托管的,但是我无法理解客户端是如何创建代理的。

他们在下面使用此事件

InnerDuplexChannel.Opened
InnerDuplexChannel.Closed
InnerDuplexChannel.Faulted 

我真的不明白。 谁能告诉我客户端的创建方式。 请访问该网址,并告诉我该人如何在客户端为该聊天服务创建代理。

我试图像自我托管一样动态创建代理

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端如何创建代理。 请帮助我创建代理,这样我就可以完成客户端的代码。 谢谢

适用于.NET的WCF客户端是使用称为svcutil.exe的命令行工具生成的,该工具可以生成代理,有关此文档,请svcutil.exe此处: http : //msdn.microsoft.com/zh-cn/library/aa751905.aspx 生成它们的另一种常见方法是在Visual Studio中向您的项目添加服务引用,最终生成与使用svcutil相同的代理。 此过程记录在这里: http : //msdn.microsoft.com/zh-cn/library/ms733133.aspx

Svcutil将为您生成必要的代理类,并在内部使用Channel进行通信。 正是为此通道定义了OpenedClosedFaulted状态。

看一下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双工通道通信类的包装器(无论它是什么)。 当新的连接打开,关闭或出现故障时,将触发这些事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM