連載
» 2007年07月23日 00時00分 UPDATE

SharePoint Server 2007によるポータルサイト構築:第1回 SharePoint Server 2007の概要 (4/5)

[黒石高広,株式会社アークウェイ]

SharePointのシステム構成

 これまで、WSSとMOSSの機能概要について説明してきた。ここからは、それらがどのような仕組みで動作しているのか、SharePointの内部アーキテクチャについて見ていこう。内部メカニズムを知ることは、SharePointのシステム構成を検討する上でも必要である。

 比較のために、まずはIISなどで構築した通常のWebサーバの動作を考えてみよう。

wi-fig02.gif 通常のWebサーバの動作
通常のWebサーバでは、クライアント側のWebブラウザから送信されたURLに対応するHTMLファイルを読み込み、それをHTTPレスポンスとしてクライアントに返す。

 通常のWebサーバは、クライアントからのHTTPリクエストを受信すると、リクエストで指定されたURLにマッピングされているHTMLファイルを読み込み、そのHTMLデータをHTTPレスポンスとしてクライアントに返す(静的なWebページの場合)。クライアントは、送られてきたHTMLデータを解釈し、ブラウザ・ウィンドウに表示する。

 またWebアプリケーション(ASPXなど)のように、サーバ側で動的にHTMLデータを生成するアプリケーションの場合は、サーバ側でWebアプリケーションの処理を実行し、結果として生成されたHTMLデータをHTTPレスポンスとしてクライアントに返す。

 これに対しSharePointでは、Webサーバのファイル・システムではなく、SQL Serverデータベースからページの属性やデータを取得する点が異なる。

wi-fig03.gif SharePointでのHTML生成の仕組み
SharePointでは、クライアントからのHTTPリクエストを解析し、SQL Serverデータベースからページ属性やページ・データを取得する。

 SharePointは、IISを通じてHTTPリクエストを受信すると、まずHTTPリクエストを解析し、SQL Server上の構成データベースに問い合わせて必要なページの属性を取得する。その後コンテンツ管理DBからページ内のコンテンツ情報を取り出し、動的にHTMLを生成する。

 一般論だけでは分かりにくいので、実際にSharePoint内部で使われているコンポーネントを除いてみよう。

IIS Webアプリケーション

 以下は、SharePointサイトを構成したIISのサイト構成をIIS管理コンソールで表示したところだ。ちなみに、SharePointサイトを構成した場合は、IIS Webアプリケーションや仮想ディレクトリの設定はSharePointに付属する管理ツールで行うため、通常のIIS管理コンソールは使用しない。今回は、SharePointの内部動作を理解するために、あえてIIS管理コンソール上の情報を示している。

wi-portal09.gif SharePointサイトを構成したIIS
SharePointサイトを構成したIISをIIS管理コンソールで表示したところ。SharePoint用のWebアプリケーションと仮想ディレクトリが作成されていることが分かる。

 このように、SharePoint用のIIS Webアプリケーションと、仮想ディレクトリが作成されていることが確認できる。SharePoint Webサイトの中身を見ると、“controltemplates”、“_layouts”、“_vti_bin”、“_wpresources”という仮想ディレクトリがあることが確認できる。これらは“12 Hives Folder”と呼ばれ、実体はすべてC:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12の各サブ・フォルダにマッピングされている。これらはSharePointのすべてのWebアプリケーションで共通で使用され、SharePointの高度なカスタマイズを行う際に必要な定義ファイルが格納されている。SharePointのカスタマイズを検討している人は、覚えておくとよいだろう。

 しかしこれを見ただけでは、SharePoint以外の通常のIIS Webアプリケーションとの違いが分からない。SharePointのコンポーネントはどこで動作しているのだろうか?

HTTP モジュールとHTTPハンドラ

 その答えは、IIS Webアプリケーションにマップされたフォルダの“web.config”ファイルの中に隠されている。SharePointのWebアプリケーションは、デフォルトでC:\inetpub\wwwroot\wss\VirtualDirectories\<ポート番号>のフォルダにマップされる。このフォルにあるweb.configを確認してみると次のようになっている。

wi-portal10.jpg SharePointのweb.config
SharePointの実体は、このweb.configファイルをのぞいてみると分かる。このようにSharePointでは、HTTPモジュールとHTTPハンドラを使用して機能が実装されている。画面の反転表示した部分がSharePointのHTTPハンドラの記述である。

 web.configファイルの記述から分かるとおり、WSSとMOSSは、ASP.NETの基盤技術であるHTTPモジュール*4とHTTPハンドラ*5を使用して実装されている。このHTTPモジュールとHTTPハンドラが、SQL Server上の構成管理DBとコンテンツDBに接続し、動的にHTMLを生成している。これがSharePointの実体である。

*4 HTTPモジュールは、HTTP要求を処理する前後で任意の処理を差し込むことができるASP.NET拡張モジュール。IIS拡張モジュールであるISAPIフィルタと同等の仕組みである。


*5 HTTPハンドラは、ファイル拡張子やHTTP要求の動詞に対応して任意の処理を実行することができるASP.NET拡張モジュール。IIS拡張モジュールであるISAPI拡張と同等の仕組みである。


 2007以前のSharePointのバージョンでは、IISの拡張モジュールであるISAPIフィルタという技術が使用されていた。しかしISPIフィルタでは、すべてのHTTPリクエストを横取りしてしまうため、SharePointとは関係のない普通のWebアプリケーションを同じWebサーバに同居させることができないという問題があった(同居させるには、ポート番号を変えるなどの対処が必要だった)。この問題を解消し、ASP.NETの多くの機能を利用できるようにするために、今回のWSS 3.0/SharePoint Server 2007では、HTTPモジュールとHTTPハンドラが使用されるようになった。

構成データベースとコンテンツ管理DB

 次に、SharePointを構成したSQL Serverをのぞいてみよう。SharePointを既定の構成でインストールした場合、SQL Server 2005 Express Editionがインストールされ、.\OFFICESERVERSというSQL Serverインスタンスが自動で作成され、構成管理DBなどはそのインスタンス上に作成される。

wi-portal11.gif SharePointを構成したSQL Server
SharePointを構成すると、SQL Server内に.\OFFICESERVERSというインスタンスが作成される。SharePoint用の構成管理DBなどは、このインスタンス上に作成される。画面はMOSSをインストールしたもの。

 構成管理DBは、SharePoint_Config_<Guid>、コンテンツ管理DBは、WSS_Content_<Guid>の名称で作成される。前出の画面は、MOSSのSQL Serverを示しているので、構成管理DBやコンテンツ管理DB以外にも、共有サービスのDB(SharedService_DB_<Guid>)や検索DB(SharedService_Search_DB_<Guid>)などが確認できる。SharePointでは、これらのデータベースから必要な情報を取り出し、ポータル・サイトのHTMLを動的に生成している。

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。