2010-04-17 154 views
2

如何配置我的WCF服務作爲普通的TCP服務器工作?是否可以禁用所有綁定特定的東西,以保持您的服務URL像http://example.com:4444/service,並能夠使用純HTTP/TCP流?如何將WCF服務配置爲正常的TCP服務器?

我需要能夠與TCP流一起使用WCF服務...所以我必須從我的一個WCF服務或(我不知道如何)使自我託管的WCF服務與我的獨立TCP服務器配合使用。然而,我只是無法找到如何讓他們共享相同的端口,以便能夠呼叫http://example.com:4444/WCFservice/http://example.com:4444/TCPserver/(我必須讓他們分享;取2個端口不是一個選項。)

+2

如果你不想要「綁定特定的垃圾」,那麼爲什麼使用WCF呢?使用WCF作爲實時流協議的這種注意事項是什麼? – Aaronaught 2010-04-17 22:49:24

回答

3

將TCP端點添加到服務的最簡單方法是修改web.config文件,使其與「WCF服務配置編輯器」相關。你可以在web.config的上下文菜單的Visual Studio的「工具」菜單中找到它(同樣在VS中)。您需要使用netTcpBinding添加新的端點。這個新端點的地址將以「net.tcp://」開頭。欲瞭解更多信息,你可以閱讀http://msdn.microsoft.com/en-us/library/cc949080.aspx

對於net.tcp端口共享讀取http://msdn.microsoft.com/en-us/library/aa395195.aspx或谷歌for:wcf tcp端點端口共享。

的WCF 4的新特性好好檢討,你可以在http://msdn.microsoft.com/en-us/library/ee354381.aspx

找到並把它容易,如果有人不明白的優勢WCF與Winsocket的編程進行比較。 15年前,我用插座,發現它很酷。然後,我使用了RPC,DCOM等。現在,如果考慮對端點進行身份驗證,WCF是最好的方法。所以採取一些以前的評論容易。

+0

我的網址不應該以net.tcp開頭......我需要能夠通過adobe flash來訪問它......因此,Flash Java等客戶端用於使用套接字向我寫入數據流 - 我給它們他們開始寫實時相機視頻流的URL ......我的TCP服務器讀取它......我想讓tham保持這樣或類似的方式...是否有可能與net.tcp?我可以不在其中串行化消息 - 只需製作簡單的尋址系統,如http://example.com:4444/WCFservice.svc?id=666? – Rella 2010-04-18 00:09:12

+1

@Ole Jak:WCF中的netTcpBinding只能通過'net.tcp:// ....'URL來使用 - 就是這樣,如果這不適合你,那麼你需要使用其他的東西比WCF。 – 2010-04-18 09:34:28

+0

對不起,但像example.com:4444/WCFservice.svc?id=666這樣的字符串不是URL。您必須至少像「http:// ...」或「net.tcp://」一樣定義數據交換協議。真正的協議不止是http或tcp。你應該有一個客戶端和服務器之間的真實合同。如果您需要實現由Flash定義的協議,則應搜索相應的示例或直接查看文檔。在我看來,Donal Fellow擁有的問題就是另外一個問題,它問這個問題。 – Oleg 2010-04-18 18:49:57

3

如果你想要使用純TCP流,您可能會直接使用套接字而不是WCF。

當你希望在傳輸層爲你自動實現東西時使用WCF。

+0

我需要能夠與WCF服務配對使用TCP流......所以我必須從我的WCF服務之一製作TCP服務器或(並且我不知道如何)使自己託管的WCF服務能夠在對中工作與我獨立的TCP服務器,我只是不能找到如何讓他們共享相同的端口(我必須讓他們分享 - 取2個端口不是一個選項)你能給我任何幫助嗎?請。 – Rella 2010-04-17 22:50:31