硬件控制在很多軟件中是必不可少的模塊。然而由于硬件本身存在的不穩(wěn)定性(尤其是國產(chǎn)廉價元器件),以及在開發(fā)過程中的不斷調(diào)整硬件型號、固件等疮薇,使得直接控制硬件的軟件主程序存在許多不穩(wěn)定因素。
由于樓主參與的項目開發(fā)中我注,一直將硬件模塊作為第三方庫供主程序調(diào)用按咒,在使用過程中由于硬件控制庫本身質(zhì)量的不穩(wěn)定導致頻頻出現(xiàn)軟件崩潰,導致攻城獅們也瀕臨崩潰但骨,項目延期嚴重励七。
經(jīng)過一段時間的思考,我也越來越感覺到將硬件模塊控制從主程序中剝離的必要性奔缠。將硬件模塊剝離后掠抬,主程序與硬件控制程序之間的通信方式有多種,如管道校哎、共享內(nèi)存两波、D-Bus等。思前想后闷哆,最終決定選RPC的方式腰奋。
RPC是Remote Procedure Call,遠程過程調(diào)用的縮寫抱怔。使用RPC的最大好處是支持不同機器間通信氛堕,為未來的跨網(wǎng)調(diào)用提供了可能。
既然選擇了RPC這條路野蝇,那接下來就要考慮如何將進程間通信的內(nèi)容序列化讼稚。方案有很多括儒,XML、Json锐想、Message Pack帮寻,Protocol Buffer等等。鑒于MsgPack的靈活赠摇,暫時決定選用它來作為序列化工具固逗。不同的序列化方案的性能比較可以參考這個帖子(性能比較)。開發(fā)語言使用C++11藕帜,Client及Server采用Qt5的庫來實現(xiàn)烫罩。