2014-06-27 47 views
0

我想創建一個應用程序,該應用程序在執行時具有其他應用程序可訪問的運行時功能。C++運行時API

例如,一個將值存儲在文件中並檢索此信息的C++應用程序。在此應用程序正在運行時,任何其他C++應用程序都可以訪問它的保存和檢索功能來保存和檢索數據,但應該沒有其他連接到此係統的連接。

+1

AFAIK這不是C++語言的一部分,而「環境」(操作系統/平臺)你的應用程序將運行。因此請指定您的平臺。 –

+3

閱讀[進程間通信](http://en.wikipedia.org/wiki/Inter-process_communication)。對於更多的函數調用接口,您可能需要閱讀[遠程過程調用](http://en.wikipedia.org/wiki/Remote_procedure_call)。它們都不是標準C++的一部分,它完全依賴於系統。 –

+0

系統是Linux(Ubuntu,14.01)。這將通過網絡連接更有意義嗎?應用程序是否應該提供網絡API,甚至認爲它不應該有外部連接? – VjS

回答

0

聽起來像是一項簡單的Web服務或遠程數據庫甚至LDAP服務器的工作。

存儲和檢索是所有這些操作的共同操作。

如果目標是學習一些特定的技術,然後問一個更具體的問題。否則,不要重新發明任何車輪。有很多東西用於存儲和檢索。

我知道的最簡單的「存儲和檢索」API之一是Berkeley DB或Sleepycat。

我們爲一家在Berkeley DB(又名Sleepycat)之上使用LDAP的大型電信公司構建了一個巨型的,集羣化的,簡單的基於密鑰的數據庫。所有開源軟件和商品硬件,並支持數百萬客戶的關鍵任務操作。

此更現代的版本也可能使用memcached。

如果你使用基於HTTP的方式,你可以使用一些簡單的libcurl來對付Apache Web服務器,通過GET和PUT命令來實現「RESTful」服務。

如果你在本地運行它(同一臺服務器),並通過本地主機(127.0.0.1)訪問,那麼TCP堆棧中的延遲非常小,並且它在內核級別上比memcpys多一點。

+0

這只是一個例子,我不想重新發明任何車輪。一個更具體的例子是,這個應用程序應該有一個檢查函數,如果一個事件發生,還有一個檢索事件函數,這樣任何其他應用程序都希望檢查事件是否發生在基本應用程序上,它可以檢索事件數據。 – VjS

0

簡單的信息傳遞會做,比方說,JSON超過ØMQ,或即所有的一切,msgpack-rpcprotobuf-remoteCap'n Proto RPC

+0

最後兩個似乎是我想要的。他們也有點難以使用。 – VjS

+0

msgpack應該是最容易啓動的,因爲它不需要代碼生成器。我會說,它比任何脆弱的低級別進程或管道解決方案都容易。代碼是聲明性的,你基本上只寫你所需要的。 –