[英]How to create WCF proxy without svc file which is hosted in windows apps
[英]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
进行通信。 正是为此通道定义了Opened
, Closed
和Faulted
状态。
看一下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.