如果我可以同样使用 Webservices 2.0 客户端,那么 WCF 客户端的优势是啥?
Posted
技术标签:
【中文标题】如果我可以同样使用 Webservices 2.0 客户端,那么 WCF 客户端的优势是啥?【英文标题】:What's the advantage of a WCF client if I can use a Webservices 2.0 client just as fine?如果我可以同样使用 Webservices 2.0 客户端,那么 WCF 客户端的优势是什么? 【发布时间】:2012-02-16 19:32:11 【问题描述】:最近,我们公司的 API 中引入了一些 WCF 服务。 Windows 的示例实现利用了 Visual Studio 2010 生成的代理代码(完整的 WCF 客户端或 Silverlight 代码)。看起来都不错。
后来想通了,让Studio生成一个Webservices 2.0客户端代码代理也是可以的,我能说什么呢:
它和 WCF 客户端一样好用 它还返回真实对象,就像 WCF 一样 它也在使用 SOAP原生 WCF 客户端的区别/优势到底是什么?
请注意,我对客户端特别感兴趣。服务器端是另一回事。关键是:如果 Web 服务客户端代码运行良好,我为什么要使用 WCF 客户端代码连接到 WCF 服务器?
我也可以询问关于 MONO 的问题:Mono 中的 WCF 支持远非完美,而 WebServices 2.0 运行良好。因此,在与 WCF 斗争了一段时间后,我切换回 WS 2.0 客户端代码代理,到目前为止还没有发现任何问题。有没有我必须预料到的问题?
【问题讨论】:
***.com/questions/351334/web-service-vs-wcf-service 有趣的文章,但就客户端代码而言,我仍然不明白这一点。 【参考方案1】:灵活性。
今天,您通过 HTTP 访问该服务。明天,您可能想要添加一些持久性并通过 MSMQ 访问它。使用 WCF 是一种配置更改 - 使用 Web 服务客户端代码,您正在查看代码的该区域的完全重写。
【讨论】:
但是如果我坚持使用HTTP,“功能”是一样的吗?或者有什么我不能用 WCF 做的吗? 我不知道;如果需要,您可以手动构建 xml!您对 Mono 支持的额外关注确实引发了一个有趣的转折。 WCF 为处理 Windows .net 客户端提供了更大的灵活性,但如果您需要与其他系统(Java、.net 等)的互操作性,您的服务器最好公开标准的 http(s) 绑定以及任何花哨的东西!【参考方案2】:另一个好处是只需更改配置即可启用跟踪、消息记录和诊断。
见Administration and Diagnostics,上面写着
WCF 提供的诊断功能
WCF 提供以下诊断功能:
端到端跟踪提供检测数据,用于在不使用调试器的情况下对应用程序进行故障排除。 WCF 输出 跟踪流程里程碑以及错误消息。这个可以 包括打开通道工厂或通过以下方式发送和接收消息 服务主机。可以为正在运行的应用程序启用跟踪以 监测其进展。有关详细信息,请参阅 Tracing 主题。到 了解如何使用跟踪来调试应用程序,请参阅 Using Tracing to Troubleshoot Your Application话题。
消息记录允许您查看消息在传输之前和之后的外观。有关详细信息,请参阅Message Logging 主题。
事件跟踪会在事件日志中写入任何重大问题的事件。然后,您可以使用事件查看器检查任何异常情况。为了 更多信息,请参阅Event Logging 主题。
通过性能监视器公开的性能计数器使您能够监视应用程序和系统的运行状况。更多 信息,请参阅WCF Performance Counters 主题。
【讨论】:
是的,但这与服务器有关,不是吗?如果服务器实现是 WCF,我可以使用它吗? 你也可以在客户端使用所有这些。以上是关于如果我可以同样使用 Webservices 2.0 客户端,那么 WCF 客户端的优势是啥?的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 AFNetworking 将 iOS 连接到 asp.net webservices
如何创建 Web 服务 | ASP.NET 2.0 | C# |网页服务