2015-05-13 65 views
2

我有一個連接到本地網絡的計算機上運行的WPF應用程序,並且有一個連接到該計算機的特殊設備,由該應用程序控制。是否有任何簡單的方法將GUI(WPF XAML)遷移到連接到同一網絡的另一臺計算機,以便GUI和BL保持耦合?如何在本地網絡的一臺計算機上運行業務邏輯,並在另一臺計算機上運行GUI?

我一直在研究WCF,但有一些限制,這會使WCF適應我的情況很費時。如果WCF可以同時處理一個ServiceContract中的兩個屬性(根本不支持)和事件,它將完美工作。

回答

2

不,沒有簡單的方法來做到這一點。
如果您的GUI和BL運行在不同的機器上,那麼您必須實現特殊代碼才能在應用程序之間執行網絡通信(即GUI和BL是兩個不同的應用程序),並且如果GUI和BL緊密耦合,毫無意義(與網絡相關的代碼將包含巨大的服務協議,而遠程處理會浪費大量時間,使得UI交互變得緩慢且痛苦) - 它應該被重構。

有,但是,你的問題的變通方法 - 你可以用兩個BL和GUI運行你的機器上的應用程序,則表明GUI不同的機器上:RemoteDesktop或遠程應用(https://technet.microsoft.com/en-us/library/cc755055.aspx)可以提供幫助的。

+0

網絡操作可以是異步的,所以他們不需要讓UI交互變得痛苦。這就是說,我不確定這是否真的回答了這個問題(儘管你可能會認爲它可以解決他的問題) – BradleyDotNET

+0

@BradleyDotNET,我認爲,一般來說,異步操作無法避免管理和同步「視圖狀態」之間的問題GUI和BL機器,如果GUI和BL緊密耦合。因此,如果重構不是一種選擇,那麼我的答案應該就足夠了,否則應用程序應該重新實現客戶機/服務器體系結構 – Aloraman

+0

當然,在任何*網絡可能之前,您必須有一個分離的體系結構。當然,這樣的架構是可取的:)。沒有足夠的時間做正確的事情,總是有足夠的時間來完成它。 – BradleyDotNET

2

容易方式?

如您所述,您可以使用WCF。您還可以使用SignalR,消息總線,標準TCP套接字或其他一些技術。

沒有但這些會給你絕對的透明度,你似乎渴望。他們所有的工作都是基於你打算在服務器上調用一個方法的概念,它可能會或可能不會返回數據。在TCP的情況下,您發送數據並可能返回數據。你不僅僅是訪問/改變一個屬性或者監聽一個事件(SignalR和WCF確實支持服務器 - >客戶端調用,這不是簡單的,而是一個事件,但它可以像一個一樣工作)。

我認爲你需要考慮實現一個標準的客戶端/服務器模型,不方便,因爲你可能會相信它。

相關問題