2019-04-18 15:52:25 2565瀏覽
數(shù)據(jù)的序列化是一個非常有用的功能,然而很多剛接觸這玩意的時候壓根就不理解這貨色到底是干啥用的,本篇文章扣丁學堂PHP培訓小編就給讀者們分享一下PHP四種序列化方案橫向對比,感興趣的小伙伴就隨小編來了解一下吧。
其實將數(shù)據(jù)序列化的作用無外乎有兩個:
方便傳輸
方便存儲
方便存儲如何理解呢?比如我們有個PHP對象或者一個PHP數(shù)組需要存儲到數(shù)據(jù)庫甚至文件中,這顯然是不可能的,這個時候必須要將PHP對象或者PHP數(shù)組序列化后再執(zhí)行存儲操作。不過這將PHP數(shù)組序列化后存起來還能理解,這對象也能存儲啊?這操作是否過于風騷?少年,這一點兒都不風騷。有些時候將對象直接存儲起來,用的時候只需要簡單的反序列化后就可以投產使用了,避免了new一次帶來的性能耗費。
方便傳輸如何理解呢?其實序列化在傳輸中應用的相對更多更常見些許。最簡單的一個例子,一個碼前端的碼了一個ajax找你給TA提供一個API,那么這個時候你倆得商量返回什么數(shù)據(jù),比如json或者xml,甚至你倆自己作死約定私有數(shù)據(jù)格式。比如在一個比較典型的服務架構中,網關服務器和內部RPC服務器之間通過msgpack傳遞數(shù)據(jù)。這都是典型的序列化為了傳輸?shù)牡湫蛻冒咐?/span>
這里序列化的概念可能更為廣泛和籠統(tǒng)一些,包括傳統(tǒng)的serialize、json、msgpack、protobuf等。( 如果你覺得序列化這個稱呼不太嚴謹?shù)脑?,可以用encode來代替;反序列化則用decode來代替。反正我就用統(tǒng)統(tǒng)用序列化和反序列化來稱呼了,如果你覺得實在不舒服,可以順著網線來砍我!)。
實際上,從更高的層面看,數(shù)據(jù)的序列化可以分為兩種:
文本序列化,常見如json、serialize、xml等
二進制序列化,常見如msgpack、protobuf、thrift等
一般說來,考驗序列化技術的性能指標一共有兩個,一個是序列化的速度,一個是序列化后數(shù)據(jù)的大小,自然是序列化速度越快、序列化后的數(shù)據(jù)越小為佳。就目前來看,protobuf、msgpack等二進制序列化無論是速度上還是數(shù)據(jù)大小上,都要比文本序列化更好。不過話說回來,文本序列化有更好的可讀性,一眼就能瞪出來數(shù)據(jù)內容大概是啥玩意。
以上就是扣丁學堂PHP在線學習小編給大家分享的PHP四種序列化方案橫向對比,希望對小伙伴們有所幫助,想要了解更多內容的小伙伴可以登錄扣丁學堂官網咨詢。
想要學好PHP開發(fā)小編給大家推薦口碑良好的扣丁學堂,扣丁學堂有專業(yè)老師制定的PHP學習路線圖輔助學員學習,此外還有與時俱進的PHP課程體系和PHP視頻教程供大家學習,想要學好PHP開發(fā)技術的小伙伴快快行動吧??鄱W堂PHP技術交流群:374332265。
【關注微信公眾號獲取更多學習資料】 【掃碼進入HTML5前端開發(fā)VIP免費公開課】