我準備編寫一個獨立於平臺的套接字協議。經過一些初步的研究protobuf似乎要走了。我對protobuf是新手,我似乎無法弄清楚一個具體問題。獨立於平臺的protobuf套接字協議 - 我將收到哪些消息?
我的要求是:
完全獨立於平臺的客戶端;
C#server;
異步消息通信;
從
.proto
文件開始工作(所以沒有現有類的推理);必須能夠發送消息,而不需要服務器/客戶端知道預期的消息類型。
我已經找到了(De)SerializeWithLengthPrefix
方法,它們是一個開始。 我無法弄清楚的是如果我不知道預先輸入的類型,如何接收消息。
我已經看到protobuf-net支持繼承,並且可以檢測消息的類型,所以對於protobuf-net,繼承所有來自公共基類型的消息都可以。 但是,這不是平臺獨立的,我正在尋找一種獨立於平臺的方式。
所以我的問題是:我如何發送我的消息,以便任何客戶端可以反序列化他們而不知道類型?
我想我可能不清楚我的問題。如果在客戶端有.proto文件和一個普通的protobuf實現,那麼我將擁有類和類。我唯一的問題是如何確定接收消息的類型。通過protobuf-net,我可以通過繼承來完成此任務,但是我如何以獨立於平臺的方式執行此操作。也許我不明白你的答案,但我不能把「外國數據放在接收器上」。 – 2010-11-04 08:40:31
@Pieter - 我明白了 - 看到我的編輯;明確地說,我認爲繼承在這裏是非常錯誤的方法。讓我知道你是否想要更多的細節,但這種方法實際上是非常基本的 - 如果有必要的話,它可以是客戶端的「開關」。 – 2010-11-04 08:41:16
好的,但是這意味着我必須自己解析前綴,因爲我無法再使用'DeserializeWithPrefixLength'。那是對的嗎?我希望像這樣的'TryReadLengthPrefix' **'AndTag' **。 – 2010-11-04 08:45:59