[英]Serialize/ Deserialize C++ classes
我正在尋找一種在兩個客戶端aptication之間發送C ++類的方法。 我正在尋找一種方法,我可以找到的是我需要為每個類Serialize / Deserialize(例如JSON)函數創建並通過TCP / IP發送它。 我正面臨的主要問題是我需要傳遞約600個類(其中一些類包括其他類的實例),這意味着我需要花費下一次編寫序列化/反序列化函數。
是否有編寫Serialize / Deserialize函數的通用方法? 有沒有其他方式發送C ++類?
謝謝,蓋伊埃爾加斯。
提升序列化
雖然我沒有把它用在自己的身上,但在工作中我很受歡迎。
有關它的更多信息,請參閱“Boost(1.54.00)Serialization”
節約
Thrift具有非常有限的序列化功能,我認為這不符合您的要求。 但它可以幫助您將數據從一個客戶端“移動”到另一個客戶端,即使他們使用不同的語言。
更多關於它的信息可以在“Thrift:The Missing Guide”中找到
你在使用框架嗎? 例如,Qt和MFC內置了序列化,可以讓您的任務更輕松。 否則我猜你需要在600個課程中花費至少一些努力。
如上所述,Boost Serialization可能是一個很好的方法,您也可以使用Boost Asio通過Tcp發送序列化類: http : //www.boost.org/doc/libs/1_54_0/doc/html/boost_asio.html
或者,有一個用於Google協議緩沖區的C ++ API(protobuf): https : //developers.google.com/protocol-buffers/docs/reference/cpp/
您可能對ASN.1感興趣。 它不一定是最容易使用的,工具/庫有點難以獲得( http://www.obj-sys.com/index.php上的Objective Systems值得一看,但不是免費的)。
然而,最大的優點是它非常標准化(因此庫版本兼容性沒有問題)並且大多數語言都以這種或那種方式受到支持。 如果您需要跨多個平台的支持,則很方便。 它也進行二進制編碼,因此它的方式比XML(它也支持)更不臃腫。 我出於這些原因選擇了它,並沒有后悔。
如果您在linux平台上,可以直接使用json.h
庫進行序列化。 這是我遇到的示例代碼:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.