2009-07-24 4 views
5

Nous créons des services WCF qui seront initialement utilisés par les clients .NET mais qui seront à l'avenir consommés par les clients Java. En tant que tel, nous voulons éviter d'utiliser des types de données dans l'interface que Java ne prend pas en charge.Meilleure alternative pour le type de valeur null .NET pour le service Java-consommable

Le type spécifique que nous connaissons est des types de valeur NULL.

Une suggestion est que nous pouvons les prendre en charge en utilisant une chaîne pour représenter, par exemple, un intensible null. Et la chaîne vide représente donc null, sinon il faut que la chaîne soit analysable comme un int.

Quelqu'un peut-il recommander une meilleure alternative, ou est-ce que vous feriez?

+2

Ceci est une question intéressante. Je suis surpris qu'il n'y ait pas plus de réponses. – RichardOD

Répondre

3

Une approche qui a été utilisée dans un projet auquel j'ai participé il y a quelques années (également la combinaison .NET/Java) consistait à ajouter des propriétés d'indicateur: NumProperty et NumPropertyIsNull. Ce n'était pas particulièrement joli, mais ça a marché.

En tant que nœud secondaire, je pense qu'à la fin, nous n'avons pas été en mesure de trouver une seule analyse de rentabilisation où la différence entre 0 et null comptait réellement.

+1

+1 pour "NumProperty et NumPropertyIsNull", -1 pour "impossible de trouver une seule analyse de rentabilisation pour laquelle la différence entre 0 et null a réellement compté". 0 et null sont des valeurs différentes et peuvent avoir les différents moyens. Par exemple: 0 = le nombre total est zéro, NULL = le nombre total est inconnu. – TcKs

+3

@TcKs: Je suis bien conscient que 0 an NULL ne sont pas les mêmes; J'ai seulement dit que dans ce projet particulier, nous avons réalisé qu'il n'y avait pas de différence * pratique *. Cela va bien sûr varier d'un projet à l'autre, mais cela vaut la peine d'en tenir compte. Si la différence n'a pas d'importance pour l'application; alors vous ne devriez peut-être pas passer du temps à concevoir une solution pour cela. Dans un autre projet, la différence peut être significative. –

+0

@Fredrik Mörk: S'il n'y a pas de différence entre NULL et 0, pourquoi soutenir NULL dans les variables/colonnes/etc ...? – TcKs

5

J'avais espoir que si vous pouvez exposer un entier annulable par WCF, que tout consumait que de Java utilisera les types wrapper - Integer au lieu de int, Byte au lieu de byte etc. Bien sûr, ce sont des types de référence Alors que les types de valeur nullable dans .NET sont toujours des types de valeur, vous obtiendrez plus de pression GC et cela sera généralement moins efficace, mais vous ne pouvez pas faire grand-chose étant donné que Java ne supporte pas la valeur définie par l'utilisateur les types.

+0

Existe-t-il des gars Java capables de vérifier ce qui se passe si vous générez une classe proxy pour un service qui expose un int nullable? –

+0

Comment exposes-tu le service WCF pour commencer? –

+0

@Jon - Je suis sûr de ce que vous entendez par "comment" ... –

Questions connexes