WCF开发工具的应用在一定程度上给开发人员带来了非常大的好处。在这里我们将会针对WCF宿主模式的相关概念进行一个详细的介绍。WCF宿主模式比较灵活,我们可以依据服务的使用目的从多种宿主中选择一个最适合的。#t#
可用的WCF宿主模式包括:
"Self-Hosting" in a Managed Application: 也就是 Console Application 或者 WinForm Application。我们在前面的章节都是使用这种模式进行演示。它的好处是简单、部署方便,但缺乏相关环境支持,不适合用于企业级服务部署。
Managed Windows Services: 可以随着操作系统自动启动,受服务权限限制,安全性要比上一种好些。
Internet Information Services (IIS): 和 Web Services 的部署方式类似,由请求消息来激活服务,还可以使用 IIS 提供的 Process recycling、Idle shutdown、Process health monitoring 等功能。缺点是只能使用 Http Binding。
Windows Process Activation Service (WAS): 这个宿主只有 Windows Vista 和 Microsoft Windows Server(Longhorn) 才提供,它是 IIS7 的一部分。这应该是所有WCF宿主模式中最适合企业级部署应用的。除了 IIS 所提供的那些功能外,最关键的是它支持几乎所有的通讯协议。
"Managed Application" 和 "Windows Services" 部署方式非常类似,本文不再详述。以下介绍一下 IIS 部署的步骤。
1. 安装完 VS Extension 后,我们可以创建一个 WCF service 的网站项目。
2. 添加一个 WCF service 新项,系统自动会创建 Service.svc、App_Code\Service.cs 等必要文件。
3. 在 Service.cs 文件中完成服务编码。
4. 添加 web.config 文件,并在其位置单击鼠标右键,打开 "Microsoft Service Configuration Editor" 工具完成服务配置。
5. 注意添加 serviceMetadata,否则我们使用浏览器无法查看,也无法创建客户端代理。
web.config 演示 (注意配置文件中并没有提供服务地址)
- < ?xml version="1.0"?>
- < configuration xmlns="http://schemas.microsoft.com/
.NetConfiguration/v2.0">- < system.serviceModel>
- < services>
- < service behaviorConfiguration="MyServiceTypeBehaviors"
name="MyService">- < endpoint binding="wsHttpBinding" contract="IMyService"/>
- < /service>
- < /services>
- < behaviors>
- < serviceBehaviors>
- < behavior name="MyServiceTypeBehaviors">
- < serviceMetadata httpGetEnabled="true"/>
- < serviceDebug includeExceptionDetailInFaults="true"/>
- < /behavior>
- < /serviceBehaviors>
- < /behaviors>
- < /system.serviceModel>
- < system.web>
- < compilation debug="true">
- < /system.web>
- < /configuration>
service.svc
- < %@ ServiceHost Language="C#" Debug="true" Service="MyService"
CodeBehind="~/App_Code/service.cs" %>
以上就是对WCF宿主模式的相关介绍。