【问题标题】:Best alternative for .NET nullable value type for Java-consumable serviceJava 可消费服务的 .NET 可空值类型的最佳替代方案
【发布时间】:2009-07-24 07:59:17
【问题描述】:

我们正在创建一些 WCF 服务,这些服务最初将由 .NET 客户端使用,但未来将由 Java 客户端使用。

因此,我们希望避免在接口中使用 Java 不支持的任何数据类型。

我们知道的具体一种是可空值类型。

一个建议是我们可以通过使用字符串来表示支持这些,例如,可以为空的 int。因此空字符串表示null,否则要求字符串必须可解析为int。

谁能推荐一个更好的选择,或者你会这样做吗?

【问题讨论】:

  • 这是一个有趣的问题。我很惊讶没有更多的答案。

标签: java .net wcf nullable


【解决方案1】:

我希望希望如果您可以通过 WCF 公开一个可为空的整数,那么任何使用 Java 的东西都将使用包装器类型 - Integer 而不是 intByte byte 等。当然,这些是引用类型,而 .NET 中的可为空值类型仍然是值类型,因此您将获得更大的 GC 压力并且通常效率会降低,但您无能为力鉴于 Java 不支持用户定义的值类型。

【讨论】:

  • 如果您为公开可空 int 的服务生成代理类,是否有任何 Java 人员可以验证会发生什么?
  • 你是如何公开 WCF 服务的?
  • 嗯,作为 REST API,还是使用 SOAP,还是其他什么?据我了解,WCF 可以通过多种不同方式公开服务——尽管我自己没有太多 WCF 经验。 (Marc Gravell 可能会提供更多帮助。)它还取决于在 Java 端使用服务的内容——例如轴。
  • 好的 - 我们正在使用 SOAP 公开它。但是,我们也可以将其公开为 RESTful 服务。
  • 好的。那么 WCF 如何在 SOAP 中公开可空值类型呢?我建议您尝试使用可空值类型公开一个简单的服务,然后针对它运行 Axis 看看会发生什么。
【解决方案2】:

我几年前参与的一个项目(也是 .NET/Java 组合)中使用的一种方法是添加指标属性:NumPropertyNumPropertyIsNull。它不是特别漂亮,但它确实有效。

作为一个辅助节点,我认为最终我们无法找到一个商业案例,其中0null 之间的区别实际上很重要。

【讨论】:

  • +1 表示“NumProperty 和 NumPropertyIsNull”,-1 表示“无法找到一个业务案例,其中 0 和 null 之间的差异实际上很重要”。 0 和 null 是不同的值,可以有不同的含义。例如:0 = 总计数为零,NULL = 总计数未知。
  • @TcKs:我很清楚 0 和 NULL 是不一样的;我只是说在那个特定的项目中,我们意识到没有实际的区别。这当然会因项目而异,但值得考虑。如果差异对应用程序无关紧要;那么您也许不应该花时间为它设计解决方案。在另一个项目中,差异可能很大。
  • @Fredrik Mörk:如果NULL和0没有区别,为什么在变量/列/等中支持NULL...?
  • @TcKs:这正是我的观点......首先要弄清楚在应用程序中区分 NULL 和 0 是否有意义。如果没有,请不要花时间解决它。
猜你喜欢
  • 2010-10-26
  • 2022-06-17
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-07
相关资源
最近更新 更多