2010-06-14 16 views
6

我尋找狀IDL一個(或任何)翻譯,其把一個DOM-或JSON狀文檔定義成類其中類IDL解析器將文檔定義轉換爲強大的類?

  • 從兩個C++和Python訪問,相同的應用程序
  • 內公開文檔屬性爲整數,浮點數,字符串,二進制blob和複合數組:數組,字符串字典(兩者都可嵌套)更改歷史記錄以啓用撤消/重做操作
  • 可序列化和JSON(也可以是某種二進制格式)
  • 允許在磁盤上保存大數據塊,僅按需加載零件
  • 提供無阻塞線程安全的讀/寫訪問交換數據與實時線程
  • 允許在不同的工藝多個編輯(或者甚至在不同的機器)來查看和修改文檔

被最接近到目前爲止是攪拌機2.5 DNA/RNA系統中的事,但它不作爲單獨的圖書館提供,並且記錄不完整。

我最重要的是要確保這樣一個lib還不存在,所以我知道我的時間不會浪費,當我開始設計和編寫這樣的事情。它應該爲編寫UI組件編寫一個很好的基礎。

+1

提出這個問題幾個月後的其他信息:我爲上述問題提出了自己的解決方案。這裏是項目總結:「Datenwerk是一個MIT授權的用於GNU/Linux和Windows的C庫,旨在爲需要模型/視圖/控制器模式的應用程序提供數據/模型API,最適合用於音樂,3D ,矢量圖形,場景,視頻和遊戲編輯,包括Python的綁定。「該項目位於bitbucket.org/paniq/datenwerk – paniq 2011-06-06 16:51:43

回答

0

SWIG不符合您的所有要求,但確實使接口C++ < - > python更容易。

+0

我使用boost.python進行接口,主要是因爲它是成功包裝幾乎所有C++代碼的唯一包裝。 SWIG需要太多的調整來舒服。 – paniq 2010-06-14 20:51:02

+0

上次我使用SWIG的時間已經過去了,那是紅寶石。我並不知道boost.python。整潔 – neoneye 2010-06-14 20:53:54

1

ICE是我能想到的最接近的產品。我不知道你是否可以使用ICE對磁盤進行序列化,但我想不出爲什麼它不會。問題是成本$$$。我沒有親自與他們談判許可證,但ICE是我所知道的這個領域最大的玩家。

然後你有Pyro只適用於Python的分佈式對象。

在Objective-C(用於iPhone/iPad的開發,其吸恕我直言N/A)分佈式對象

有一些C++分佈式對象庫,但他們大多是死的,無法使用(CORBA想到)。

我可以告訴你,這種技術會有很多需求。我一直在研究一些序列化和遠程對象的東西,因爲現成的解決方案可能非常昂貴。

至於開源框架,以幫助您內部開發,我建議使用boost :: asio的異步線程安全讀/寫和串行化boost :: serialization鏈。我在JSON技術方面沒有非常好的閱讀,但this看起來像一個有趣的閱讀。

我希望免費提供的東西已經存在這個網絡/系列化膠水,這麼多項目可以從中受益。

+0

還沒有仔細看過ICE,但它似乎是GPL,這對我來說很好。 Pyro是一個不錯的主意,但只解決了一個問題。感謝您的其他建議。我已經使用jsoncpp了,會看看boost.asio。 – paniq 2010-06-15 05:24:53

+0

我看着ICE,它似乎也只是解決了網絡問題,它在我的列表中排名最低。 – paniq 2010-06-15 05:36:21

+0

稍微挖一下就會發現ICE可以使用Evictors將數據庫「凍結」到數據庫中: http://www.zeroc.com/doc/Ice-3.4.1/manual/Freeze.40.3.html#142337 – manifest 2010-06-15 18:13:58

相關問題