我想要一個C++客戶端應用程序,它維護來自Java服務器的對象的緩存。這些對象需要兼容。我明白,Gemfire以可序列化的格式維護它們。這意味着Java類需要等同於C++類。C++客戶端中的緩存Java對象
是否有一種常見的做法是在獨立於語言的規範中定義類結構,並生成可序列化到PDX或Gemfire使用的任何其他表單的等效Java和C++類?
問候,
佳日
我想要一個C++客戶端應用程序,它維護來自Java服務器的對象的緩存。這些對象需要兼容。我明白,Gemfire以可序列化的格式維護它們。這意味着Java類需要等同於C++類。C++客戶端中的緩存Java對象
是否有一種常見的做法是在獨立於語言的規範中定義類結構,並生成可序列化到PDX或Gemfire使用的任何其他表單的等效Java和C++類?
問候,
佳日
PDX之前我用來創建我的域的語言無關的表示,並同時生成Java,C++和使用DataSerializable .NET類。但是,PDX在大多數情況下並不需要這些。我附上下面的示例配置。
如果遇到您使用的是Java不支持的類型,你還沒有訴諸生成序列化,但你可以專注在序列化一個類型(見http://gemfire.docs.pivotal.io/pdf/pivotal-gemfire-ug.pdf
考慮產生564頁您自己的序列化程序,因爲自動序列化程序可能會產生拖動,這通常是不需要的,但如果這樣做,請執行以下操作:http://data-docs-samples.cfapps.io/docs-gemfire/latest/javadocs/japi/com/gemstone/gemfire/DataSerializer.html
這裏是使用pdx auto序列化器:
<!-- Cache configuration configuring auto serialization behavior -->
<cache>
<pdx>
<pdx-serializer>
<class-name>com.gemstone.gemfire.pdx.ReflectionBasedAutoSerializer
</class-name>
<parameter name="classes">
<string>com.company.domain.DomainObject</string>
</parameter>
</pdx-serializer>
</pdx>
...
</cache>
如果我回答你的問題,請檢查「已回答」。謝謝。
如果我有一個類MyClass {int myID;字符串myName}在Java中,我不能有MyClass {字符串myName; int myID}在C++中。即使Auto PDX序列化,它們也需要匹配。我可以使用什麼與語言無關的表示來定義Java和C++類?我更感興趣的是讓兩種語言的課堂結構正確。系列化速度對我來說不是一個問題。 – Yash
考慮到具體情況,考慮將Java POJO用作服務器端表示形式,然後在C++本機客戶機上覆蓋Employee PDXSerializer'toData'和'fromData'以處理不同的排序和/或類型(請參閱http:// gemfire .docs.pivotal.io /文檔-的GemFire/gemfire_nativeclient/CPP-緩存-API/using_pdxserializer.html)。如果您必須具有語言中立性,請將所有內容存儲爲字符串並覆蓋序列化程序中的訂單/類型。爲了簡化和自動化,我使用了代碼生成器來從對象元數據生成序列化器,並使其成爲CI的一部分。 –
你能推薦一個代碼生成器嗎?你使用了哪一個? – Yash