[FIM(旧ILM2)] MIIS/ILM2007 移行 : 拡張コードってそのまま動くの?
皆さんごきげんよう。ういこです。
さて、旧 ILM2 = Forefront Identity Manager 2010 (FIM) もひっそり名前が発表されてこれから盛り上がるのかなぁという感じですが、マイグレーション(MIIS2003 とか、ILM2007 とか)についての情報が気がついたらあんまり無いなぁということにさっき気がつきました。
将来的に MIIS 2003 / ILM 2007 から ILM 次期製品に移行するということを考えられているお客様もそろそろいらっしゃるのではないかと思います。このトピックではマイグレーションについての情報をご紹介しようと思います。なお、まだ FIM はリリースされていませんので、詳細については変更される可能性があります。ただし、今日ご紹介するのはその中でも基本的なよっぽど何か不幸な出来事が無い限りは大きな変更はないと思われる部分をご紹介いたします。
【今日のお題 : カスタムルール拡張のマイグレーションについて】
基本的にお客様のカスタムルール拡張はそのままの状態で動作するよう設計されていますが、影響を及ぼす可能性がある ILM 2007 からの設計変更は以下の通りです。
1. 64 bit アプリケーションになった (従来は32bit アプリケーション)
従来の ILM2007 および MIIS2003 は 32 bit アプリです。前に聞いた限りでは、x86 も出すみたいなことを言っていましたが、64 bit に開発ターゲットを絞っている様子です。近年、サーバ系アプリは、64bit にシフトする傾向が見られます。おそらく、メモリ上にあらかじめデータをキャッシュしておいて高速に動作するためってあたりが大きいのかなと思うのですが。
原則として、32bit アプリケーションは、64bit 環境でも動作します。昔の Windows 95 のころ、16bit アプリの互換用のモードがあったように、64bit Windows には、Windows 32 on Windows 64 (WOW64) と呼ばれる層があり、ここで 32 bit アプリケーションのエミュレーションが行われます。ただし、エミュレーションであるということは、実機上で動作するのとは内部動作の機構が異なるということです。アプリケーションのつくりによってはこの差異がネックになる場合もあります。こうした場合に備え、アプリケーション(FIM、ILM だと Extension)を64bit 対応にリビルドするという手段もあります。
Programming Guide for 64-bit Windows
https://msdn.microsoft.com/en-us/library/bb427430(VS.85).aspx
2. Visual Studio のバージョン
Extension の開発環境が、Visual Studio 2005 から 2008 への移行される予定です。カスタマイズした拡張コードに新たに変更を追加した場合は、Visual Studio 2008 で再コンパイルする必要があります。しかし、動作の基本となる共通言語ランタイム (CLR) は .NET Framework 2.0 になるので、カスタム拡張を行っている場合も動作が変更になる可能性は低いでしょう。.NET Framework 3.5には、.NET Framework 2.0が含まれているからです。
. NET Framework 3.5 と、.NET Framework 3.0および2.0 の関係
(ディベロッパー製品開発統括部 Blog)
https://blogs.msdn.com/dd_jpn/archive/2007/11/13/6172535.aspx
3. Microsoft.MetadirectoryServices.dll の後継 Microsoft.MetadirectoryServicesEx .dll が提供される
DLL の "Ex" バージョンの名前は厳密名です。オリジナルの Microsoft.MetadirectoryServices.dll は、すべての呼び出しをこの DLL の厳密名バージョンにリダイレクトするリダイレクタに置き換わっています。このリダイレクタは、既存のルール拡張を再コンパイルせずに動作させるためのものです。再コンパイルが必要な場合は、Microsoft.MetadirectoryServices.dll への参照を、厳密名を持つアセンブリへの参照に置き換えする必要があります。
4. Extensible MA (MA の拡張コード、XMA) について
32ビット、64ビットのいずれでも動作が可能です。32ビット接続ライブラリへの呼び出しを必要とするExtensible MA でも正しく動作できるよう、32ビット サポートを追加しています。この設定は、MA 設定のプロパティにあります。
ほとんどの XMA は、プラットフォームに依存しないようビルドされているため、32ビットでも64ビットでも問題なく動作するはずです。
なお、32ビットか64ビットかの選択ができるのは XMA のみです。MA および MV ルール拡張のホストは常に 64ビットでのホストとなります。
https://www.microsoft.com/windowsserver/ilm2/default.mspx には、ILM "2" に関する情報が多数掲載されています。まずはこれらの資料に目を通し、お使いの MA やその他のシステムで行われている処理と新しい機能を比較しながら、取り除くことのできる機能がないかを確認してみることをお奨めします。
~ ういこう@FIM おじさんがどうしても気になる ~