使用 .svc 文件和在“WCF 服务主机”中托管 WCF 服务有啥区别?

Posted

技术标签:

【中文标题】使用 .svc 文件和在“WCF 服务主机”中托管 WCF 服务有啥区别?【英文标题】:What is the difference between using a .svc file and hosting the WCF service in 'WCF Service Host'?使用 .svc 文件和在“WCF 服务主机”中托管 WCF 服务有什么区别? 【发布时间】:2011-09-11 17:30:06 【问题描述】:

我写了一个服务,它有一个 .svc 文件。我可以浏览到这项服务,但这似乎是一种奇怪的方式。我想知道是否可以使用 .svc 文件生成服务,或者我们应该考虑使用 WCF 服务主机并设置绑定等......

【问题讨论】:

【参考方案1】:

一个 svc 文件用于在 IIS 中进行托管(它现在可以在 .NET 4.0 中托管 without these)。除非您有自行托管的理由,否则我强烈建议您坚持使用 IIS (WAS),因为它“免费”提供了如此多的托管基础​​架构。

更新 (11/16): 更新了断开的链接以指向比较 ASP.NET 论坛帖子。以前的链接是here,以防它在未来某个时候恢复。

【讨论】:

很酷,是的,刚刚阅读了有关自托管的信息,我想如果我们想允许 TCP 绑定,我们将自托管。对于我们的需要,IIS 中的 .svc 就可以了! @Pete2k 您还可以将 WAS 用于 TCP 绑定。事实上,IIS7 中 WAS 的核心目的是提供超越 HTTP 的托管功能。要让您的解决方案通过 TCP 进行通信,只需在您的配置中的 HTTP 旁边添加一个 TCP 端点定义(并为远程客户端取消适当的防火墙限制)。 @DiegoDeberdt 更新了链接。见说明。【参考方案2】:

嗯,在 WCF 中,您不仅限于在 IIS 中托管。 .svc 文件相当于 asmx 文件。如果您要在 IIS 中托管,我使用了 .svc 文件,但如果我在控制台应用程序或 Windows 服务中托管,我将通过 ServiceHost 实例化该服务。

【讨论】:

【参考方案3】:

据我所知,在 IIS 中托管服务时需要 .svc 文件。 如果您想以其他方式托管您的服务(例如,通过在代码中实例化服务主机),则不需要它。

话虽如此,我个人更喜欢使用 IIS 进行服务托管。

【讨论】:

以上是关于使用 .svc 文件和在“WCF 服务主机”中托管 WCF 服务有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

在托管进程中使用 EventWaitHandle 和在非托管进程中使用 WaitForSingleObject 进行跨进程同步

客户端检查命名管道主机是不是打开

SVC 文件和 WCF 项目之间的关系?

WCF 服务主机找不到任何服务元数据。请检查元数据是不是启用

WCF 一步一步 发布 WCF服务 到 IIS (图)

如何实现自托管 WCF 数据服务(http://localhost:1234/myDataService.svc/...)