如何开始创建实时通信的WPF应用程序?

时间:2016-12-05 17:09:41

标签: c# wpf wcf software-design

我正在尝试创建一个WPF绘图应用程序。有没有办法创建一个分布式WPF应用程序,可以实时与另一台计算机上的同一个应用程序“通信”(比如与其他用户实时共享我的绘图)。

我不需要代码的帮助,但如果有人为这些类型的应用程序指出了正确的架构以及哪些设计模式是好的,我将不胜感激。

我对软件工程(学生)相当陌生,我正在努力解决问题。我的想法是使用WPF,WCF,MsSQL所以我想知道我是否遗漏了一些东西,这些都是正确的工具。

再次感谢您的每一条建议! :)

1 个答案:

答案 0 :(得分: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;}
}

或者如果你填写矩形:

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

然后,您只需在用户的B和C应用程序上复制收到的命令。

当然它可能比这更复杂,但应该给你一般的想法。