gpt4 book ai didi

WCF ChannelFactory 与生成代理

转载 作者:行者123 更新时间:2023-12-03 05:12:25 25 4
gpt4 key购买 nike

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

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

谢谢

最佳答案

创建 WCF 客户端有 3 种基本方法:

  1. 让 Visual Studio 生成您的代理。这会自动生成通过读取 WSDL 连接到服务的代码。如果服务因任何原因发生变化,您必须重新生成它。这样做的一大优点是它很容易设置 - VS 有一个向导,而且都是自动的。缺点是您依赖 VS 为您完成所有艰苦的工作,因此您会失去控制。

  2. 通过已知接口(interface)使用ChannelFactory。这依赖于您拥有描述服务(服务契约)的本地接口(interface)。最大的优点是可以更轻松地管理更改 - 您仍然需要重新编译和修复更改,但现在您不是重新生成代码,而是引用新接口(interface)。通常,当您控制服务器和客户端时,会使用此方法,因为可以更轻松地模拟两者以进行单元测试。然而,可以为任何服务编写接口(interface),甚至是 REST 服务 - 请查看 this Twitter API .

  3. 编写您自己的代理 - 这相当容易,尤其是对于使用 HttpClientWebClient 的 REST 服务。这为您提供了最精细的控制,但代价是大量服务 API 位于字符串中。例如: var content = new HttpClient().Get("http://yoursite.com/resource/id").Content; - 如果 API 的详细信息发生更改,您不会遇到这种情况直到运行时才会出现错误。

就我个人而言,我从来不喜欢选项 1 - 依赖自动生成的代码很困惑并且失去了太多控制。另外,它经常会产生序列化问题 - 我最终会得到两个相同的类(一个在服务器代码中,一个自动生成),这可以解决,但很痛苦。

选项 2 应该是完美的,但 channel 有点太有限了 - 例如它们 completely lose the content of HTTP errors 。也就是说,拥有描述服务的接口(interface)更容易编码和维护。

关于WCF ChannelFactory 与生成代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1698275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com