• Webinars
  • Docs
  • Download
  • Blogs
  • Contact Us
Show / Hide Table of Contents
  • Administrator's Guide
  • NCache Architecture
    • Cache Topologies
    • Cache Cluster
    • Local Cache
    • Cache Client
    • Client Cache
    • Data Load Balancing
    • Cache Server Backward Compatibility
    • Client Backward Compatibility
    • Eviction
    • Indexing
    • Runtime Data Sharing
    • Portable Data Types
    • Class Versioning
    • IP Binding with Multiple NICs
    • Graceful Node Down
    • Separate Cache Host Process
    • Self Healing Dynamic Clustering
  • Configuring Caches
    • Create Cache
      • Creating Local Cache
        • Create New Cache
        • Add Existing Cache
      • Creating Clustered Cache
        • Create New Cache Cluster
        • Add Existing Cache Cluster
    • Remove Cache
    • Clear Cache Contents
    • Adding Server Node in Cache Cluster
    • Removing Server Node from Cache Cluster
    • Configuring Basic Cache Settings
      • Cache Size
      • Cache Isolation Levels
      • Cache Data Expiration
      • Cache Data Format
    • Configuring Cache Cluster Settings
      • Ports
      • Operation Timeout
      • Static Replication Interval
      • Connection Retries
      • Retry Interval
    • Add Test Data to Cache
    • Deploy Providers
    • Configuring Query Indexes
    • Registering Classes for Compact Serialization
      • Registering Non-Generic Classes
      • Unregistering Non-Generic Classes
      • Registering Generic Classes
      • Registering Generic Classes Using Generic Type Handler
    • Registering Classes for Portable Data Sharing
    • Configuring Data Source Providers
      • Read-Through Provider
      • Write-Through Provider
      • Write-Through Provider for Write-Behind Operations
    • Configuring Cache Startup Loader
    • Configuring Cache Level Events
    • Configuring Cache Activity Events
    • Configuring Eviction Policy
    • Configuring Compression
    • Configuring Email Notifications
    • Binding Cluster and Client/Server IP with Multiple NICs
      • Binding Cluster with a Dedicated IP
      • Binding Client/Server with a Dedicated IP
    • Configuring Heartbeat
    • Configuring MapReduce
    • Configuring Communication Reliability
    • Auto Start Cache on Boot
    • Nagling
    • Dual Socket
    • Error Logging
    • Configuration Files
      • Client Side Configurations
        • Client Config
        • EFCaching Config
      • Server Side Configurations
        • Cache Config
        • Bridge Config
        • Security Config
      • Cache Server Configuration
  • Management Operations
    • Start Cache
    • Stop Cache
    • Restart Cache
    • Manage Cache Service on a Server Node
    • Apply Configuration
    • Hot Apply Configuration
    • Reset Configuration
    • Data Load Balancing
  • Configuring Cache Clients
    • Adding Client Node in Cluster
    • Removing Client Node from Cluster
    • Configuring Client Node Settings
    • Creating Client Cache
    • Enable Client Cache on Client Nodes
    • Disable Client Cache on Client Nodes
    • Removing Client Cache
    • Configuring Client Cache Settings
  • Configuring Security
    • Configuring Security for Cache Management
    • Configuring Security for Cache
    • Configuring Security for Client Nodes
    • Configuring Encryption for Cache
    • Configure SSL/TLS Encryption in NCache
  • Configuring Bridge for WAN Replication
    • Creating Clustered Bridge
    • Adding Clustered Caches to Bridge
    • Configuring Bridge Settings
    • Configuring Conflict Resolver
    • Changing Cache Syncronization Modes
    • Configuring Master Cache
    • Force State Transfer
    • Connect/Disconnect Cache in Bridge
    • Remove Cache from Bridge
    • Bridge Management
  • NCache on Docker
    • Using NCache Docker Images
    • Customize NCache Dockerfile
  • Monitoring NCache
    • Cache Counters
    • Monitoring Caches using NCache Manager
      • Changing Management Port of Cache Node
      • Configuring Counters to Display
      • Browse Cache Statistics
      • Cluster Health
      • Monitoring Cache Clusters using NCache Email Alerts
    • Monitoring Caches using NCache Monitor
      • Monitoring with Built-In Dashboard
      • Monitoring with Custom Dashboard
    • Monitoring Bridge using NCache Manager
    • Monitoring NCache using Windows PerfMon Tool
      • Monitoring Cache Server Counters Using PerfMon
      • Monitoring Cache Client Counters Using PerfMon
      • Monitoring Bridge Counters Using PerfMon
    • Logging in NCache
      • NCache Log Viewer
      • NCache Monitor Logging
      • Performance Counters Logging
      • Windows Event Logging
      • Email Notifications on NCache Events
      • Cache Server Logging
      • Client Side API Logging
      • Cache Event IDs
    • Troubleshooting NCache Monitoring
      • Computer Name Not Found
      • Diskperf Not Installed
      • No READ Access to the Perflib Subkeys
      • Unable to Connect to Remote Server
    • IPV6 Support
  • Upgrading NCache Versions
    • Live Upgrade NCache Version
    • Upgrade NCache Version Offline
  • Apply Windows Patches on NCache Server

Portable Data Types (.NET & Java)

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, research data bases related background information before acting.

NCache comes with the feature of data types 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 class to the other which you want to be shared across platform, non-mapped attributes will contain default value while being received on the other side. To configure runtime data sharing through NCache Manager, see Registering Classes for Portable Data Sharing in NCache Administrator's Guide.

Class Attributes Mapping
Product Class (C#) Product Class (java)
Id _id
name _name
price _price
quantity
_category

In the above mentioned table, attributes of class have been mapped with each other; quantity and category have no mapping attributes in the target class so they are left unmapped.

Query Indexes are also shared among shared data types if added in query index list.

Data Sharing

Data Sharing is a very magnificent feature for all those clients who are using both NCache .NET and NCache Java editions but have some limitation as listed below:

  • Custom generic types are now supported but generic types cannot be shared.

  • In case of multiple versions, user needs to define 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:

Back to top Copyright © 2017 Alachisoft