これまで、WSSとMOSSの機能概要について説明してきた。ここからは、それらがどのような仕組みで動作しているのか、SharePointの内部アーキテクチャについて見ていこう。内部メカニズムを知ることは、SharePointのシステム構成を検討する上でも必要である。
比較のために、まずはIISなどで構築した通常のWebサーバの動作を考えてみよう。
通常のWebサーバは、クライアントからのHTTPリクエストを受信すると、リクエストで指定されたURLにマッピングされているHTMLファイルを読み込み、そのHTMLデータをHTTPレスポンスとしてクライアントに返す(静的なWebページの場合)。クライアントは、送られてきたHTMLデータを解釈し、ブラウザ・ウィンドウに表示する。
またWebアプリケーション(ASPXなど)のように、サーバ側で動的にHTMLデータを生成するアプリケーションの場合は、サーバ側でWebアプリケーションの処理を実行し、結果として生成されたHTMLデータをHTTPレスポンスとしてクライアントに返す。
これに対しSharePointでは、Webサーバのファイル・システムではなく、SQL Serverデータベースからページの属性やデータを取得する点が異なる。
SharePointは、IISを通じてHTTPリクエストを受信すると、まずHTTPリクエストを解析し、SQL Server上の構成データベースに問い合わせて必要なページの属性を取得する。その後コンテンツ管理DBからページ内のコンテンツ情報を取り出し、動的にHTMLを生成する。
一般論だけでは分かりにくいので、実際にSharePoint内部で使われているコンポーネントを除いてみよう。
以下は、SharePointサイトを構成したIISのサイト構成をIIS管理コンソールで表示したところだ。ちなみに、SharePointサイトを構成した場合は、IIS Webアプリケーションや仮想ディレクトリの設定はSharePointに付属する管理ツールで行うため、通常のIIS管理コンソールは使用しない。今回は、SharePointの内部動作を理解するために、あえてIIS管理コンソール上の情報を示している。
このように、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のコンポーネントはどこで動作しているのだろうか?
その答えは、IIS Webアプリケーションにマップされたフォルダの“web.config”ファイルの中に隠されている。SharePointのWebアプリケーションは、デフォルトでC:\inetpub\wwwroot\wss\VirtualDirectories\<ポート番号>のフォルダにマップされる。このフォルにあるweb.configを確認してみると次のようになっている。
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ハンドラが使用されるようになった。
次に、SharePointを構成したSQL Serverをのぞいてみよう。SharePointを既定の構成でインストールした場合、SQL Server 2005 Express Editionがインストールされ、.\OFFICESERVERSというSQL Serverインスタンスが自動で作成され、構成管理DBなどはそのインスタンス上に作成される。
構成管理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© Digital Advantage Corp. All Rights Reserved.