结合 WCF 服务库和 WCF 服务应用程序

Posted

技术标签:

【中文标题】结合 WCF 服务库和 WCF 服务应用程序【英文标题】:Combining WCF Service Library and WCF Service Application 【发布时间】:2013-11-25 12:18:18 【问题描述】:

感谢 Stack Overflow 和其他一些网站,我了解 WCF LIbrary 和 WCF 服务应用程序模板之间的区别。

简而言之,库是一个允许多种类型托管的 DLL。它没有 .svc 文件。虽然服务应用程序模板是专门使用 IIS 在我的 .svc 文件中创建的。

我读到 WCF 服务库是最好的方法,因为它是最灵活的。但除了使用 WCF 服务应用程序模板之外,我从未看到有关如何执行此操作的说明。

从 WCF 服务库到从头开始托管在 IIS 上是否困难?我有两本关于 WCF 的书,并且我已经阅读了很多文章,但没有一篇文章涉及如何仅使用 WCF 服务库和无 WCF 服务应用程序来创建 svc 文件。为什么?

Nigel Shaw 还在以下链接中提到使用库选项存在限制。 What is the purpose of WCF Service Library?

基本上我想做的是在 IIS 和 Windows 服务上托管 WCF 服务。由此看来,组合方式是最好的方式。不过,我想了解为什么没有更多关于使用 WCF 服务库的说明。

好的,我确实找到了几篇似乎使用 ASP.NET Web 应用程序的文章,并告诉您如何为 svc 文件创建文本文件。

本文:http://debugmode.net/2010/12/25/wcf-service-library-creating-hosting-and-consuming-wcf-service-with-wcf-service-library-project-template/

还有这个:http://danielvanwyk.wordpress.com/2010/04/30/create-host-and-consume-a-wcf-service-using-the-wcf-service-library-template-in-visual-studio-2008/

但我仍然不明白为什么仍然需要 ASP.NET 应用程序?如果我添加一个 svc 文件,它是否会放置在 wwwroot 目录中(这似乎是 WCF 服务应用程序放置它的 .svc 文件的位置?

谢谢!

【问题讨论】:

【参考方案1】:

必须托管 WCF 服务库才能使用 - 您可以将其托管在 IIS、Windows 服务或某些自托管选项(如控制台应用程序、WinForm、WPF 等)中。

在您提供的最后两个链接中,它们演示了如何在 ASP.NET 服务应用程序中托管库,但您没有必须使用该项目模板来托管它。这只是多种选择中的一种。

您可以在不使用 VS 项目模板的情况下创建类库的 IIS 托管实现,但您需要手动添加 .svc 文件和 Web.config。我已经这样做了好几次了:

    创建一个文件夹(我通常把我的放在inetpubwwwroot 文件夹中,但你可以把它放在任何你想要的地方)。 在您在步骤 1 中创建的文件夹中创建一个bin 文件夹,并将 WCF 服务库和任何其他所需的程序集放入其中。 在步骤 1 中创建的文件夹中添加一个带有适当标记的 .svc 文件。 在步骤 1 中创建的文件夹中添加具有适当服务模型配置的 Web.config。 在 IIS 中创建一个指向您创建的文件夹的应用程序。

现在您拥有了一个由 IIS 托管的服务实例。然后,您可以为您的 Windows 服务托管实例使用 WCF 服务库的另一个副本。

【讨论】:

哇!谢谢蒂姆!你在 15 小时前回答了这个问题。我想知道为什么我没有看到它。也许我没有刷新。谢谢你回答了我的问题。基本上,因为它是一个图书馆,所以就是这样。我需要做更多才能能够托管它。我将保存这些说明以备将来使用。 这就是我一直在寻找的!上帝保佑你奉耶稣的名!

以上是关于结合 WCF 服务库和 WCF 服务应用程序的主要内容,如果未能解决你的问题,请参考以下文章

WCF服务库和WCF服务应用程序之间的区别[重复]

将 Azure 服务总线队列与 WCF 结合使用的优势

如何结合调试 Azure 应用服务和 IIS 托管的 WCF?

一个WCF服务中的更改应更新相同WCF服务的其他实例中的相同更改

何时应在 WCF 服务中使用 OperationContextScope?

如果我要在 IIS 中托管 WCF 服务,使用 WCF 服务而不是 WCF 库有啥好处?