2010-10-17 159 views
3

我有一個WPF應用程序,我想要移植到Linux/Mac。大多數邏輯方式似乎將應用程序分爲兩部分:客戶端和服務器,並將Silverlight用於客戶端UI,然後在Mono中運行服務器部分(作爲隱形控制檯應用程序)。Silverlight客戶端 - 服務器通信

但是,讓這兩部分通信的最佳方式是什麼? Silverlight 4支持COM互操作,但我無法使用它,因爲它在月光下會失敗。所以我正在考慮到本地主機的套接字連接,並使用JSON或類似的東西。還是有更好的方法,不需要我爲server-dll中包含的所有函數編寫數十個包裝器?因爲溝通將在Mono <> Moonlight之間,也許我可以使用類似於跨平臺的COM互操作的東西?

回答

1

你在正確的軌道上。

您應該創建一個Web服務器應用程序,Silverlight應用程序將通過http://localhost通過REST或SOAP與它通信。

+0

是的,但是如何創建服務器部分?只需打開一個套接字並自己處理REST/SOAP請求的所有處理,還是有更好的方法? – Muis 2010-10-17 20:25:55

+0

@Drazic:閱讀關於Web開發和Silverlight(以及RIA Services)的書籍。你不需要打開任何套接字。當你拿起一本書時,你會明白更多。 – 2010-10-17 20:29:12

+0

@ Gabriel:我想你會忘記這個部分:'to localhost'。最終用戶將不會安裝IIS,因此不涉及真正的Web服務器。只需要一個到127.0.0.1的環回連接,來分開前端/後端。我不託管應用程序,它在用戶桌面PC上本地運行。 – Muis 2010-10-17 20:40:23

0

約書亞 - 我有點困惑(我不是這個意思是否定的)。如果應用程序在用戶機器上運行,那麼是不是沒有「服務器」連接?

服務器端組件的性質是什麼? - 他們在做什麼?你不能只從SilverLight中運行整個事情嗎?

SilverLight爲.Net提供運行時主機,從這個意義上說,它可以包含整個應用程序 - 它仍然可以像「傳統的」基於Web的解決方案一樣分層,所以仍然可以爲業務邏輯單獨裝配,等等。

+0

我無法使用純Silverlight,因爲我的應用需要打開套接字受限的端口/訪問文件系統等。我知道沒有「真正」的服務器連接,這就是爲什麼即時通訊從一個控制檯應用程序託管WCF服務,或編寫我自己的基於TCP協議進行通信。 – Muis 2010-10-18 12:47:46