gpt4 book ai didi

java - Martin Fowler 在 REST API 中所说的 "avoid automatic deserialization"是什么意思?

转载 作者:行者123 更新时间:2023-11-30 07:12:33 25 4
gpt4 key购买 nike

马丁·福勒 (Martin Fowler) 说 avoid automatic deserialization在 API 中:

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形式接收所有信息,中间没有任何“转换器”?

我所说的“转换器”是指一些类型适配器,例如 GsonBuilder 中的适配器。

最佳答案

通过自动反序列化,他意味着 JSON 对象有一个预定义的硬结构,用于检索对象本身。

但这适用于大多数用例。

预定义结构的示例有 Java 类或 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 和 ArrayList 组合(或解析 String 本身)来反序列化对象,这样即使服务器生成不同的内容(例如新字段)也不会客户端需要进行更改。新客户可以利用新领域。

在硬结构中,由于模型类的共享结构,生产者和消费者都强耦合,因此生产者中的任何更改都必须反射(reflect)在消费者中。

在我工作的一些SOA项目中,我们过去常常在所有请求/响应对象中添加一些额外的字段以供将来使用,这样就不需要更改客户在生产中运行以满足新客户的需求。这些字段有一些随机名称,例如 customParam1 到 customParam5,这些字段的含义随文档一起发布。这些名称并不直观,因为我们在共享结构或模型上耦合了生产者和消费者。

关于java - Martin Fowler 在 REST API 中所说的 "avoid automatic deserialization"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com