java 序列化什么时候用_Java序列化-优点和缺点,使用还是避免?[关闭]

序列化在实践中很少使用。

如前所述,序列化最常见的用例是将对象作为Blob存储在会话数据库中。这很好地工作有两个原因:会话往往是短暂的,并且会话数据库如何不知道如何将任意对象映射到关系模型。

对于需要长时间保留的数据(例如Amazon购物车),最佳实践是将这些数据存储在数据库中。

会话持久性机制可确保具有活动会话的用户返回到同一服务器。仅当服务器发生故障并且用户被重定向到新服务器时,才访问会话数据库。新服务器检测到活动的会话,但未在内存中找到它,因此它尝试从会话数据库中检索它,以尝试向用户提供无缝体验。

这种方法有两个问题:

首先,将会话数据刷新到会话数据库是一个缓慢的过程。刷新会话数据经常会降低性能,大多数服务器都配置为每30秒,每分钟或更长时间刷新一次。这种“无缝”故障转移解决方案永远不会100%有效。

其次,我的经验是,大多数客户都同意抛出一条错误消息,要求用户登录并在极少数服务器发生故障的情况下重试。在这种情况下,我们将完全关闭会话数据库,并享受性能提升。

序列化的另一种用途是通过使用诸如Flex之类的框架来提供更快的响应时间,该框架使用序列化和对象图的压缩进行服务器-客户端交互。

正如其他人指出的那样,采用序列化有一些创造性和有用的理由,但是在实践中很少见。

从历史上看,序列化很难正确实现,并且可靠性很高,因此只能在少数情况下使用。大多数开发人员永远不会自己序列化对象,而是可能依赖幕后进行操作的框架。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值