首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WCF ChannelFactory与生成代理

WCF ChannelFactory与生成代理
EN

Stack Overflow用户
提问于 2009-11-09 07:16:08
回答 5查看 45.9K关注 0票数 82

我只是想知道在什么情况下,当您可以使用ChannelFactory调用调用时,您更喜欢从WCF服务生成代理?

这样,您就不必生成代理并担心在服务器更新时重新生成代理了?

谢谢

EN

回答 5

Stack Overflow用户

发布于 2011-01-27 22:45:07

我在使用MetadataResolver.Resolve方法的同时使用ChannelFactory。客户机配置很麻烦,所以我从服务器获取ServiceEndpoint。

当您使用ChannelFactory(Of T)时,T是您可以从项目中的引用中获得的原始合同,也可以是生成的合同实例。在某些项目中,我从服务引用生成代码,因为我无法添加对契约dll的引用。您甚至可以生成一个带有服务引用的异步约定,并将该约定接口与ChannelFactory一起使用。

对我来说,使用ChannelFactory的主要目的是去掉客户端配置信息。在下面的示例代码中,您可以看到如何在没有配置的情况下实现WCF客户端。

代码语言:javascript
复制
Dim fixedAddress = "net.tcp://server/service.svc/mex"
Dim availableBindings = MetadataResolver.Resolve(GetType(ContractAssembly.IContractName), New EndpointAddress(fixedAddress))
factoryService = New ChannelFactory(Of ContractAssembly.IContractName)(availableBindings(0))
accesService = factoryService.CreateChannel()

在我的最终项目中,检查availableBindings以使用net.tcp或net.pipe (如果可用)。这样,我就可以使用最好的可用绑定来满足我的需求。我只依赖于服务器上存在元数据端点这一事实。

我希望这能帮到你

顺便说一句,这是使用.NET 3.5完成的。然而,它也适用于4.0。

票数 21
EN

Stack Overflow用户

发布于 2009-11-09 07:21:31

为了使用ChannelFactory<T>,您必须愿意在服务和客户端之间共享契约程序集。如果您对此没有意见,那么ChannelFactory<T>可以为您节省一些时间。

票数 11
EN

Stack Overflow用户

发布于 2009-11-09 09:19:30

代理将构建异步函数,这对它来说是很好的。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1698275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档