WCF服务的各种托管方式有哪些?

3
有哪些托管WCF服务的方法?
4个回答

4

2
在Windows服务中托管和在应用程序中托管本质上是相同的,因为Windows服务只是另一个应用程序。 - Mark Seemann
1
当然可以,但它们有足够不同的考虑因素,以至于在MSDN中明确地单独列出。实际上,我的答案正如MSDN所排列的一样。 :) - bobbymcr

1

目前为止,所有说的都是正确的。

  • IIS6仅支持HTTP协议和“按需”激活
  • IIS7 / WAS(仅适用于Vista / Server 2008及更高版本)支持所有协议和“按需”激活
  • 在控制台应用程序或Windows服务中进行自托管支持所有协议,但不支持按需激活(例如,您的服务必须一直运行,不能在请求到来时自动激活)

未提及的是.NET 4.0波将在今年晚些时候(2009年)提供的内容-有一个名为Dublin的新附加服务器组件,据说它为WCF服务和WF工作流提供了丰富和受管理的托管环境。

Marc


0

您可以将其托管在IIS应用程序中或自己的可执行文件中。通常,可执行文件将是Windows服务应用程序。


我并不一定认为在可执行文件中托管WCF服务的“典型”情况是通过Windows服务。WCF服务提供了一种跨AppDomain边界通信的替代方案,用于代替.NET Remoting。因此,WCF同样有可能被用于Windows窗体应用程序,就像它被用于Windows服务一样。 - Matt Davis
虽然你可以在WinForms应用程序中托管WCF服务,但我不确定有多少应用程序会这样做。我认为WinForms应用程序最有可能是WCF消费者,而不一定是主机。但也许我视野短浅,没有想到你所考虑的用例类别。 - Matt Wrock
举例来说,如果一个应用程序可以通过插件进行扩展,那么将这些插件加载到它们自己的AppDomain中是有意义的。一旦完成了这个过程,应用程序现在面临着跨AppDomain进行通信的桥接问题,这是WCF很容易解决的问题(.NET Remoting和从MarshalByRefObject继承也可以)。我认为在许多情况下,您的说法是正确的;我只是不知道我是否会说这是“典型的”。抱歉较真 :) - Matt Davis

0

任何 Windows 进程都可以用来 托管 WCF 服务。实际上,这方面几乎没有任何限制 - 一个进程可以托管多个 WCF 服务,同一类型的 WCF 服务也可以在多个进程中同时托管。

根据 Juval Lowy 的书籍 Programming WCF Services,以下是提供托管服务的方式:

  • Microsoft Internet Information Server (IIS)
  • 在 Windows Forms 应用程序、Windows 服务或控制台应用程序中自主托管
  • Windows Activation Service (WAS)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接