特请:healer_kx(甘草)和arong1234(阿荣)两位进来一下

traceless 2009-12-27 01:58:22
请,请坐:

小弟愚挫,早年曾在java一书看到过序列化这个概念,但早已忘了,重要的是那时没有深究。
我只记得,说序列化可以在这个应用程序关闭后,应用程序中的对象还可以供其他程序使用,
甚至可以通过网络传到本地,供本地程序调用。

我现在想那还不如用动态库好。

那序列化是个什么东西,干什么用的,望进来聊聊,提供点好的资料。

...全文
370 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
traceless 2009-12-27
  • 打赏
  • 举报
回复
小小的搞了段代码test了一下

粗略的研究完毕

3qs 各位
traceless 2009-12-27
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 steedhorse 的回复:]
序列化的本质就是打包解包。只是实际代码中,有人采用一些标准化的方法,也有人采用手工的方法。
楼主不要被一个名词搞得这么投入嘛。
[/Quote]

收到
老邓 2009-12-27
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 arong1234 的回复:]
需要它什么支持?
引用 35 楼 loaden 的回复:
这种序列化的东西,用过的都说好...可惜,C++0x不支持。

[/Quote]
标准库中没有序列化组件。
类似boost那个。
arong1234 2009-12-27
  • 打赏
  • 举报
回复
需要它什么支持?
[Quote=引用 35 楼 loaden 的回复:]
这种序列化的东西,用过的都说好...可惜,C++0x不支持。
[/Quote]
晨星 2009-12-27
  • 打赏
  • 举报
回复
序列化的本质就是打包解包。只是实际代码中,有人采用一些标准化的方法,也有人采用手工的方法。
楼主不要被一个名词搞得这么投入嘛。
老邓 2009-12-27
  • 打赏
  • 举报
回复
这种序列化的东西,用过的都说好...可惜,C++0x不支持。
老邓 2009-12-27
  • 打赏
  • 举报
回复
看来楼主是达人啊,吸引这么多牛人过来讨论!!
为了提高得分率及曝光度,楼主结帖时给我1分就好...

boost有个序列化库:http://www.google.cn/search?hl=zh-CN&source=hp&q=boost+%E5%BA%8F%E5%88%97%E5%8C%96&aq=f&oq=

traceless 2009-12-27
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 healer_kx 的回复:]
引用 30 楼 traceless 的回复:
那在23L 悟的,也类似吧

也就是实时性,我也想到了跨进程的话,涉及到数据、状态的更新用序列化最好。
如果非跨进程,其他的方法一样可以实现。
对否 ?

其实我觉得也不是进程,线程的事情,比如COM,跨了套间线程,一类要有类似的办法来解决问题。
看来你是在研究一种很common的技术,来解决通信问题?
[/Quote]

哦,收到。
非也非也,我做的东西很少用到通信方面的。主要是在看那个你们讨论的序列化一贴中,有所大不明白
所以就。。。
healer_kx 2009-12-27
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 traceless 的回复:]
那在23L 悟的,也类似吧

也就是实时性,我也想到了跨进程的话,涉及到数据、状态的更新用序列化最好。
如果非跨进程,其他的方法一样可以实现。
对否 ?
[/Quote]
其实我觉得也不是进程,线程的事情,比如COM,跨了套间线程,一类要有类似的办法来解决问题。
看来你是在研究一种很common的技术,来解决通信问题?
healer_kx 2009-12-27
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20091227/14/74744fa1-7e37-4881-8cdd-7c860d1baed4.html?90230
接非技术分的到这里来呗。。。
traceless 2009-12-27
  • 打赏
  • 举报
回复
那在23L 悟的,也类似吧

也就是实时性,我也想到了跨进程的话,涉及到数据、状态的更新用序列化最好。
如果非跨进程,其他的方法一样可以实现。
对否 ?
晨星 2009-12-27
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 healer_kx 的回复:]
嗯,是的,为了分,我一直在回避这个问题。。。
[/Quote]
同样为了分,俺直接揭示这个问题。嘿嘿。
晨星 2009-12-27
  • 打赏
  • 举报
回复
它所谓的“对象”主要是数据,而不是功能和代码。
即序列化以后,对象的状态还保存着,比如一个字符串的内容,可以下次使用或者传给传给其它程序使用。
这跟动态库根本风牛马不相及。
healer_kx 2009-12-27
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 wolf0403 的回复:]
是否需要序列化实际只取决于一个问题,就是数据的应用是否会跨进程边界。并行的两个进程也好,时间分离的前后两次运行也好,如果这样两个进程(可以是同一个program对应的不同process)会要求共享/交换数据,序列化就是必需的。

dll 根本是另外一个问题。
[/Quote]
嗯,是的,为了分,我一直在回避这个问题。。。
Wolf0403 2009-12-27
  • 打赏
  • 举报
回复
是否需要序列化实际只取决于一个问题,就是数据的应用是否会跨进程边界。并行的两个进程也好,时间分离的前后两次运行也好,如果这样两个进程(可以是同一个program对应的不同process)会要求共享/交换数据,序列化就是必需的。

dll 根本是另外一个问题。
机智的呆呆 2009-12-27
  • 打赏
  • 举报
回复
好久没看到这么有技术含量的帖子~~~
学习了。
arong1234 2009-12-27
  • 打赏
  • 举报
回复
彼此协商好模型当然是前提条件
[Quote=引用 23 楼 traceless 的回复:]
To 21L,那至少双反都协商好这个“序列化模型”吧,或者遵循业界制定好的模型,否在也不能跨语言吧


还有,我有个观点,主要受了9L的启示,那就是
序列化其实是也是一种思想,处理问题的方法,就像com一样也是一种思想。

序列化的其中之一的思想就是实时性。比如,C++底层模块和delphi应用层交互,接口大家都协商好了,
然后通过序列化操作,delphi那边通过接口所“操纵”的对象都是实时更新的。


[/Quote]
traceless 2009-12-27
  • 打赏
  • 举报
回复
To 21L,那至少双反都协商好这个“序列化模型”吧,或者遵循业界制定好的模型,否在也不能跨语言吧


还有,我有个观点,主要受了9L的启示,那就是
序列化其实是也是一种思想,处理问题的方法,就像com一样也是一种思想。

序列化的其中之一的思想就是实时性。比如,C++底层模块和delphi应用层交互,接口大家都协商好了,
然后通过序列化操作,delphi那边通过接口所“操纵”的对象都是实时更新的。

healer_kx 2009-12-27
  • 打赏
  • 举报
回复
我觉得问题不是看程序的结构,比如什么模块和模块之间。。。我关注业务是什么样的,才能决定是否有必要。。。
arong1234 2009-12-27
  • 打赏
  • 举报
回复
不正确:这种技术在公共技术(RMI=Remote Method Invoke, Web Service, DCOM)中 被广泛的运用。不能说只是自己模块中使用。你所谓的使用Dll来做,解决不我在3F中说的问题

string只是你进程内部处理数据的类型,对于被序列化的对象,其中是没有你所谓的C++类型的,他甚至可以被跨语言使用(绝大部分都在被跨语言使用),所以你的理解还是太局限了
[Quote=引用 15 楼 traceless 的回复:]
跟着就是:

这么说序列化的对象是个公用的部分了,那么

1、自己写的模块。模块于模块之间,需要用到这种技术吗,对于公用部分,可以提取出来做成个dll,
或者其他的方法来处理。有必要用到这中技术吗?会不会给设计带来麻烦?维护代码也不容易呀?

2、如果是自己写的要和别人写的程序进行“序列化交互”,那么这个“序列化的模型”就得是双方都
协议好的,或者是双方都遵循了公认的,相当于string ?

以上我的认为是否正确 ?
[/Quote]
加载更多回复(20)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧