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的应用程序显示空的绘图屏幕,它将镜像用户A的动作。

绘图时,需要序列化所有用户操作并将它们发送到服务器(再次将它们转发给用户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的应用程序接收到的命令。

当然它可能比这更复杂一些,但应该给你一个总体思路。

相关问题