2009-10-23 22 views
0

請原諒我對WCF的有限瞭解,但是我希望我對此平臺的經驗不足僅僅意味着我的想法可以實現,而我只是沒有學會如何實現去做吧。最簡單的說,我想編寫兩個應用程序,一個作爲主服務器運行,另一個運行客戶端。值得注意的是,主服務應用程序需要在任何基本的PC上運行 - 主要由其家用PC上的用戶運行,而不需要配置任何主機或Web服務。例如,它需要在一個標準寬帶電纜調制解調器連接的住宅內的Vista家庭基礎版上運行,由一些沒有IT知識的人員來運行。第二個問題是每個服務應用程序應該與可能同時暴露於Internet的任何其他服務應用程序分開。把它想象成一個聊天室應用程序,其中一個人有能力在他們的家用電腦上開始一個聊天會話。然後,其他人可以通過互聯網連接到該會話(通過使用其他方式提供的登錄信息 - 例如電子郵件,電話,文本等),所有人都可以交換消息。有人只運行客戶端不能創建聊天會話,只有擁有合適的會話ID才能啓動客戶端。如上所述,如果其他人在其家庭PC上使用不同的會話ID啓動相同的服務應用程序,則只有那些查找該會話的人才能夠連接並查看該會話的消息。對於運行服務應用程序的PC如何配置遠程防火牆和可用的Internet端口,存在無限的可能性,所以我假設需要使用基本的HTTP綁定?使用WCF在沒有IIS的情況下通過公共Internet自行託管服務

所以,問題是,實現這個目標的最好方法是什麼......或者,這個想法是否可以完成?在我看來,服務應用程序沒有公共可用的地址,客戶端無法找到某種服務器風格的配置。我深入研究了新的.NET服務服務總線,這個服務總線允許服務端點在雲上暴露(並且我以基本的方式工作),但是它確實看起來像是過分的簡單的應用套件。我研究了自託管配置和PeerChannel類,但是我不確定他們能夠完成我之後的任務。

當然,只要有辦法將服務提供給Internet,客戶端實現應該非常簡單。

再次,對缺乏知識感到抱歉。也許(希望?)這是一件容易的事情。

感謝,

史蒂夫E.


感謝您的快速答覆...

我假設有會是一些用戶PC端提示由於軟件防火牆。現在,我認爲考慮到大多數普通用戶習慣於在應用程序試圖訪問互聯網時看到Windows提示他們批准。我希望能夠使用單個端點,並假定這意味着一個單一的端口用於開放通道。這是一個錯誤的假設?每個客戶端是否使用不同的端口連接到聊天室中的所有其他客戶端,即使它們都是相同的頻道?

該解決方案的一部分,我是希望避免是需要提供基於Web的服務來管理聊天室。雖然這是最後的可能性,但我希望完全沒有服務器安裝。

我現在正在更加重視PNRP和PeerChannel技術。這看起來也很有希望,但我仍然在學習它。你知道什麼關於PNRP和直接與WCF連接?

回答

1

它在WCF中很簡單。您的「客戶」應用程序(坐在用戶PC上的應用程序)將能夠連接或主持聊天室。 WCF可以做到這一點,沒有任何主要的麻煩...除了應用程序將不得不能夠連接到互聯網。通常這意味着用戶必須允許應用程序更改防火牆的配置。

爲了讓用戶找到彼此,您必須提供一項服務,用戶可以在其中播放其聊天室並查找其他人創建的聊天室。這可以通過具有客戶端軟件已知地址的中央服務器來實現。

10K腳觀點:

  1. 用戶安裝了聊天客戶端。
  2. 聊天客戶端請求提升,用戶同意,客戶端配置防火牆。
  3. 聊天客戶端與中央服務器檢查房間。
  4. 用戶加入聊天室。
  5. 用戶創建一個房間,聊天客戶端通知中央服務器一個新房間。
  6. 其他客戶找到服務器上的房間並直接與用戶連接。
  7. 用戶關閉聊天室,聊天客戶端通知中央服務器房間不再可用。

最難的部分是弄清楚如何處理端口和更改防火牆,而不會在每次連接到另一個聊天客戶端(可能位於不同的端口)時都不會竊聽用戶。

相關問題