WCF服务库的目的是什么? 我了解如果您构建一个IIS托管服务,您创建一个Web项目,如果自托管 - 创建一个.exe。
将WCF用作DLL的现实生活场景是什么?
答案 0 :(得分:36)
虽然将WCF服务作为类库创建可以提供更大的灵活性,但这种灵活性需要付出代价,而且假设更灵活的解决方案始终是首选解决方案或灵活性较低的解决方案是错误的幼稚或仅适合“简单的教学目的”。
绝大多数WCF服务都作为Web服务托管,永远不会以任何其他方式部署。
使用WCF服务应用程序而不是WCF类库有以下三个优点:
如果您将Web服务创建为类库,配置文件将是app.config文件而不是web.config文件。 App.config文件本身不支持多个配置文件,并且配置转换web.config文件的方式。如果您想在app.config文件上进行配置转换,则必须使用第三方解决方案,例如Slow Cheetah。
当发布您的网站时,如果您使用WCF服务应用程序,您可以充分利用Web Deploy(http://www.iis.net/downloads/microsoft/web-deploy),这是将解决方案发布到IIS的强大而灵活的方法。
如果您决定自动构建和部署以便与TFS持续集成,那么您将需要自动发布服务。如果您使用WCF服务,则可以配置TFS以运行Web Deploy,它将根据目标构建配置合并您的web.config文件,执行增量发布,在服务器上启用没有管理员权限的发布以及其他好处。如果您使用WCF类库,则必须编写自定义工作流解决方案以合并app.config文件,使用xCopy进行部署,并且通常需要更加艰难的时间来自动部署。
总之,通常情况下,更灵活的解决方案是以失去特定工具支持为代价的。如果像大多数WCF服务解决方案一样,您的应用程序将始终托管在IIS中,您可以考虑通过使用WCF服务应用程序而不是WCF类库来利用此支持。
答案 1 :(得分:19)
我总是创建一个WCF库作为类库 - 它更容易使用。您可以完全灵活地在IIS中托管您的WCF服务(通过在其中提供虚拟目录和.svc文件),或者您可以编写自己的自托管EXE并从中引用类库中的WCF服务。
将WCF服务直接放入Web项目似乎是一个非常糟糕的主意,可能只对非常简单的教学目的有用 - 只是为了展示如何开始。我永远不会为“现场”系统这样做。
马克
答案 2 :(得分:9)
“WCF服务应用程序”本身就是一个 直接的Web服务应用程序依赖 关于WCF技术(类似于 ASP.NET Web服务开发)。 另一方面是“WCF服务库” hand是一个可以编译的组件 被部署为Web服务或 Windows服务甚至作为一部分 定制主机应用程序。
- Developing a WCF Service Library and Hosting it as a WCF Web Service