如果 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 或 一些.
我有一个 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 或 一些.