none
【VC#2008】WCFの実装方法について RRS feed

  • 質問

  • いつもお世話になっております。

    WCFを使用して下記仕様を満たしたいと考えています。

    ●要件
    ①サーバは1台で、クライアントはリモートPCで100台同時接続。

    ②双方向通信ができる。
     ・クライアントからは個別にサーバへ要求し応答を受け取る
     ・サーバからは、全クライアントへブロードキャスト通知
      ※クライアントからの要求があればコールバックできる仕組みがあるようですが
       サーバ側の任意の都合でクライアントへ一斉配信したい仕様です。
       (コールバックモデルでも可能でしょうか?)

    ③サーバ側からクライアント接続を個別にセッション管理したい。

    ④常時接続し続けたい。

    ⑤tcp接続です。

    ⑥任意のデータ型を使用したい。

    ●質問
    ①上記をWCFで実現できるのでしょうか?

    ②サーバ/クライアントそれぞれから任意のタイミングで要求する方法を教えて下さい。
     (双方向通信の仕方)

     クライアントからOperationContract定義されたサーバ側メソッド内で、
     クライアントセッションを取得し管理するのかなと思うのですが、実装方法を知りたいです。

    ③当初は、.netRemotingで実装しようと思いMSDNのサンプルをそのまま利用したのですが
     実行エラーが出て動作しないためWCFにしています。 これが動作しない理由も気になります。

     ●MSDNサンプルソース
      http://msdn.microsoft.com/ja-jp/library/system.runtime.remoting.channels.tcp.tcpclientchannel(v=vs.80).aspx
      http://msdn.microsoft.com/ja-jp/library/system.runtime.remoting.channels.tcp.tcpserverchannel(v=vs.80).aspx

    以上、わかる方いらっしゃいましたらよろしくお願い致します。

    2011年10月11日 1:34

回答

  •  

    WCFでのチャット実装のサンプルとか参考にならないでしょうか

    http://www.codeproject.com/KB/WCF/WCFWPFChat.aspx


    かずき Blog:http://d.hatena.ne.jp/okazuki/ VS 2010のデザイナでBlendのBehaviorをサポートするツール公開してます。 http://vsbehaviorsupport.codeplex.com/
    • 回答の候補に設定 山本春海 2011年10月27日 7:54
    • 回答としてマーク 山本春海 2011年10月28日 8:47
    2011年10月11日 6:18
  • > 2 双方向通信ができる。
    > 2 サーバ/クライアントそれぞれから任意のタイミングで要求する方法を教えて下さい。

    この2つには、大きな違いがあるのですが、接続要求じゃなくてデータ通信ができればよいということですよね?

    >3 サーバ側からクライアント接続を個別にセッション管理したい。

    これは、アプリケーション側でのロジカルなセッション管理とは別に、リモート化フレームワークに何らかのセッション管理の要求があるということでしょうか? 具体的に何を管理したいのかを明記しないと、適切な回答は得られないのではないかと思います。

    >6 任意のデータ型を使用したい。

    「任意」の意味次第ですが、アプリケーション上で定義したとおりにって程度ならよいのですが、汎用的なフレームワークとして何でもかんでも送受信できる機能を求めているのであれば、存在しないと思います。どのようなフレームワークを利用しても、どのような形式で通信を行うかが厳密に定義されていて、すべての型に対してどのような方法で送受信を行うかを明確にしなければなりません。実際は、多くのフレームワークではある程度自動化してくれていて、そのサポート範囲の差異があります。

    > 3 当初は、.netRemotingで実装しようと思いMSDNのサンプルをそのまま利用したのですが実行エラーが出て動作しないためWCFにしています

    今から始めるなら WCF のほうがよいのではないかとは思いますが、このような理由で WCF を試しているのであれば、同じ理由で WCF もあきらめることになってしまうのではないかと思います。気にはされているようなので、WCF ではもうちょっと頑張ってみたほうがいいかもしれません。

     

    • 回答の候補に設定 山本春海 2011年10月27日 7:54
    • 回答としてマーク 山本春海 2011年10月28日 8:47
    2011年10月12日 3:42

すべての返信

  •  

    WCFでのチャット実装のサンプルとか参考にならないでしょうか

    http://www.codeproject.com/KB/WCF/WCFWPFChat.aspx


    かずき Blog:http://d.hatena.ne.jp/okazuki/ VS 2010のデザイナでBlendのBehaviorをサポートするツール公開してます。 http://vsbehaviorsupport.codeplex.com/
    • 回答の候補に設定 山本春海 2011年10月27日 7:54
    • 回答としてマーク 山本春海 2011年10月28日 8:47
    2011年10月11日 6:18
  • > 2 双方向通信ができる。
    > 2 サーバ/クライアントそれぞれから任意のタイミングで要求する方法を教えて下さい。

    この2つには、大きな違いがあるのですが、接続要求じゃなくてデータ通信ができればよいということですよね?

    >3 サーバ側からクライアント接続を個別にセッション管理したい。

    これは、アプリケーション側でのロジカルなセッション管理とは別に、リモート化フレームワークに何らかのセッション管理の要求があるということでしょうか? 具体的に何を管理したいのかを明記しないと、適切な回答は得られないのではないかと思います。

    >6 任意のデータ型を使用したい。

    「任意」の意味次第ですが、アプリケーション上で定義したとおりにって程度ならよいのですが、汎用的なフレームワークとして何でもかんでも送受信できる機能を求めているのであれば、存在しないと思います。どのようなフレームワークを利用しても、どのような形式で通信を行うかが厳密に定義されていて、すべての型に対してどのような方法で送受信を行うかを明確にしなければなりません。実際は、多くのフレームワークではある程度自動化してくれていて、そのサポート範囲の差異があります。

    > 3 当初は、.netRemotingで実装しようと思いMSDNのサンプルをそのまま利用したのですが実行エラーが出て動作しないためWCFにしています

    今から始めるなら WCF のほうがよいのではないかとは思いますが、このような理由で WCF を試しているのであれば、同じ理由で WCF もあきらめることになってしまうのではないかと思います。気にはされているようなので、WCF ではもうちょっと頑張ってみたほうがいいかもしれません。

     

    • 回答の候補に設定 山本春海 2011年10月27日 7:54
    • 回答としてマーク 山本春海 2011年10月28日 8:47
    2011年10月12日 3:42
  • こんにちは、ソフト初心者 さん。

    MSDN フォーラムのご利用ありがとうございます。フォーラム オペレーターの山本です。
    しばらく時間が経ちましたが、みなさんからの情報は確認されましたか?

    参考になる情報をいただいていると思われましたので、勝手ながら私のほうで一旦回答としてマークさせていただきました。
    かずき_okazuki さん、K.Takaoka さん、アドバイスありがとうございます。

    いただいた情報の中で、解決に役立った投稿や、参考になる情報など有効な情報には回答としてマークすることをお願いしています。
    今後、同じ問題でこのスレッドを参照される方にも、有効な情報がわかりやすくなるかと思いますのでご協力よろしくお願いいたします。

    ソフト初心者 さん、その後いかがでしょうか。
    いただいたアドバイスを参考に、ご不明点など現在の状況を投稿されると、より情報が得られるかもしれません。

    今後とも MSDN フォーラムをよろしくお願いします。それでは。
                                                 
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2011年10月28日 8:47