Singleton across AppDomain follow up

3/28の日記2005-03-28 - Kazzzの日記に関してNyaRuRuさんから詳細なコメントを付けて頂きましたがコメント内で続きを書くには濃い内容でしたので本日の日記はコメントへの回答から初めてみます。

以下、枠内はNyaRuRuさんからのコメントです

”AppDomain を意識した Framework の作成” と ”.NET Remoting” という 2 つの大きなテーマがあるのかと思いますが,どちらのテーマに属するトピックかもうちょい限定して頂ければそれらしい人が食いつくようなネタかもしれません.

ご指摘の通り、書く内容に関して一貫性が無い内容が多々あります。
文才が無いのが原因ですが今後はもう少しテーマを絞って書いていけるよう心がけますね。
ただ、日によっては完全な"備忘"として書いていたり思いつきを取り敢えず日記にかいとけーみたいな時もありますのでご勘弁ください。
テーマとしては

".NET2.0でのフレームワークの開発"
"サーバサイドJavaとの通信"
"AppDomainを利用したアプリケーション、アセンブリの管理"
".NET Remotingのフレームワークでの活用"
"その他津々浦々"

毎日こんな感じで書きたい内容そのものに関しては思いつくままに書いてます。

とりあえず AppDomain 間での共有でぱっと思い付くのは,AppDomain#GetData/SetData をグローバル変数的に利用する,というなんともベタな方法ですけど……そういう話ではない?

GetData/SetDataによりAppDomain間でオブジェクトを共有する、という事ではなくてあくまでOOPの"Singleton"つまりアプリケーション内でインスタンスの数が一つに限定されるオブジェクトを.NET上、それもAppDomainが複数ある中で実装する場合はRemotingを採用できるのではないか、という話です。

これはいわゆる「サーバー アクティベーション」限定の話でしょうか?

はい、その通りです。Remotingに関しての説明が足りませんでしたがAppDomainをまたがるSingletonを生成する為に.NET RemotingのサーバアクティベーションオブジェクトをSingletonモードで尚且つリース無期限で生成したオブジェクトを使用するつもりで書いてました。

RemotingServices.IsTransparentProxy とか IRemotingTypeInfo.CanCastTo とかのお話でしょうか? 

以前にasやisを使用してRemotingで生成したオブジェクトの型検査に失敗した経験を踏まえて書いているのでまだそこまで話を進めていないんです。
RemotingServicesで提供されている型やメソッドでRemoting上の型やインスタンスの有無が検査できるのであれば私が書いた
>せめてasやis演算子の振る舞いを拡張するか、又はRemotingに対応した型チェック方法を提供してくれれば良いのになぁと思う。
という文書はちょっと乱暴ですね。調べもしないで書いてしまいお恥ずかしいです。
RemotingServices.IsTransparentProxyに関してはインタフェースを実装したクラスをRemoting対応、つまりMarshalByRefObjectから継承して実装した場合は必ず"true"で戻ると記憶していましたがIRemotingTypeInfo.CanCastToがどのような結果になるのかはまだ試していませんです。