2009-07-24 7 views
5

Estamos creando algunos servicios WCF que inicialmente serán consumidos por clientes .NET pero que en el futuro serán consumidos por clientes Java.La mejor alternativa para el tipo de valor anulable .NET para el servicio consumible de Java

Como tal, queremos evitar el uso de cualquier tipo de datos en la interfaz que Java no admita.

El específico que conocemos es tipos de valores que aceptan valores numéricos.

Una sugerencia es que podemos admitir estos mediante el uso de una cadena para representar, por ejemplo, una int nullable. Y, por lo tanto, la cadena vacía representa nulo; de lo contrario, existe un requisito de que la cadena debe poder analizarse como un int.

¿Alguien puede recomendar una mejor alternativa, o es esto lo que haría?

+2

Esta es una pregunta interesante. Me sorprende que no haya más respuestas. – RichardOD

Respuesta

3

Un enfoque que se utilizó en un proyecto en el que participé hace unos años (también combinación de .NET/Java) fue agregar propiedades de indicador: NumProperty y NumPropertyIsNull. No era particularmente bonito, pero funcionó.

Como nodo lateral, creo que al final no hemos podido encontrar un solo caso de negocio donde la diferencia entre 0 y null realmente importaba.

+1

+1 para "NumProperty y NumPropertyIsNull", -1 para "no poder encontrar un solo caso comercial donde la diferencia entre 0 y null realmente importaba". 0 y nulo son valores diferentes y pueden tener los diferentes medios. Por ejemplo: 0 = recuento total es cero, NULL = recuento total no se conoce. – TcKs

+3

@TcKs: Estoy muy consciente de que 0 an NULL no son lo mismo; Solo dije que en ese proyecto en particular, nos dimos cuenta de que no había una diferencia * práctica *. Eso, por supuesto, variará de un proyecto a otro, pero vale la pena tenerlo en cuenta. Si la diferencia no es importante para la aplicación; entonces quizás no deberías perder tiempo diseñando una solución para ello. En otro proyecto, la diferencia puede ser significativa. –

+0

@Fredrik Mörk: si no hay diferencia entre NULL y 0, ¿por qué admitir NULL en variables/columns/etc ...? – TcKs

5

me había esperanza de que si se puede exponer a un número entero anulable a través de WCF, que cualquier cosa que consume desde Java utilizará los tipos de contenedor - Integer en lugar de int, Byte en lugar de byte etc Por supuesto, estos son los tipos de referencia mientras que los tipos de valor anulables en .NET siguen siendo tipos de valor, por lo que obtendrá más presión de GC y generalmente será menos eficiente, pero no hay mucho que pueda hacer al respecto dado que Java no admite el valor definido por el usuario tipos.

+0

¿Hay algún tipo de Java que pueda verificar qué sucede si genera una clase de proxy para un servicio que expone un int nullable? –

+0

¿Cómo está exponiendo el servicio WCF para comenzar? –

+0

@Jon - No estoy seguro de lo que quiere decir con "cómo" ... –

Cuestiones relacionadas