RealProxyまとめ

属性クラスの理解が何となくできたところで、 ProxyAttributeを実装しようとしたところ、 RealProxyで思いっきりつまずいた。 ボヤいてたらTLに情報があふれてきたので 続きを読む
4
ヒロ @cz75hiro

RealProxyわけわかんねぇ…GetTransparentProxyで取得したオブジェクトがなんでプロキシに突っ込んだ型でキャストできるんだ。なんでキャストしたオブジェクトのメソッドを実行したらGetTransparentProxy.Invokeがコールされるんだ。こえー

2010-09-02 03:54:56
ヒロ @cz75hiro

IMessageか・・・なんぞこれ

2010-09-02 03:59:19
ヒロ @cz75hiro

MarshalByRefObjectってなんだー!俺はいったい何を調べてるんだ

2010-09-02 04:09:17
たけしけー @takeshik

@cz75hiro RealProxy とはまた面白そうなネタをw

2010-09-02 14:41:16
ヒロ @cz75hiro

@takeshik 属性クラスでロガー実装うめぇと思ってたら、ハードルが高かったです。AOPェ…

2010-09-02 16:31:40
ヒロ @cz75hiro

これが答えか? カスタム属性とRealProxy - http://d.hatena.ne.jp/akiramei/20040328

2010-09-02 16:33:00
たけしけー @takeshik

@cz75hiro パフォーマンス上の問題が気になるかもしれませんね…RealProxy で値域制限ってのはすっかり忘れてました

2010-09-02 16:42:15
たけしけー @takeshik

@cz75hiro 普通に RealProxy 継承して、Invoke でメソッド呼び出しメッセージをフックして、そこでカスタム属性読んで処理する、とかですかね

2010-09-02 16:43:43
たけしけー @takeshik

RealProxy とかは半端な知識しか持ってないからしっかりやるかなー

2010-09-02 16:54:14
尾上 雅則 @ugaya40

@cz75hiro 初めまして。RealProxyなログ昔よく作りました。古い実装ですが、参考になるようでしたらどうぞ。http://d.hatena.ne.jp/ugaya40/20090721/1248087652

2010-09-02 17:27:12
ヒロ @cz75hiro

@ugaya40 はじめまして!RealProxyなかなか理解しにくくて苦労してますが、参考にさせてもらいます!ありがとうございます

2010-09-02 18:13:16
たけしけー @takeshik

ちょっとプロキシ周りというかメッセージパッシング周り探索してみるかな

2010-09-02 21:41:49
たけしけー @takeshik

ProxyAttribute はオブジェクトの生成時にプロキシを経由することを強制するんだったかな。これって .NET Remoting の Marshal されたオブジェクトを受け取るときに Activator.CreateInstance`1() だけでいいのと関係あるのかな

2010-09-02 21:51:48
尾上 雅則 @ugaya40

@takeshik newするオブジェクトがContextBoundObjectを継承している場合のみ、ProxyAttribute経由。RemotingじゃContexBoundObjectを使っていない気がしたからおそらくアスペクト指向用に拡張されたのかと。

2010-09-02 21:55:36
たけしけー @takeshik

@ugaya40 あー、なるほど、ContextBoundObject の子孫だけがコンストラクタのメッセージをハンドルできるんでしたっけ。

2010-09-02 21:56:26
尾上 雅則 @ugaya40

@takeshik 正直COMに疎くて、ContextBoundObjectの動きがわかってないですがおそらくそうです。.net1.x系時代の自動トランザクションもContextBoundObjectを継承したもの経由だからあいつはなんかありますね。

2010-09-02 22:02:36
ヒロ @cz75hiro

メッセージというものがよくわからない

2010-09-02 22:02:54
尾上 雅則 @ugaya40

@takeshik ContextBoundObject/自動トランザクションについては勉強会に参加したら誰かに質問予定ですw

2010-09-02 22:03:57
たけしけー @takeshik

@cz75hiro 単なるメソッドの入出力の観点の一つ、でいいのではw

2010-09-02 22:04:23
たけしけー @takeshik

さらりと IntPtr とか出てきてなんぞこれ。

2010-09-02 22:06:08
ヒロ @cz75hiro

@takeshik よくわかってないですけど、外部からフックする際にメッセージを受け取れたら何かできるんだと解釈しときます。

2010-09-02 22:08:50
たけしけー @takeshik

@cz75hiro んー、な-んか違うようなw

2010-09-02 22:09:21
たけしけー @takeshik

このメッセージを適当に読めば *外の世界* に出ることもできそうだな…

2010-09-02 22:11:31
尾上 雅則 @ugaya40

@cz75hiro 大まかに知っている事を少し勝手にしゃべりますね。MarshalByRefObjectは、外部コンテキストから参照した時に、値のコピーとしてではなく、参照のコピーを見せる特殊なオブジェクトです。

2010-09-02 22:14:47
1 ・・ 5 次へ