De nombreuses organisations utilisent aujourd'hui diverses technologies .NET et Java pour développer différentes applications à fort trafic. Dans le même temps, ces organisations ont besoin de partager des données lors de l'exécution entre les applications .NET et Java.
Une façon de partager des données consiste à utiliser la base de données, mais cela est lent et ne s'adapte pas très bien non plus. Une bien meilleure approche consiste à utiliser un cache distribué en mémoire comme magasin de données commun entre plusieurs applications. C'est rapide et évolue également de manière linéaire.
Comme vous le savez, les types Java et .NET ne sont pas compatibles. Par conséquent, vous finissez par transformer les données en XML pour les partager. De plus, la plupart des caches distribués ne fournissent aucun mécanisme intégré pour le partage de données entre les applications .NET et Java ou ne fournissent que le partage de données basé sur XML. Si un cache ne fournit pas de mécanisme de partage de données intégré, vous devez définir le schéma XML et utiliser une sérialisation XML tierce pour construire et lire toutes les données XML.
Mais, Sérialisation XML est un processus extrêmement lent et gourmand en ressources. La sérialisation XML implique la validation XML, l'analyse, les transformations qui entravent vraiment les performances de l'application et utilisent des ressources supplémentaires en termes de mémoire et de CPU.
Cache distribué by design est utilisé pour améliorer les performances et l'évolutivité de votre application. Il permet à vos applications de mettre en cache vos données d'application et de réduire les déplacements coûteux de la base de données qui causent un goulot d'étranglement d'évolutivité. De plus, le partage de données basé sur XML va à l'encontre de ces objectifs de performances et d'évolutivité pour votre application. Si vous augmentez la charge des transactions sur votre application, vous verrez que la manipulation XML finit par devenir un goulot d'étranglement des performances.
Une bien meilleure méthode consiste à partager les données entre les applications .NET et Java au niveau binaire, sans avoir à effectuer de transformations XML. NCache est un cache distribué qui vous fournit des applications .NET et Java de partage de données d'exécution avec une sérialisation binaire.
Comment la NCache fournir le partage de données d'exécution entre .NET et Java ?
Eh bien, avant cela, vous devez comprendre pourquoi votre sérialisation binaire native .NET et Java n'est pas compatible. Java et .NET ont leurs propres sérialisations binaires qui interprètent les objets à leur manière et qui sont totalement différentes les unes des autres et ont également des systèmes de types différents. De plus, le flux d'octets sérialisé d'un objet inclut également les détails du type de données sous forme de nom complet qui sont à nouveau différents dans .NET et Java. Ceci, bien sûr, entrave également la compatibilité des types de données entre .NET et Java.
Pour gérer cette incompatibilité, NCache a implémenté sa propre sérialisation binaire interopérable qui est commune à la fois pour .NET et Java. NCache sérialisation binaire interopérable identifie les objets en fonction d'ID de type cohérents sur .NET et Java au lieu d'un nom complet spécifique à la technologie. Cette approche fournit non seulement l'interopérabilité, mais réduit également la taille du flux d'octets généré. Deuxièmement, NCache la sérialisation binaire interopérable implémente un protocole personnalisé qui génère un flux d'octets dans un format que ses implémentations .NET et Java peuvent facilement interpréter.
Voici un exemple de NCache config.ncconf avec mappage de classe interopérable de données :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<cache-config name="InteropCache" inproc="False" config-id="0" last-modified="" type="clustered-cache" auto-start="False"> … <data-sharing> <type id="1001" handle="Employee" portable="True"> <attribute-list> <attribute name="Age" type="int" order="1"/> <attribute name="Name" type="java.lang.String" order="2"/> <attribute name="Salary" type="long" order="3"/> <attribute name="Age" type="System.Int32" order="4"/> <attribute name="Name" type="System.String" order="5"/> <attribute name="Salary" type="System.Int64" order="6"/> </attribute-list> <class name="jdatainteroperability.Employee:0.0" handle-id="1" assembly="jdatainteroperability.jar" type="java"> <attribute name="Age" type="int" order="1"/> <attribute name="Name" type="java.lang.String" order="2"/> <attribute name="Salary" type="long" order="3"/> </class> <class name="DataInteroperability.Employee:1.0.0.0" handle-id="2" assembly="DataInteroperability, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" type="net"> <attribute name="Age" type="System.Int32" order="1"/> <attribute name="Name" type="System.String" order="2"/> <attribute name="Salary" type="System.Int64" order="3"/> </class> </type> </data-sharing> … </cache-config> |
En conséquence, NCache est capable de sérialiser un objet .NET et de le désérialiser en Java tant qu'une classe Java compatible est disponible. Cette sérialisation au niveau binaire est plus compacte et beaucoup plus rapide que n'importe quelle transformation XML.
Enfin, la meilleure partie de tout cela est que vous n'avez pas besoin d'écrire de code de sérialisation ni de modifier le code de votre application pour utiliser cette fonctionnalité dans NCache. NCache a implémenté un mécanisme de génération de code d'exécution, qui génère le code de sérialisation et de désérialisation en mémoire de vos classes interopérables au moment de l'exécution, et utilise le formulaire compilé pour qu'il soit ultra rapide.
En résumé, en utilisant NCache vous pouvez faire évoluer et augmenter les performances de votre application en évitant la sérialisation XML extrêmement lente et gourmande en ressources.
Alors, téléchargez une version d'essai complète de 60 jours de NCache Enterprise et essayez-le par vous-même.