Portable Data Types (.NET & Java Cache)
To share data among heterogeneous applications, most messaging solutions require building an application based on self-descriptive message text. It becomes the responsibility of the application to use a format for the data so that it can be decoded by the receiving application coding. If you use the XML data format, it encounters performance problems.
In addition, a highly concurrent application environment with several publishers has a greater chance of race conditions causing problems with data integrity. Messaging systems have no inherent relationship between process control messages or messages to multiple destinations’ messaging (queues or topics) capabilities.
Most messaging solutions are actually designed to support multiple protocols, flexibility in terms of message reliability, and more. But when it comes to opposing applications like .NET wishing to share data with Java, you can build heavy heads or interpretation of payloads based message encoding, decoding, text message delivery settings, message correlation, and research databases related background information before acting.
Data Type Portability in .NET and Java Cache
NCache comes with the feature of data type portability for heterogeneous applications through cache, with binary protocol which boosts the performance by reducing traffic and data size with the help of compact serialization. To explain this feature we will take examples of product entities having attributes id, name, quantity, category, etc.
The Data type portability feature will allow .NET client applications to fetch objects of Product class from cache which is inserted by java client applications and will successfully deserialize to .NET Product class and vice versa.
You only have to configure both Product classes as shared types from administrative tools of NCache and map one or more attributes of the class to the other which you want to be shared across the platform, non-mapped attributes will contain default values while being received on the other side. To configure runtime data sharing through the NCache Management Center, see Registering Classes for Portable Data Sharing in the NCache Administrator's Guide.
Class Attributes Mapping
Class Attributes Mapping | |
---|---|
Product Class (C#) | Product Class (java) |
Id | _id |
name | _name |
price | _price |
quantity | _category |
In the table mentioned above, attributes of the class have been mapped with each other; quantity and category have no mapping attributes in the target class so they are left unmapped.
Note
Query Indexes are also shared among shared data types if added to the query index list.
Data Sharing
Data Sharing is a magnificent feature for all those clients who are using both NCache .NET and NCache Java editions but it has some limitations as listed below:
Custom generic types are now supported but generic types cannot be shared.
In case of multiple versions, the user needs to define the default version for Read-Thru/Write-Thru and CacheLoader.
An object registered in Data Sharing MUST be registered in Compact Serialization at the same time.
The following mapping should be considered while serializing a .NET/Java class:
See Also
Runtime Data Sharing
Class Versioning
Self Healing Dynamic Clustering