2015-10-07 71 views
0

我開發了一個用於使用Qt的IM的客戶端/服務器應用程序。到目前爲止,消息被髮送並顯示在客戶端,但是當程序關閉時,由於缺少適當的存儲,消息不再可用。Qt/C++離線存儲IM消息

我想保留客戶端設備上的消息,並避免將所有內容存儲在服務器上。我不想使用數據庫,因爲它需要安裝,我想保持一切都很容易。

因此,我正在考慮簡單地將所有內容存儲在加密文件中,但我想不出一個合適的格式來做到這一點。 有沒有人有這方面的經驗或任何建議如何保存來自不同客戶端的消息?

回答

2

由於代碼中的錯誤,瞬時硬件錯誤,停電等原因,面對計劃外的軟件意外終止,您確實需要關注數據完整性。這就是每個使用「普通文件」的人通常會忽略的問題,因爲這是一個難以解決的問題,需要大量的測試和技術訣竅。

這就是爲什麼你應該使用嵌入式數據庫。它會解決這個問題,還有很多其他問題。 SQLite是應用程序的事實上的標準,比如你的。你可以添加你想要的任何加密,因爲SQLite提供的鉤子可以讓你實現頁面的寫入和讀取。你會在那裏做加密。

SQLite的一個鮮爲人知的方面特別是它在開發過程中獲得的測試數量。測試工具,大部分是非公開的,可能比已發佈的SQLite代碼(> 1M USD)更有價值。 SQLite用於航空航天應用,例如IIRC代碼爲DAL-B,編號爲DO-178B