如何开始创建实时通信的 WPF 应用程序?
How to start creating a WPF application that communicates in real time?
我正在尝试创建 WPF 绘图应用程序。有没有办法创建一个分布式 WPF 应用程序,它可以 "communicate" 在另一台计算机上实时使用相同的应用程序(比如与另一个用户实时共享我的绘图)。
我不需要代码方面的帮助,但如果有人指出适合这些类型的应用程序的正确架构以及哪些设计模式是好的,我将不胜感激。
我对软件工程(学生)还很陌生,我正在努力解决问题。我的想法是使用 WPF、WCF、MsSQL,所以我想知道我是否遗漏了什么,这些工具是否正确。
再次感谢您的每一条建议! :)
首先,应识别每个 WPF 应用程序。最直接的方法是要求身份验证(常规用户名和密码)。身份验证成功后,将创建从它到服务器的持久双向连接。如果您使用 WCF(尽管我会远离它)- 使用双工通道。例如,如果您的服务器是 ASP.NET MVC web api - 使用网络套接字或 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 应用程序上复制收到的命令。
当然它可能比那更复杂一些,但应该给你大概的想法。
我正在尝试创建 WPF 绘图应用程序。有没有办法创建一个分布式 WPF 应用程序,它可以 "communicate" 在另一台计算机上实时使用相同的应用程序(比如与另一个用户实时共享我的绘图)。
我不需要代码方面的帮助,但如果有人指出适合这些类型的应用程序的正确架构以及哪些设计模式是好的,我将不胜感激。
我对软件工程(学生)还很陌生,我正在努力解决问题。我的想法是使用 WPF、WCF、MsSQL,所以我想知道我是否遗漏了什么,这些工具是否正确。
再次感谢您的每一条建议! :)
首先,应识别每个 WPF 应用程序。最直接的方法是要求身份验证(常规用户名和密码)。身份验证成功后,将创建从它到服务器的持久双向连接。如果您使用 WCF(尽管我会远离它)- 使用双工通道。例如,如果您的服务器是 ASP.NET MVC web api - 使用网络套接字或 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 应用程序上复制收到的命令。
当然它可能比那更复杂一些,但应该给你大概的想法。