簡體   English   中英

C#中的協議抽象

[英]Protocol abstraction in C#

有許多網絡協議和文件格式(WAV,TCP,BMP等)

是否有可用於在協議實現和使用結果數據的代碼之間創建抽象層的解決方案?

拿一個WAV文件。 軟件組件可以包含識別卡盤並將其解析為類的邏輯。 該組件的用戶不需要知道通道數是以兩個還是四個字節存儲。

WAV文件格式規范與數百種其他格式和協議並不完全不同,那么為什么不制作通用解決方案呢? 為了創建更好的抽象,協議規范可以存儲在XML中。 我沒有找到這樣的事情。 你能為我指出正確的方向嗎?

編輯:這顯然不是一個容易通過帖子傳達的問題。 目前的答案並不是我想要的,但我要感謝大家至少給它一個機會。

這聽起來很像泛化太過分了。 這些格式和協議中的大多數都是彼此不同的,它們與存儲在文件中相比沒有多少共同之處。

即這些格式之間存在更多差異共性,並且大多數共性已經被標准庫和/或OS抽象掉了。 因此,這看起來並不是一個非常實用的想法。

編輯:PS請查看http://www.codinghorror.com/blog/2004/12/it-came-from-planet-architecture.html,因為這非常像嘗試扮演宇航員的架構。

除非這是出於學術目的,否則我認為這樣的抽象層不是一個好主意。

根據數據的格式和數量,它會顯着降低性能,使其更適合本機實現。 此外,使用XML作為規范會使您的性能問題更加嚴重。

如果你把某些東西抽象得太遠就會變得毫無用處,你必須打開黑匣子才能完成任何事情。

保存聲音文件,圖像和電子表格的“通用”容器將毫無用處,因為無論如何您將擁有處理特定於這些類型數據的內容的代碼,但現在您已經跨越了額外的通用容器廢話。

大多數事情都可以包含在協議中 - 只要想想在URL中包含了多少內容。 但這並不總是意味着結構真的被抽象為有意義的層。 我認為各種協議和格式表明可能有一些類別可以抽象,但不是一個抽象來統治它們。

例如,訪問IMAP郵箱和打開ZIP文件之間可能存在差異,因此存在很少的共同點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM