2016-08-30 31 views
1

我正在調試一個大約2mil代碼行的WCF專用問題,我很新。WCF在跳轉之前序列化數據庫中的數據,以及它在哪裏反序列化?

我們已經確定Oracle數據庫中的數據是好數據,並且從db中發現了幾層,我們發現數據不正確。數據訪問層和一個或兩個服務層位於某處,並且在本地運行它們以進行調試非常困難,所以我希望看到數據從數據庫轉到DA層。

我正在運行Wireshark並捕獲來自我的遠程數據包的數據包,我安裝了SSL證書,行數是黑色的,所以我認爲這意味着它正確解密了它,但是我看到的所有內容都是亂碼TCP流菜單。

所以我會看到好的數據通過數據庫從數據庫到數據訪問層? WCF在跳轉之前將其序列化,然後將其反序列化到神祕框DA /服務層中的某個位置?

感謝您的幫助。

+0

你可能在想這裏的錯誤「層」(或者我不是不可能)。例如,我使用了一個使用'BasicHttpBinding'的服務,該服務使用「HTTP作爲傳輸」,默認使用「a」文本「消息編碼和UTF-8文本編碼」。但我也可以選擇'NetTcpBinding' 「使用TCP進行消息傳遞,並使用二進制消息編碼」 - 儘管傳輸相同的序列化數據,這些應該在wireshark中以不同的方式顯示。 – Quantic

+0

服務將序列化接收時的發送和反序列化數據,客戶端將以相同的方式運行。如果數據庫中的數據良好,那麼您需要按照堆棧方式工作,以查看它是否在其中一個圖層中發生了變形 - 可能是翻譯/映射錯誤? – Tim

+0

而不是Wireshark嘗試[Microsoft消息分析器](https://www.microsoft.com/en-us/download/details.aspx?id=44226)我不得不使用它來查看SSL中的某些數據包流爲一個Sql TDS流,它運作良好。內置支持SOAP消息(這是WCF發送和接收的內容)。 –

回答

1

感謝你們的幫助,在@ScottChamberlain的建議下運行Wireshark和Microsoft Message Analizer之後,我們發現序列化程序在它從db到數據訪問層的連線之前實際上序列化,然後反序列化在服務層。這一點在這裏得到了一位高級開發人員的證實,並且這一切都以這種方式發揮作用,因爲這是我們特定的基於SOAP的服務架構的工作原理。

因此對於那些尋找答案,這取決於你的WCF串行器實現,但這可能是你的工作原理。我們的,並且可能你的,像這樣工作:

  1. 服務告訴分貝序列化數據
  2. 的分貝發回一個字節碼流
  3. 服務層反序列化數據

希望這可以幫助那些試圖調試這一層的人。