我正在構建一個silverlight應用並希望添加p2p功能 - 允許用戶互相發送數據。什麼是在silverlight上做p2p應用的最佳方式
- 開箱即用嗎?
- 我應該等Silverlight 4.0嗎?
- 我需要一臺p2p服務器嗎?
我正在構建一個silverlight應用並希望添加p2p功能 - 允許用戶互相發送數據。什麼是在silverlight上做p2p應用的最佳方式
我不認爲你可以使用無服務器環境在Silverlight中完成這項工作。
雖然這在技術上不再是點對點應用程序,但您可以做任何您想要的服務器和Web服務。您必須將消息發送到服務器,然後服務器纔會發送給相應的客戶端。如果你遵循這條路線,你可能也想看看Silverlight的WCF RIA Services,因爲它內置了對認證等內容的支持。
編輯 - 我不知道這是否是一種選擇,但它看起來像有人想出了一種方法來在Silverlight中做P2P。然而,它要求你同時運行在Windows Live Messenger應用程序:
的關鍵問題實際上是打開客戶端套接字接受來自另一臺機器的連接,和Silverlight不支持這一點,甚至在瀏覽器外的模式下,甚至在Silverlight 4中。如果你想像這樣做,就像其他人所說的那樣,你需要一個通用服務器,這兩個客戶端都可以連接到這個服務器,並且它將來回代理消息客戶之間。當然,Silverlight套接字僅限於端口4502-4532的事實也意味着您受到防火牆策略的限制。
我們對我們的應用程序(使用Silverlight 4)所做的工作是嘗試連接Net.TCP的新支持(它可以擴展得更好),然後如果失敗,則回退到HttpDuplexBinding(它運行通過HTTP,因此更有可能通過防火牆)。然後,我們編寫了一個WCF服務,該服務從一個客戶端接收消息並將它們提交給其他訂閱客戶端。它不是P2P,但它允許有類似的結果(除了P2P連接的所有實際好處)。
如果您轉移到WPF,當然放棄了Silverlight的可移植性,但您可以獲得完整的服務器套接字支持,以及編碼各種NAT traversal strategies(如STUN和TURN)的功能。
不錯,我喜歡使用NET.TCP和優雅降級的想法。 – 2010-01-25 18:23:27
我不認爲WCF RIA Services會在這裏提供幫助。在Silverlight中的P2P將要求您使用套接字,並能夠與對等套接字進行通信,您將不得不通過正確的端口等修改客戶端訪問文件。 Silverlight並不是真正意義上的無服務器技術,所以對於那個應用程序,我會選擇使用WPF。 – Bryant 2009-12-08 01:33:42