.NetRemoting から WCF へ
ついこないだ.NetRemotingが枯れてきたと思って使ったら、すでにもうWCFも枯れてきてたというお話。
技術が普及して、ある程度日本語の解説が検索でヒットするようになってきたようなのでWCFを学んでいます。
あたりまえだけど基本的にはリモーティングと仕組みは同じですね。
同一マシン間(IPC)ならこんな感じ
リモーティング
1.(サーバ側)MarshalByRefObjectな共用クラスを準備
2.(サーバ側)IpcServerChannelを作成してChannelServices.RegisterChannelで登録
3.(サーバ側)RemotingServices.Marshalでサービスとして公開
4.(クライアント側)IpcClientChannelを作成してChannelServices.RegisterChannelで登録
5.(クライアント側)Activator.GetObjectで共用クラスを生成取得
WCF
1.(サーバ側)ServiceContractで共用クラスを準備
2.(サーバ側)ServiceHostを作成してAddServiceEndpointでNetNamedPipeBindingを指定
3.(サーバ側)Openでサービスとして公開
4.(クライアント側)ChannelFactoryを作成してNetNamedPipeBindingを指定
5.(クライアント側)CreateChannelで共用クラスを生成取得
というわけで、競合が原因と思われる停止問題を解決すべく新機能を書いてます。