【问题标题】:What is the purpose of the IsSerializable interface in GWT (regarding the RPC mechanism)GWT中IsSerializable接口的作用是什么(关于RPC机制)
【发布时间】:2011-03-05 03:43:16
【问题描述】:

GWT 中 IsSerializable 接口的用途是什么(关于 RPC 机制)。我从来没有找到一个很好的解释来解释为什么会这样以及为什么默认的 Java Serializable 标记接口不起作用。

【问题讨论】:

    标签: java gwt gwt-rpc


    【解决方案1】:

    SerializableIsSerializable 都可以工作,根据 GWT serialization docs:

    如果满足以下所有条件,则用户定义的类是可序列化的:

    1. 它可以分配给 IsSerializable 或 Serializable,要么是因为它直接实现了这些接口之一,要么是因为它派生自具有此功能的超类
    2. 所有非最终的、非瞬态的实例字段本身都是可序列化的,并且
    3. 从 GWT 1.5 开始,它必须有一个默认(零参数)构造函数(带有任何访问修饰符)或根本没有构造函数。

    一个关键的区别是,出于安全原因,所有Serializable 类都必须包含在一个序列化策略中,该策略在编译时生成,而IsSerializable 类没有这个要求。

    如果您的兴趣纯粹是 GWT,并且您不例如在 Web 应用程序和另一个应用程序之间共享您的模型类,我建议您让您的模型类/DTO 实现 IsSerializable

    【讨论】:

    • 这里是菜鸟外国问题。 “非瞬态实例字段”是什么意思?
    • 对序列化策略的需求是否有任何实际的缺点,例如需要额外的处理时间,...?
    • @chris_l 我没有测量过,但直觉上它应该更快,因为 RPC servlet 不必检查序列化策略文件。当然,在讨论性能时,直觉往往是错误的。
    【解决方案2】:

    如果您与其他程序共享您的对象,请使用 Serializable 因为它是一个标准的java库函数,

    但如果您只想在 GWT 中的服务器和客户端之间传递它,那么请使用 IsSerializable。 它可以帮助您确保无法开始将其传递到不应去的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多