服务契约
要求:只有接口(或者类)可以被标记为ServiceContract特性,从而被定义为WCF服务,其他类型都不允许。
ServiceContract 特性可以将一个CLR映射为与技术无关的服务契约。
OperationContract特性可以将契约方法暴露为逻辑操作,使其成为服务契约的一部分。
WCF只能使用默认构造函数
◆应尽量避免将ServiceContract特性直接应用到服务类上,而应该定义一个单独的契约,这有利于在不同场景下使用契约。
托管
WCF服务类不能凭空存在。每个WCF服务都必须托管(host)在Windows进程中,该进程被称为宿主进程。宿主可以由Internet信息服务(IIS)提供,也可以由Vista或windows server2008或其他的提供。
IIS 5/6托管
在微软的IIS Web服务器中托管服务,主要的优势是宿主进程可以在客户端提交第一次请求的时候自动启动,还可以借助IIS 5/6管理宿主进程的生命周期。缺点:只能使用HTTP协议,如果IIS 5,则还要受端口所限,要求所有服务必须使用相同的端口号。
自托管????
开发者提供和管理宿主进程的生命周期。
适用场景:需要确定客户端与服务之间的进程边界;使用进程内托管(服务于客户端驻留在相同的进程中)。
当使用VS2008时,添加的WCF Service 选项,对宿主进程而言属于进程内托管方式,但进程外的客户端仍然可以访问它。