看着
WCF ChannelFactory vs generating proxy
似乎创建WCF客户端的最佳做法是创建代理(非自动生成)。
我一直在网上寻找一段时间,我没有找到任何完整的例子(代理类,web.config)
您能提供一个示例或资源链接吗?
答案 0 :(得分:19)
这篇文章正是关于你的问题,我相信:
WCF the Manual Way... The Right Way
分享了这一点后,手动创建代理可能并不总是最好的利用你的时间。本文介绍了这样做的一些重要原因 - 您当然可以拥有更多控制权,您的客户可能会有更轻松的时间等等。但总体而言,像这样手动操作需要更多时间,并向用户解释你的服务究竟如何使用你提供的代理可能会很痛苦。
WCF允许元数据交换和发现的原因是,VS会自动为您创建代理。
无论哪种方式,它都是一篇很酷的文章,也是值得学习的技巧。
答案 1 :(得分:11)
我就是这样做的。
获取服务合同和数据合同
如果我有权访问服务代码,我就拥有了所有合同。如果没有,我可以使用 svcutil 或添加服务参考来生成它们。
制作配置
我使用添加服务参考来获取app.config文件。然后我删除它生成的所有其他内容。根据需要编辑app.config。
定义工厂
说我有服务合同IFooService
:
interface IFooServiceChannel : IFooService, IClientChannel { }
这就是字面意思。没有会员。
创建工厂
fooServiceFactory = new ChannelFactory<IFooServiceChannel>(
"NetTcpBinding_IFooService");
字符串“NetTcpBinding_IFooService”是app.config中name
元素的binding
属性。
制作频道
fooService = fooServiceFactory.CreateChannel();
使用
fooService.DoSomething();
最棘手的部分是让app.config正确。您需要了解绑定和端点。这是一个学习曲线,但没什么大不了的。
答案 2 :(得分:8)
以下是基本步骤。
真的很简单。没有自动生成的代码,没有服务引用。使用异步调用和Silverlight会有点复杂,但不会太多。