如果 WCF 服务 return 选项类型的最佳方式怎么办

What if the best way to return Option types by WCF service

我有一个 WCF 方法可以在数据库中搜索记录,return Some(object) 如果记录存在,None 如果不存在。

如我所见,我无法通过 WCF 调用 returns Type option 的方法(出现异常)。

以这种方式在 F# 中设计 WCF 服务的最佳方法是什么?

比如我可以return清空Type

Person
  {  
      Name = ""
      Age = 0
      // ....
  }

如果记录在数据库中不存在,但我正在寻找最好的想法...

WCF 服务,就像 RESTful 服务一样,公开了一个可以被远程客户端访问的 API。据我们所知,这些客户端甚至不需要用 .NET 编写,但可以是 Java 客户端,或者用完全不同的语言编写。

SOAP 和 REST 的全部意义在于实现这些互操作性场景,但这也意味着服务可能 share schema and contract, but not class(或任何其他类型)。

几年前,我写了一篇文章叫At the Boundaries, Applications are Not Object-Oriented,但是你可以拿那篇文章,把Object-Oriented 具有 功能: 在边界处,应用程序无法正常工作(编程)

即使您可以以某种方式在 WCF 中序列化选项类型,建议您不要这样做,因为客户可能不理解它的含义,或者无法处理以任何有意义的方式序列化格式。

最后,选项可以看作是一个约束集合,约束条件是它可以容纳 0 个或 1 个元素.当您通过可互操作的服务 return 数据时,您无法对 约束 进行建模,但您仍然可以 return collection/array.

这就是我有时做的事情:return 没有元素或只有一个元素的数组。大多数客户都明白这一点。

构建 RESTful 服务时,当资源不存在时,您可以更好地选择 returning 404(未找到),但是我不确定是否有使用 SOAP 执行此操作的好方法。

但是,使用 SOAP,您可以使用 XSD 定义数据结构,因此您可以使用 xsd.choice 来建模数据结构,该数据结构可以是 none一些.