COM+とは、リモートマシンのコンポーネント(サブルーチンとか機能)を呼ぶためものです。
アプリケーション サーバーのパーティションとは、このコンポートネントを起動するにあたり、ユーザーかOUごとに同じコンポーネントの違うバージョンを呼び出すことができる機能です。たとえば、Project2.Class1という名前のコンポーネントを呼び出したとき、ユーザーAでは”あ”、ユーザーBでは”い”という結果を変えさせることができます。
この機能は、基本的には、各アプリケーションサーバーで設定するもの名です。しかし、サーバーごとで設定していると管理が大変なのでActive Directoryで集中管理することができます。
各サーバーのパーティションをパーティションセットにまとめ、それをユーザーごとかOUごとに割り当てることができます(OUの設定が意味無いということはありません)
具体的な使い方は以下のような感じです。
例:(昼休みに久しぶりにやってみました^^;)
1、アプリケーションサーバーに「ベースアプリケーション パーティション」に加えて「テスト パーティション」を追加
2、Active Directory上に2つのパーティションを作成する。
3、Active Directory上に作成したパーティションのIDをアプリケーションサーバーに作成したパーティションIDに変更して、Active Directoryで各アプリケーションサーバーを管理できるようにする。
4、アプリケーションサーバーの2つのパーティションにバージョンの違うおなじコンポーネントを登録する
5、Active Directory ユーザーとコンピュータからOUに対して実行したいバージョンのアプリケーションセットを指定
アプリケーションセットを切りかえると、違う結果が返ってくることが確認できます。
アプリケーションセットA or <なし>:Baseパーティション
アプリケーションセットB:別パーティション
【ご参考】
@ITハイブックス:Windows Server 2003 Webアプリケーションサーバ構築
http://hybooks.atmarkit.co.jp/hybooks/2003/win03apl/ch07/070203.html
「Active Directory 内の COM+ パーティション セットを管理する」
http://technet.microsoft.com/ja-jp/library/cc781751(WS.10).aspx
【おまけ】
作成したCOMコンポーネント(VB6)
Project2.Class1 (ファイル名:Project2.DLL):コメントアウトして、2つのバージョンで結果を変えているだけの超安直なサンプル
※2つもバージョンは、別フォルダに登録してコンポーネントサービスのスナップインから登録してください。
Public Function Test() As String
Test = "別パーティション"
'Test = "Baseパーティション"
End Function
呼び出し例(VB6)
Project1.exe:呼び出してテキストボックスに放り込むだけのやる気満々過ぎるサンプル
Private Sub Command1_Click()
Dim obj As Object
Set obj = CreateObject("Project2.Class1")
Text1.Text = obj.Test
Set obj = Nothing
End Sub