WCF学习笔记(二)WCF基础

托管(Hosting)

WCF服务不能凭空存在。每个WFC服务都必须托管在Windows进程中,该进程称为宿主进程(host process)。

  • IIS5/6托管

在微软的IISweb服务中托管服务的主要优势是宿主进程可以在客户端第一次请求时自动启发,还可以借助IIS5/6管理宿主进程的生命周期。

缺点是:只能够使用http协议,如果是IIS 5 ,要求所有服务必须使用相同的端口号。

  • 自托管

自托管是由开发者提供和管理宿主进程的生命周期的一种方式。当客户端与服务之间的进程有明确边界时,使用自托管;

当服务与客户端处于相同的进程时,使用进程内托管。

使用自托管,服务进程必须在客户端调用服务之前启动。

与IIS5/6不同的是,自托管服务可以使用任意的传输协议,而且能够使用WCF的高级特性。

与IIS5/6相同的是,托管应用程序配置文件(app.config)通常会列出所有希望托管和公开的服务类型。

创建ServiceHost对象时,需要为ServiceHost的构造函数提供服务类型,可选默认的基地址。可以将基地址集合设置为空,如果提供了多个基地址,也可以将服务配置为使用不同的基地址。

每个ServiceHost实例都与特定的服务类型相关,如果宿主进程需要运行多个服务类型,则必须创建多个ServiceHost实例。

  • WAS托管

IIS5/6是个web服务器,而不是托管引擎。因此,它需要你将服务包装成一个网站。

微软推出了一个通用的托管引擎,Window 激活服务,简称WAS。WAS,可以托管网站,可以方便托管服务,允许使用任何传输协议,可以单独安装和配置WAS,不需要和IIS7一起使用。

从设计的角度考虑,WAS里托管WCF服务于IIS5/6中托管是一样的,需要提供.svc文件,或者在配置文件里提供等价的信息。因为WAS属于系统服务,所以不需要提前启动宿主进程。当第一个调用到达时,

WAS会拦截这个消息,启动一个工作进程来托管服务,然后把调用的消息转发过去。

原文地址:https://www.cnblogs.com/HelloMyWorld/p/3049200.html