【问题标题】:What is the purpose of WCF Service Library?WCF 服务库的目的是什么?
【发布时间】:2009-09-14 18:08:31
【问题描述】:

WCF 服务库的用途是什么? 我了解,如果您构建 IIS 托管服务,您将创建一个 Web 项目,如果是自托管 - 创建一个 .exe。

将 WCF 用作 DLL 的真实场景是什么?

【问题讨论】:

    标签: .net wcf


    【解决方案1】:

    虽然将 WCF 服务创建为类库确实为您提供了更大的灵活性,但这种灵活性是有代价的,并且假设更灵活的解决方案始终是首选解决方案或不太灵活的解决方案是错误的幼稚或仅适用于“简单的教学目的”。

    绝大多数 WCF 服务都作为 Web 服务托管,永远不会以任何其他方式部署。

    以下是使用 WCF 服务应用程序相对于 WCF 类库的三个优点:

    1. 如果您将 Web 服务创建为类库,则配置文件将是 app.config 文件而不是 web.config 文件。 App.config 文件本身并不支持多个配置文件,并且 config 会像 web.config 文件那样进行转换。如果您想对您的 app.config 文件进行配置转换,您必须使用第三方解决方案,例如 Slow Cheetah。

    2. 当需要发布您的站点时,如果您使用 WCF 服务应用程序,您可以充分利用 Web Deploy (http://www.iis.net/downloads/microsoft/web-deploy),它是一种将解决方案发布到 IIS 的强大而灵活的方式。

    3. 如果您决定自动化构建和部署以实现与 TFS 的持续集成,那么您一定会想要自动化发布您的服务。如果您使用 WCF 服务,您可以配置 TFS 以运行 Web Deploy,它将根据目标构建配置合并您的 web.config 文件,执行增量发布,在服务器上启用无需管理员权限的发布以及其他好处。如果您使用 WCF 类库,那么您将不得不编写自定义工作流解决方案来合并 app.config 文件,使用 xCopy 进行部署,并且通常很难实现自动化部署。

    总而言之,更灵活的解决方案通常是以失去特定工具支持为代价的。如果像大多数 WCF 服务解决方案一样,您的应用程序将始终托管在 IIS 中,您可以考虑通过使用 WCF 服务应用程序而不是 WCF 类库来利用此支持。

    【讨论】:

    • 我们遇到了这个exact问题。很好的答案!
    • 当我们从 VS IDe 中选择 wcf 服务库项目模板时,没有 svc 文件,只有一个 dll 创建。所以我想知道我们是否可以在没有 svc 文件的情况下将该 dll 托管到 iis 中。请告诉我。谢谢
    • #1 部分不正确。一个类库可能会创建一个 app.config,但它不会被使用。引用/托管类库的应用程序将拥有自己的 web/app.config,这是实际使用的。您可以通过手动生成 .svc 文件或使用无文件激活在 IIS 中托管 WCF 服务库,在这种情况下,您将使用 web.config 而不是 app.config。
    【解决方案2】:

    我会总是将 WCF 库创建为类库 - 它更易于使用。然后,您可以完全灵活地在 IIS 中托管 WCF 服务(通过在其中提供虚拟目录和 .svc 文件),或者您可以编写自己的自托管 EXE 并从中引用类库中的 WCF 服务。

    将 WCF 服务直接放入 Web 项目似乎是一个非常糟糕的主意,并且可能仅对非常简单的教学目的有用 - 只是为了说明如何开始。我永远不会为“实时”系统这样做。

    马克

    【讨论】:

    • 当我们从 VS IDe 中选择 wcf 服务库项目模板时,没有 svc 文件,只有一个 dll 创建。所以我想知道我们是否可以在没有 svc 文件的情况下将该 dll 托管到 iis 中。请告诉我。谢谢
    • @Thomas:Marc 明确表示您需要提供 .svc 文件,但 .svc 文件可以在一个项目中,并且在标记中引用另一个项目(WCF 服务库)中的类。在 .NET 4 中,您可以在 .NET 4 中使用无文件激活:“更简单的方法是在 Web.config 中定义虚拟激活端点,从而完全不需要 .svc 文件”(msdn.microsoft.com/en-us/library/ee354381.aspx)。
    【解决方案3】:

    “WCF 服务应用程序”本身就是一个 直接 Web 服务应用程序依赖 关于 WCF 技术(类似于 ASP.NET Web 服务开发)。 另一个是“WCF 服务库” hand 是一个编译的组件,它可以 部署为 Web 服务或 Windows 服务,甚至作为 Windows 服务的一部分 定制的托管应用程序。

    - Developing a WCF Service Library and Hosting it as a WCF Web Service

    【讨论】:

    • 好的,如果 WCF 服务库可以部署到 IIS(感谢您提供链接),我为什么要创建一个 WCF 作为 Web 项目?听起来服务库是一个更好的选择。您什么时候使用它们?
    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2023-03-19
    • 1970-01-01
    • 2016-11-19
    • 2012-08-10
    • 2010-10-11
    相关资源
    最近更新 更多