Martin Fowler 在 REST API 中所说的 "avoid automatic deserialization" 是什么意思?
What Martin Fowler meant by "avoid automatic deserialization" in a REST API?
Martin Fowler 在 API 中对 avoid automatic deserialization 说:
I prefer to avoid automatic deserialization altogether. Automatic
deserialization usually falls into the WSDL pitfall of coupling
consumers and producers by duplicating a static class structure in
both.
这是什么意思?
是否在每个Rest Service中接收所有信息为JSON,中间没有任何"converter"?
"converter" 我的意思是一些 类型的适配器 ,比如 GsonBuilder。
通过自动反序列化,他的意思是 JSON
对象有一个预定义的硬结构,用于检索对象本身。
然而,这适用于大多数用例。
预定义结构的示例是 Java Class or XML XSD
。
Automatic deserialization usually falls into the WSDL pitfall of coupling consumers and producers by duplicating a static class structure in both.
他这里的意思是用类反序列化和用WSDL
序列化或反序列化对象是一样的
与 类 和 XSD 文档的硬结构相反,JSON 更加宽松,因为它基于 Javascript,允许修改在其生命周期的任何时间点定义对象。
所以另一种方法是在 Java 组合中使用 HashMap and ArrayList
(或解析 String 本身)来反序列化对象,即使服务器产生不同的东西(如新字段)客户端不需要任何更改。新客户可以利用新领域。
在硬结构中,由于模型的共享结构,生产者和消费者都强耦合 类,生产者的任何变化都必须反映在消费者中。
在我工作的一些 SOA
项目中,我们过去常常在所有 request/response
对象中添加一些额外的字段以供将来使用,这样就不需要更改客户端 运行 在生产中以满足新客户的需求。这些字段有一些随机名称,如 customParam1 to customParam5
,其中这些字段的含义随文档一起发布。这些名称并不直观,因为我们将生产者和消费者耦合到共享结构或模型上。
Martin Fowler 在 API 中对 avoid automatic deserialization 说:
I prefer to avoid automatic deserialization altogether. Automatic deserialization usually falls into the WSDL pitfall of coupling consumers and producers by duplicating a static class structure in both.
这是什么意思?
是否在每个Rest Service中接收所有信息为JSON,中间没有任何"converter"?
"converter" 我的意思是一些 类型的适配器 ,比如 GsonBuilder。
通过自动反序列化,他的意思是 JSON
对象有一个预定义的硬结构,用于检索对象本身。
然而,这适用于大多数用例。
预定义结构的示例是 Java Class or XML XSD
。
Automatic deserialization usually falls into the WSDL pitfall of coupling consumers and producers by duplicating a static class structure in both.
他这里的意思是用类反序列化和用WSDL
序列化或反序列化对象是一样的
与 类 和 XSD 文档的硬结构相反,JSON 更加宽松,因为它基于 Javascript,允许修改在其生命周期的任何时间点定义对象。
所以另一种方法是在 Java 组合中使用 HashMap and ArrayList
(或解析 String 本身)来反序列化对象,即使服务器产生不同的东西(如新字段)客户端不需要任何更改。新客户可以利用新领域。
在硬结构中,由于模型的共享结构,生产者和消费者都强耦合 类,生产者的任何变化都必须反映在消费者中。
在我工作的一些 SOA
项目中,我们过去常常在所有 request/response
对象中添加一些额外的字段以供将来使用,这样就不需要更改客户端 运行 在生产中以满足新客户的需求。这些字段有一些随机名称,如 customParam1 to customParam5
,其中这些字段的含义随文档一起发布。这些名称并不直观,因为我们将生产者和消费者耦合到共享结构或模型上。