2009-07-24 7 views
5

Wir erstellen einige WCF-Dienste, die zunächst von .NET-Clients verwendet werden, in Zukunft aber für Java-Clients verwendet werden.Beste Alternative für .NET Nullwerttyp für Java-Consumable-Dienst

Als solche wollen wir vermeiden, irgendwelche Datentypen in der Schnittstelle zu verwenden, die Java nicht unterstützt.

Die spezifische, die wir kennen, ist Nullable Werttypen.

Ein Vorschlag ist, dass wir diese unterstützen können, indem wir einen String verwenden, der zum Beispiel einen nullbaren Int darstellt. Eine leere Zeichenkette stellt daher null dar, andernfalls muss die Zeichenkette als int analysierbar sein.

Kann jemand eine bessere Alternative empfehlen, oder würden Sie das tun?

+2

Dies ist eine interessante Frage. Ich bin überrascht, dass es keine weiteren Antworten gibt. – RichardOD

Antwort

3

Ein Ansatz, der in einem Projekt verwendet wurde, an dem ich vor einigen Jahren beteiligt war (auch .NET/Java-Kombination), war das Hinzufügen von Indikatoreigenschaften: NumProperty und NumPropertyIsNull. Es war nicht besonders hübsch, aber es funktionierte.

Als ein Nebenknoten denke ich, dass wir am Ende keinen einzigen Geschäftsfall finden konnten, bei dem der Unterschied zwischen 0 und null tatsächlich von Bedeutung war.

+1

+1 für "NumProperty und NumPropertyIsNull", -1 für "nicht in der Lage, einen einzelnen Geschäftsfall zu finden, bei dem der Unterschied zwischen 0 und Null tatsächlich eine Rolle spielte". 0 und null sind unterschiedliche Werte und können die verschiedenen Mittel haben. Zum Beispiel: 0 = Gesamtanzahl ist Null, NULL = Gesamtanzahl ist nicht bekannt. – TcKs

+3

@TcKs: Ich bin mir bewusst, dass 0 und NULL nicht dasselbe sind; Ich habe nur gesagt, dass wir bei diesem speziellen Projekt festgestellt haben, dass es keinen * praktischen * Unterschied gibt. Das wird natürlich von Projekt zu Projekt variieren, aber es ist es wert, berücksichtigt zu werden. Wenn der Unterschied für die Anwendung nicht wichtig ist; Dann sollten Sie vielleicht keine Zeit damit verbringen, eine Lösung dafür zu entwerfen. In einem anderen Projekt kann der Unterschied signifikant sein. –

+0

@Fredrik Mörk: Wenn kein Unterschied zwischen NULL und 0 ist, warum NULL in Variablen/Spalten/etc ... unterstützen? – TcKs

5

Ich würde Hoffnung, dass, wenn Sie einen Nullable-integer durch WCF belichten kann, dass alles, was raubend, dass von Java die Wrapper-Typen verwenden - Integer statt int, Byte statt byte usw. Natürlich sind diese Referenztypen sind Während NULL-Werttypen in .NET immer noch Werttypen sind, erhalten Sie mehr GC-Druck und es wird im Allgemeinen weniger effizient sein, aber es gibt nicht viel, was Sie tun können, da Java keinen benutzerdefinierten Wert unterstützt Arten.

+0

Gibt es da draußen Java-Typen, die überprüfen können, was passiert, wenn Sie eine Proxy-Klasse für einen Service generieren, der ein NULL-fähiges int verfügbar macht? –

+0

Wie stellen Sie den WCF-Dienst für den Anfang bereit? –

+0

@Jon - Ich bin sicher, was Sie mit "wie" meinen ... –

Verwandte Themen