为啥我必须使用 WCF 而不是 Web 服务? [复制]

Posted

技术标签:

【中文标题】为啥我必须使用 WCF 而不是 Web 服务? [复制]【英文标题】:Why i have to use WCF instead of web service? [duplicate]为什么我必须使用 WCF 而不是 Web 服务? [复制] 【发布时间】:2013-02-27 00:13:15 【问题描述】:

这是我关于 *** 的第一个问题。

我读过很多文章说开发人员应该使用 WCF 而不是 Web 服务,因为它可以托管在不同的托管环境等...

但我想的是,我可以使用 HttpRequest 从任何项目中调用 Web 服务。 那么为什么我必须使用 WCF。

【问题讨论】:

您不必使用 WCF,只要 SOAP Web 服务对您同样有效。不过,您可能必须将您的框架重新定位到 2.0,因为 Visual Studio 中没有 .net 4 的 SOAP Webservices 模板。 WCF 是 Microsoft 实现 SOA 的方法。使用 WCF,您可以使用多个绑定来访问您的服务器,例如 Net Tcp、MsMq 等。 您可能对 Web API 感兴趣:asp.net/web-api @TimMedora 这是一个很好的建议,在我的回答中忘记了。 @FrankThomas:为什么你会建议 OP 恢复到旧的框架版本以使用过时的技术?这是开玩笑的意思吗? 【参考方案1】:

使用 WCF,开箱即用的绑定是 BasicHttpBinding,它只是 SOAP,与 .asmx Web 服务相同。作为客户端,您仍然可以以与访问 .asmx 服务完全相同的方式访问它——通过从 WSDL 生成代理,或正常的 HttpWebRequest 或您之前使用的任何方式。

好处是您使用 WCF 获得的所有其他选项,例如安全性、不同绑定的可能性、独立托管等等。此外,这是 .NET 社区选择的方向,因此,如果您想在基于 .NET 服务的世界中保持相关性,则需要学习它。

【讨论】:

【参考方案2】:

WCF 比 ASMX Web 服务要多得多。如果 ASMX Web 服务满足您的需求,那么使用它就可以了,但是您可能会发现使用 WCF 比使用 ASMX Web 服务更容易解决一些问题。您还可以使用 WCF 完成许多使用 ASMX Web 服务无法完成的事情(请记住,它是一个框架,而不仅仅是一种创建 Web 服务的方式)。

创建 WCF 服务而不是 ASMX Web 服务,即使它们用于相同的目的,这似乎增加了复杂性而没有额外的好处,但这是开始学习 WCF 的好方法。

【讨论】:

【参考方案3】:

您不必使用 Windows Communication Foundation。它最终将是你的选择。该项目也可能有助于满足您的需求。

但是,您使用 Windows Communication Foundation 的主要原因如下:

提供跨多个平台的各种通信:HTTP、HTTPS、TCP、MSMQ 等。 它提供了额外的安全性。 它有更好的序列化和反序列化手段。 它提供了更多的代码重用性。 不同的托管形式。

这些是一些关键,最重要的是它的设计可以节省开发人员在基于 Web 的通信中的时间。它也是一种为完全敏捷的应用程序引入面向服务的架构的方法。

另一个重要的注意事项是要意识到微软对标准 Web 服务的支持有限;现在他们已经实现了 WCF 技术。

希望对您有所帮助。

【讨论】:

以上是关于为啥我必须使用 WCF 而不是 Web 服务? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 WCF 服务能够处理来自不同进程的调用而不是来自线程的调用

WCF 服务而不是 ASMX Web 服务?

WCF 上的 CORS - 为啥在请求来自客户端机器时指定 Web 服务器?

为啥 WCF 休息服务(不是使用 WCF 休息服务模板创建的)不起作用?

为啥我的 WCF Web 服务在具有不同字段名称的不同命名空间中显示此对象?

为啥从 WCF 服务返回数据集或数据表不是一个好习惯?啥是替代品?