服务概述

服务概述

作者:沃尔特·奥利弗

介绍

托管服务示例是在 C# 中实现的一组服务,可帮助 Web 托管组织中的开发人员开发和/或集成托管预配和管理系统。

其用途是通过示例代码和文档来展示如何利用 Windows Server® 2008 平台来实现此类功能。 这些服务是早期 IIS 7.0 技术采用者计划(TAP)的一部分开发的,其中Microsoft与 20 多个宿主合作,并帮助他们在 Windows Server 2008 和 SQL 2005 上创建产品/服务。 宿主利用了这些示例服务,因为它帮助他们削减了学习曲线。

组件

示例中有三个主要组件。 每个项目都有相应的 Visual Studio 2008 项目:

基于 Windows 服务的主机。 包括用于管理预配和管理 Web 和 FTP 站点、内容存储、Active Directory 和 SQL Server 资源的合同。 服务托管在 Windows 服务中。 这对于管理未安装 IIS 7.0 或不需要在 Web 上运行托管服务的配置非常有用。

基于 Web 服务的主机。 包括与基于 Windows 服务版本的主机相同的功能。 唯一的区别是服务托管在 Windows Web 服务中,而不是基于 Windows 服务的应用程序。

示例客户端。 是一个简单的 Web 应用程序,用于调用每个服务的协定。 其用途是说明服务的用法。

注释

这是一个示例应用程序,不应在生产环境中使用。 它仅用于学习目的。

服务入门指南

托管服务代码示例已在两种不同的方案中部署。 一个是通过 IIS 7.0,另一个是通过 Windows 服务。

IIS 7.0

在 Windows Server® 2008 和 IIS 7.0 下,Windows Communication Foundation (WCF) 服务部署为托管网站。 这样,它就可以利用以下功能:

进程回收

空闲关闭

进程健康监控

基于消息的激活

由于托管扩展需要高权限来执行诸如在文件系统上创建目录、创建数据库、添加新用户等操作,因此此站点的应用程序池需要具有管理员权限的标识。 安装包(HostServiceInstaller.msi)已自动执行此部署。

Windows 服务

第二种方案部署服务以作为 Windows 服务运行。 此部署允许在未运行 IIS 的服务器上托管服务。 它还需要编写其他代码,以便 WCF 服务继承自 ServiceBase 类并实现 OnStart (创建和打开 ServiceHost 实例)和 OnStop 实例(关闭 ServiceHost 实例)。 安装包(HostingWindowsService.msi)已自动执行此部署。

验证安装

使用以下步骤验证安装。

浏览到以下 url:http://< hostheader>/webmanagementservice.svc。 如果安装成功,将显示以下页面,指示服务现已托管。

注释

必须配置具有管理员权限的帐户,以便为 IIS 托管网站运行 Windows 服务或应用程序池,因为服务需要管理员级权限来管理 IIS 配置和其他功能。

使用 SolutionSetup.msi 安装包下载并安装解决方案。 在 Visual Studio 中打开解决方案(IIS7GoLive.sln),在解决方案资源管理器中找到以下结构。

宿主环境

典型的托管环境是异类环境(如下图所示)。 大多数主机使用 Web 服务来管理不同的服务器集,以及每个服务器扮演的不同角色。

图 1:异类托管环境

不同服务器

托管环境具有多个版本的 Windows 和 Linux 服务器,每个服务器都提供特定的服务或角色。 主机商拼凑在一起或集成这些服务,为客户提供一致的产品/服务。 通常可以看到从 IIS 7.0 服务器提供服务的网站,而电子邮件帐户可能从 Linux 服务器提供(反之亦然)。 可以从 Linux 服务器管理预配操作,但网站是在 Windows 上预配的。 无论提供何种服务,托管商管理这些服务器的需求和约束都是相同的。

主机服务器也往往具有非常密集的防火墙基础结构。 在 Microsoft 技术栈上提供的一些 API 利用 DCOM 或 .NET 远程处理,这要求托管服务商在防火墙中打开额外的端口,这不是理想的解决方案。

为了解决由异类环境和防火墙/安全问题产生的约束,大多数主机商现在已标准化为使用 Web 服务来预配和管理其服务器以及不同的服务器角色。

Windows 平台不原生支持 Web 服务,因此每个主机都需要实现自己的 Web 服务。 为了解决这种缺陷和宿主的需求,Microsoft创建了一组服务。 这组服务是 托管者的管理服务,并被视为托管 API 的“托管扩展”。

托管者的管理服务

该示例由一组低级别服务组成,这些服务为托管空间中使用的一些最常见服务器角色提供功能。 服务子系统包括:

Web

FTP

内容存储

SQL Server 2005 (& 2008)

Active Directory

除了这些,还可以扩展示例以支持 DNS、WSS 和电子邮件(Exchange 或 SMTP/PoP3)。

接口和操作

针对每个子系统的所有操作都分为三个接口:

Provisioning

管理

查询

这些操作执行操作工具以及最终用户使用的控制面板类型应用程序必须执行的任务。

预配操作主要涉及创建站点、用户、数据库等。 这些操作是宿主最初可以执行的操作,以便为最终用户创建环境。 每个创建操作都有相应的删除操作。

创建对象后,管理操作将提供维护对象的功能:例如,可以停止或重启网站;默认文档和其他绑定可以应用于网站;可以添加或更改站点身份验证。 这些操作的用户可以是管理自己的站点的最终用户,也可以是应用某些属性的宿主支持部门。

查询操作查看特定于每个子系统的信息。 宿主的支持部门可能会调用这些操作中的服务来监视服务器活动或收集有关站点当前状态的信息。

示例服务体系结构

此示例作为 Windows 通信框架 (WCF) 服务实现,然后使用 WSHttpBinding 以 Web 服务的形式向客户公开。 下面是体系结构关系图:

图 1:托管服务示例体系结构

在关系图中,请注意框架的一致性。 所有子系统都使用相同的协定和操作模式进行开发。 未来的子系统可以遵循此框架。

托管子系统

此示例中提供了以下子系统:

Web 服务 - 此子系统适用于 IIS 7.0 网站预配、管理和查询。 除了基本网站创建之外,还添加了与管理和查询网站、应用程序池、默认文档、绑定、身份验证等相关的功能。 此子系统的目标是为 IIS 管理器中存在的所有功能创建 Web 服务。 此子系统的数据约定基于 IIS 7.0 XML 模式,可以在 c:\windows\system32\inetsrv\config 处找到。 服务是使用 Microsoft.Web.Administration API 编写的。

FTP 服务 - 此子系统是为仅在 Windows Server 2008 和 IIS 7.0 上运行的新 FTP7 Server® 构建的。 FTP7 服务器加载项以免费下载的形式提供。 新的 FTP 包含共享托管方案的功能改进。 例如,可以将 FTP 绑定添加到网站,以便可以在这两个网站上托管相同的内容。 与 Web 的子系统一样,此子系统的数据协定也基于配置文件架构。

内容存储服务 - 此子系统用于预配、管理和查询最终用户可能需要的存储。 这与网站创建和管理用户为站点使用的存储结合使用。 可以设置配额,并在目录和文件级别应用权限和安全性。

Active Directory 服务 - 此子系统用于预配、管理和查询 Active Directory 成员资格存储。 在客户可能想要创建组织单位、该 OU 中的组以及要添加到组的用户的情况下,将使用此方法。

SQL 服务 - 此子系统适用于 SQL Server 数据库预配、管理和查询。 这用于客户开发需要数据库的应用程序的情况。 他们需要创建数据库、运行脚本来创建存储过程、创建表以及使用数据填充表。