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

时间:2013-11-13 03:18:12

标签: c# wcf iis service

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

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

我读到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 个答案:

答案 0 :(得分:8)

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

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

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

  1. 创建一个文件夹(我通常把它放在wwwroot的{​​{1}}文件夹中,但你可以把它放在任何你想要的地方。
  2. 在您在步骤1中创建的文件夹中创建一个inetpub文件夹,并将WCF服务库和任何其他必需的程序集放入其中。
  3. 在步骤1中创建的文件夹中添加带有相应标记的.svc文件。
  4. 在步骤1中创建的文件夹中添加具有相应服务模型配置的Web.config。
  5. 在IIS中创建指向您创建的文件夹的应用程序。
  6. 现在您有一个IIS托管的服务实例。然后,您可以为Windows服务托管实例使用WCF服务库的另一个副本。