サービスの概要

公開日: 2007 年 12 月 2 日 (作業者: walterov (英語))

更新日: 2008 年 3 月 13 日 (作業者: walterov (英語))

はじめに

ホスティング サービスのサンプルは、C# で実装されたサービス群で、ホスティングのプロビジョニング/管理システムの開発/統合を担当する Web ホスティング事業者内の開発者を支援するために提供しているものです。

このサンプルの目的は、そのような機能を実装するための Windows Server® 2008 プラットフォームの利用法を、サンプル コードとドキュメントを通して示すことです。これらのサービスは、IIS 7 テクノロジーの早期導入プログラム (TAP) の一部として開発されました。マイクロソフトは、20 以上のホスティング事業者と連携し、Windows Server 2008 や SQL 2005 用のサービスの開発を支援しました。ホスティング事業者は、これらのサンプル サービスを利用することによって、短期間のうちに理解を深めています。

コンポーネント

このサンプルには、3 つの主なコンポーネントがあります。その各々が、対応する Visual Studio 2008 のプロジェクトを有しています。

  1. **Windows サービスに基づくホスト。**プロビジョニング管理のためのコントラクト、Web サイトや FTP サイト管理のためのコントラクト、コンテンツ ストレージ、Active Directory、そして SQL Server リソースが含まれます。これらのサービスは、Windows サービスでホストされます。これは、IIS 7 がインストールされていない構成を管理する場合や、ホスティング サービスを Web 上で実行するのが望ましくない場合に役立ちます。
  2. **Web サービスに基づくホスト。**Windows サービスに基づくホストの場合と同じ機能が含まれます。唯一の違いは、サービスは Windows サービスに基づくアプリケーションの代わりに、Windows Web サービスにホストされるということです。
  3. **サンプル クライアント。**これは、各サービスについてコントラクトの呼び出しをするシンプルな Web アプリケーションです。その目的は、サービスの用途を説明することです。

メモ: これは、サンプル アプリケーションであり、運用環境で使用すべきではありません。学習目的のためだけに提供されています。

この記事では、次のような点を取り上げます。

  • サービスの使用にあたって
  • ホスティング環境
  • ホスティング事業者のための管理サービス
  • サンプル サービスのアーキテクチャ

サービスの使用にあたって

ホスティング サービスのコード サンプルは、2 つの異なるシナリオで展開されました。1 つは IIS 7 を使用するシナリオ、もう 1 つは Windows サービスを使用するシナリオです。

IIS 7

Windows Server® 2008 と IIS 7 において、Windows Communication Foundation (WCF) サービスは、ホストされた Web サイトとして展開されます。これにより、次のような機能を利用することができます。

  • プロセスのリサイクル
  • アイドル シャットダウン
  • プロセスの状態監視
  • メッセージ ベースのアクティブ化

ホスティングの拡張には、ファイル システム上でのディレクトリの作成、データベースの作成、新規ユーザーの追加などの操作を実行するために高度な権限が求められます。そのため、このサイトのアプリケーション プールは、管理者権限の ID を必要とします。インストール パッケージ (HostServiceInstaller.msi) は、この展開を自動化しました。

Windows サービス

2 番目のシナリオでは、実行するサービスを Windows サービスとして展開します。この展開によって、IIS を使用していないサーバー上でサービスがホストされるようになります。また、WCF サービスが ServiceBase クラスから継承し、OnStart (ServiceHost のインスタンスを作成して開くこと) と OnStop (ServiceHost のインスタンスを閉じること) を実装するために、追加のコードの作成も必要になります。インストール パッケージ (HostingWindowsService.msi) は、この展開を自動化しました。

インストールの検証

以下の手順を使って、インストールを検証します。

    1.  次の URL を参照します。http://<hostheader>/webmanagementservice.svcインストールが成功した場合、サービスが現在ホストされていることを示す以下のページが表示されます。

Ff454011.WebMgService(ja-jp,TechNet.10).jpg

メモ: 他の機能と同様、IIS の構成を管理するには、サービスに管理者レベルの権限が必要です。したがって、Windows サービスあるいは IIS にホストされた Web サイトのアプリケーション プールを実行するためには、管理者権限のアカウントを構成する必要があります。

    2.  SolutionSetup.msi インストール パッケージで、ソリューションをダウンロードし、インストールします。Visual Studio でソリューション (IIS7GoLive.sln) を開き、ソリューション エクスプローラーで以下の構造を見つけます。

Ff454011.II7GoLiveSln(ja-jp,TechNet.10).jpg 

ホスティング環境

典型的なホスティング環境は、異種環境です。(以下を参照)ほとんどのホスティング事業者は、異種のサーバー群と個々のサーバーが果たす役割を管理するために、Web サービスを使用しています。

Ff454011.hostenv(ja-jp,TechNet.10).jpg

図 1: 異種ホスティング環境

異なるサーバー

ホスティング環境には、Windows サーバーと Linux サーバーの複数のバージョンが存在し、各々が特定のサービスや役割を提供しています。ホスティング事業者は、顧客に一貫した提供を行うために、これらのサービスをつなぎ合わせたり、統合したりします。電子メール アカウントが Linux サーバーから提供されているのに対し、Web サイトは IIS 7 サーバーによって提供されていることがよくあります (逆の場合も同様)。プロビジョニングの操作は Linux サーバーからでも管理できますが、Web サイトは Windows 上でプロビジョニングされます。提供されるサービスに関係なく、これらのサーバーを管理するホスティング事業者のニーズと制約は同じです。

加えて、ホスティング事業者は、非常に強固なファイアウォールを備えたインフラストラクチャを構築する傾向があります。マイクロソフトのスタック上で入手可能な API には、DCOM や .NET リモート処理を活用するものがあります。そのために、ホスティング事業者はファイアウォールに追加ポートを開く必要がありますが、これは理想的なソリューションではありません。

異種環境による制約、またファイアウォールやセキュリティの問題によりもたらされる制約に対処するために、ほとんどのホスティング事業者は、自らのサーバーおよびそれらの異なる役割のプロビジョニングと管理において、今や Web サービスの使用を標準化しています。

Windows プラットフォームは、Web サービスをネイティブには提供していません。それで、すべてのホスティング事業者は、各自で実装する必要があります。こうした不備とホスティング事業者のニーズに対処するために、マイクロソフトは一連のサービスを作成しました。この一連のサービスとは、ホスティング事業者のための管理サービスです。それは、管理 API への "ホスティングの拡張" として扱われます。

ホスティング事業者のための管理サービス

このサンプルは、一連の低レベル サービスで成り立っています。それらは、ホスティング スペース内で使用される最も一般的なサーバーの役割のいくつかに関する機能を提供します。それらのサービスのサブシステムは、以下のとおりです。

  • Web
  • FTP
  • コンテンツ ストレージ
  • SQL Server 2005 (および 2008)
  • Active Directory

これらに加えて、サンプルは DNS、WSS、そして電子メール (Exchange または SMTP/PoP3) をサポートするように拡張することができます。

インターフェイスと操作

各サブシステムに対するすべての操作は、3 つのインターフェイスに分類されます。

  • プロビジョニング
  • 管理
  • クエリ

これらの操作は、運用ツールと、エンド ユーザーが使用するコントロール パネル タイプのアプリケーションの両方に実行が必要なタスクを実行します。

プロビジョニングの操作は、サイト、ユーザー、データベースなどの作成を主に処理します。これらは、ホスティング事業者がエンド ユーザーの環境を作成するために、最初に実行する操作です。それぞれの作成ごとに、対応する削除があります。

オブジェクトが作成されたら、管理操作はオブジェクトを維持する機能を提供します。たとえば、Web サイトを停止あるいは再起動したり、既定のドキュメントや追加のバインドをサイトに適用したりする機能があります。さらに、サイト認証を追加あるいは変更することもできます。これらの操作を行うユーザーは、自分のサイトを管理するエンド ユーザーか、特定のプロパティを適用するホスティング事業者のサポート部門のどちらかです。

クエリの操作は、各サブシステムに固有の情報を表示します。ホスティング事業者のサポート部門は、サーバーの利用状況を監視し、サイトの現状に関する情報を収集するために、これらの操作でサービスを呼び出すことがあります。

サンプル サービスのアーキテクチャ

サンプルは、Windows Communication Framework (WCF) のサービスとして実装されます。それから、WSHttpBinding を使用して、Web サービスとして顧客に公開されます。以下は、アーキテクチャの略図です。

Ff454011.arch(ja-jp,TechNet.10).jpg

図 1: ホスティング サービス サンプルのアーキテクチャ

この図の中で、フレームワークの一貫性に注目してください。すべてのサブシステムは、同じコントラクトと操作のパターンで開発されました。このフレームワークは、将来のサブシステムでも実行可能です。

ホスティングのサブシステム

サンプルでは、以下のサブシステムが提供されます。

1.     Web サービス - このサブシステムは、IIS 7 による Web サイトのプロビジョニング、管理、そしてクエリのためのものです。基本的なサイト作成だけでなく、サイトの管理やクエリ、アプリケーション プール、既定のドキュメント、バインド、認証などの機能が追加されました。このサブシステムの目的は、IIS マネージャーに存在するすべての機能に対して Web サービスを作成することです。このサブシステムのデータ コントラクトは、c:\windows\system32\inetsrv\config にある IIS 7 の XML スキーマに基づいています。サービスは、Microsoft.Web.Administration の API を使用して作成されています。

2.     FTP サービス - このサブシステムは、Windows Server® 2008 と IIS 7 上でのみ動作する新しい FTP 7 Server のために構築されました。FTP7 Server のアドオンは、無料でダウンロードできます。新しい FTP では、共有ホスティングのシナリオにおける機能が改善されています。たとえば、FTP バインドが Web サイトに追加できるので、同じコンテンツが両方のサイトでホスト可能になります。Web 用のサブシステムと同じく、このサブシステムのデータ コントラクトも、構成ファイルのスキーマに基づいています。

3.     コンテンツ ストレージ サービス - このサブシステムは、エンド ユーザーが必要とするストレージのプロビジョニング、管理、そしてクエリのためのものです。これは、サイト作成とユーザーがサイト保存用に持つストレージの管理と関連して使用されます。ディレクトリ レベルおよびファイル レベルの両方で、クォータの設定、またアクセス許可やセキュリティの適用が可能です。

4.     Active Directory サービス - このサブシステムは、Active Directory のメンバーシップ ストアのプロビジョニング、管理、そしてクエリのためのものです。このサブシステムは顧客が、組織単位、その組織単位内のグループ、そしてグループに追加するユーザーを作成しようとするような状況で使用されます。

5.     SQL サービス - このサブシステムは、SQL Server Database のプロビジョニング、管理、そしてクエリのためのものです。これは顧客が、データベースを必要とするアプリケーションを開発する状況で使用されます。データベースの作成、ストアド プロシージャを作成するためのスクリプトの実行、テーブルの作成、テーブルへのデータ入力が必要です。