2010-03-14 77 views
5

對於愚蠢的問題感到抱歉,但只是關於WCF的一些事情我無法讓我的頭。將不勝感激了以下一些建議....WCF net.tcp綁定,消息格式和安全問題

  • 在一個非常基本的水平是正確的,WCF使用二進制(的net.tcp),HTTP或MSMQ傳輸線路上我的信息?

  • 但是,無論在任何情況下,無論數據如何以帶有標題和正文的SOAP格式傳輸消息本身,都是如此?所以它是一種以HTTP/S或二進制格式傳輸的XML消息。

  • Net.Tcp是我的客戶端服務器應用程序的不錯選擇 - 它類似於Messenger應用程序,因爲客戶端都是位於防火牆另一端的遠程用戶。我正在閱讀的大部分內容都告訴使用WS *和HTTP。

  • Net.Tcp是否由標準和無證書保護? - 也就是說 - 人們無法在線路上收聽並解碼出入數據。

  • 是否可以使用net.tcp發送用戶名和密碼,並且沒有安裝證書?

  • 如果是這樣,我認爲我可以將其掛鉤到我的成員資格提供程序,並驗證對我的服務合同實施中每種方法的訪問權限。

  • 我推測,使用用戶名和密碼安全性,代理服務器將使用用戶名和密碼進行初始化,並且該信息將隨每個請求一起發送。

  • 然後我的會員提供商將被調用每個方法調用,並做任何需要做的事情來獲得該方法的授權。

不好意思問題的轉儲,但很想知道我是否正確思考WCF如何工作。

謝謝。

回答

15

在一個非常基本的水平是正確的,WCF使用二進制(的net.tcp),HTTP或MSMQ傳輸線路上我的信息?

您正在混淆傳輸層和序列化機制。 WCF transports選項是TCP,命名管道,HTTP和MSMQ。 WCF serialisation選項是二進制文本(包括SOAP,POX和JSON)和MTOM。

但是,無論在任何情況下,無論數據如何以帶有標頭和正文的SOAP格式傳輸消息本身?所以它是一種以HTTP/S或二進制格式傳輸的XML消息。

號碼WCF使用Message類作爲通信的原子單位。它就像結構中的SOAP一樣,但它不像SOAP那樣是序列化格式。

是淨。Tcp是我的客戶端服務器應用程序的一個很好的選擇 - 它類似於Messenger應用程序,因爲客戶端是防火牆另一端的所有遠程用戶到我的服務器。我正在閱讀的大部分內容都告訴使用WS *和HTTP。

聽起來像TCP不會是一個好的選擇。除非您能夠在端口80或443上運行服務器,否則防火牆可能會使TCP變得困難。從我個人的經驗來看,我還建議不要在Internet部署中使用帶有TCP綁定的WCF。當一個TCP連接丟失時,WCF會讓你跳過很多環節來捕獲並重建它。 HTTP綁定更容易管理。

Net.Tcp是否由標準和無證書保護? - 也就是說 - 人們無法在線路上收聽並解碼出入數據。

NetTCP binding is secured by default with TLS

是否可以使用net.tcp發送用戶名和密碼,並且沒有安裝證書?

您可以使用預先安裝的cerificate進行TCP綁定驗證。您還可以將用戶名和密碼添加到您的郵件標題中,但這是另一回事。

如果是這樣,我認爲我可以將其掛鉤到我的成員資格提供程序,並驗證對我的服務合同實施中每個方法的訪問權限。

您可以使用OperationContext提取郵件頭並提取您喜歡的任何信息並將其用於身份驗證提供程序。

我認爲用用戶名和密碼安全,代理用用戶名和密碼初始化,這個信息是隨每個請求一起發送的。

然後我的會員供應商將被調用爲每個方法調用,做任何需要做的就是該方法的授權。

這聽起來像你想看看How to: Use the ASP.NET Membership Provider

3

除了Sipwiz」出色答卷:

但是這是真的,在所有情況下, 不管數據是如何 在 傳輸的消息本身在SOAP格式頭和 身體?所以它是一種以HTTP/S 或二進制格式傳輸的XML消息 。

是 - 差不多。 WCF的大多數綁定都使用SOAP作爲它們的格式 - 除了webHttpBinding和WCF數據服務(以前稱爲「Astoria」或ADO.NET數據服務)或WCF RIA服務等關聯事項外。他們使用REST方法傳輸數據,而與SOAP無關。

有關REST的更多信息,請查看WCF REST Developer Center on MSDN