ってことで、仕事なんですが。
やっと開発案件なのですが。
.NET なのですが。
複数プロセスで連携とかやる羽目に陥っちゃうわけですよ。
ぶっちゃけ、なんでか分からんのですけどね。
マルチスレッドでえぇやん。ってのは本音。
で、プロセス間連携に、WCFを使うことを思い立つわけ。
主に名前付きパイプで実装してみるところまではできるんだけど、落とし穴がでかい。
ま、俺もよく知ってるわけじゃないから、認識を誤ってることがある可能性は否定できないのだが・・・
1. WCFで公開するメソッドの実装クラスはシングルトン化
→マルチクライアントなら必須。
でもね、これ、困ったことに、privateなコンストラクタが呼ばれちゃうんですよね。勝手に。
よって、シングルトンインスタンスを生成するのは、引数付きコンストラクタにして、引数無しをダミーで用意するという技を使うことに。キモイ。
2. 双方向のバインドは、クライアント側のインターフェース使うときに、クライアントが切れててもエラーにならん
→ってことは、インタフェース使って呼び出した処理が有効だったかどうかが判断できないということ。
なので、本当に、双方向の通信をしたければ、片方向を双方接続する必要がある。
3. IsOneWay=trueにしても処理待ちしてる
→これには参った。呼び出しメソッドの中で長い処理したら、タイムアウト例外発生ですよ。
待たないはずなのに、待つってどういうことよ?
これは、バインドのTransferModeをStreamedRequestにしたら、何とか解決。
即解放されるっぽい動きを見せたので、とりあえずよし。
4. WCFを知ってる人がいない
→エー・・・と、かくいう俺もスクラッチで書いたことなかったので人のこと言えない。
で、今まさにプロセス同士が会話できはじめてきてるところ。
でも、開発だから楽しくて仕方ない。
コメントしちゃいなよ