2016-12-05 12 views
0

私はWPF描画アプリケーションを作成しようとしています。リアルタイムで別のコンピュータ上の同じアプリケーションと「通信」することができる分散WPFアプリケーションを作成する方法はありますか?リアルタイムで通信するWPFアプリケーションの作成を開始するにはどうすればよいですか?

私はこのコードには助けが必要ではありませんが、誰かがこのタイプのアプリケーションの正しいアーキテクチャを指摘していて、どのデザインパターンが良いのかを知っていただければ幸いです。

私はソフトウェアエンジニアリング(学生)にはかなり新しいですし、物事を理解しようとしています。私の考えは、WPF、WCF、MsSQLを使用することでした。私は何かが欠落しているかどうかを知りたいのですが、これらは正しいツールです。

アドバイスをいただきありがとうございます。 :)

+0

これはSignalRと呼ばれています – Tuco

答えて

0

まず、すべてのWPFアプリケーションを特定する必要があります。最も簡単な方法は、認証(通常のユーザー名とパスワード)が必要です。認証に成功すると、それからサーバーへの永続的双方向接続が作成されます。 WCFを使用している場合(私は離れていても)、デュプレックスチャネルを使用してください。サーバーがASP.NET MVC Web APIなどの場合は、WebソケットまたはSignalRを使用します。

これで、すべてのアプリケーションがサーバーに接続されており、どの接続がどのユーザーに属しているかが分かりました。ユーザAが図面セッションを開始すると、このユーザはユーザBとCと共有したいと言います。サーバに要求を送信し、ユーザBとCに属する接続を介してメッセージを送信します。ユーザBとCのアプリケーション

描画するときに、すべてのユーザーアクションをシリアル化してサーバーに送信する必要があります(ユーザーBとCの接続に再度転送します)。たとえば、ユーザーが行を描画する場合は、あなたがシリアライズして送信することができます。

class DrawLineCommand { 
    public Point From {get;set;} 
    public Point To {get;set;} 
} 

それともrectangeを埋める場合:

class FillRectangeCommand { 
    public Brush Brush {get;set;} 
    public Point TopLeft {get;set;} 
    public Point BottomRight {get;set;} 
} 

次に、あなただけのユーザーのBとCのアプリケーションで受信したコマンドを複製します。

もちろん、それはもっと複雑かもしれませんが、あなたに一般的な考えを与えるべきです。

関連する問題