2016-12-05 53 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的應用程序接收到的命令。

當然它可能比這更復雜一些,但應該給你一個總體思路。

相關問題