2009-07-24 10 views
5

Tworzymy niektóre usługi WCF, które będą początkowo używane przez klientów .NET, ale w przyszłości zostaną wykorzystane na klientach Java.Najlepsza alternatywa dla wartości zerowej .NET dla usług konsumpcyjnych Java

W związku z tym nie chcemy używać żadnych typów danych w interfejsie, których Java nie obsługuje.

Specyfika jaką znamy to typy wartości zerowych.

Jedną z sugestii jest to, że możemy je wspierać, używając ciągu znaków do przedstawienia na przykład wartości zerowej. A pusty ciąg znaków reprezentuje zatem wartość NULL, w przeciwnym razie istnieje wymóg, aby łańcuch mógł być parsowalny jako int.

Czy ktoś może polecić lepszą alternatywę, czy może to zrobić?

+2

To interesujące pytanie. Jestem zaskoczony, że nie ma więcej odpowiedzi. – RichardOD

Odpowiedz

3

Jedną z metod użytych w projekcie, w którym byłam zaangażowana kilka lat temu (również połączenie .NET/Java) było dodanie właściwości wskaźnika: NumProperty i NumPropertyIsNull. Nie było szczególnie ładne, ale zadziałało.

jako węzeł z boku, myślę, że w końcu nie byliśmy w stanie znaleźć jeden pojedynczy przypadek biznesowy, gdzie różnica między 0 i null właściwie znaczenia.

+1

+1 dla "NumProperty i NumPropertyIsNull", -1 dla "nie można znaleźć jednego przypadku biznesowego, w którym różnica między 0 a null rzeczywiście miała znaczenie". 0 i zero są różnymi wartościami i mogą mieć różne środki. Na przykład: 0 = całkowita liczba to zero, NULL = całkowita liczba nie jest znana. – TcKs

+3

@TcKs: Jestem świadomy, że 0 an NULL nie są takie same; Powiedziałem tylko, że w tym konkretnym projekcie zdaliśmy sobie sprawę, że nie było różnicy * praktycznej *. To oczywiście będzie różnić się w zależności od projektu, ale warto wziąć to pod uwagę. Jeśli różnica nie ma znaczenia dla wniosku; wtedy nie powinieneś spędzać czasu na projektowaniu rozwiązania. W innym projekcie różnica może być znaczna. –

+0

@Fredrik Mörk: Jeśli nie ma różnicy między wartościami NULL i 0, dlaczego obsługa NULL w zmiennych/columns/etc ...? – TcKs

5

ja bym nadzieję że jeśli można wystawiać zerowalne całkowitą poprzez WCF, że cokolwiek zużywa że z Java użyje typów Owijarki - Integer zamiast int, Byte zamiast byte itp Oczywiście są to typy referencyjne mając na uwadze, że wartości zerowalne w .NET wciąż są typami wartości, więc będziesz mieć więcej presji GC i generalnie będzie to mniej wydajne, ale niewiele można z tym zrobić, biorąc pod uwagę, że Java nie obsługuje wartości zdefiniowanych przez użytkownika typy.

+0

Czy są jacyś użytkownicy Javy, którzy mogą sprawdzić, co się stanie, jeśli wygenerujesz klasę proxy dla usługi, która ujawnia int bez znaczenia? –

+0

W jaki sposób ujawniasz usługę WCF na początek? –

+0

@Jon - Jestem pewien, co masz na myśli mówiąc "jak" ... –

Powiązane problemy