这几天写代码,写得我有些头痛,主要是写的代码太多,太烦了。
本来想给我的软件加上一个白板的功能,可白板一般就用sharedobject来做。
可我自已写的fms,不支持sharedobject ,所以就得实现sharedobject。
这个协议倒是很容易就让我分析透了,可后面发现的问题,就让我有些心虚了。
amf0编码,竞然不支持flex.messaging.io.ArrayCollection,也就是flex里面的mx.collections.ArrayCollection对象,这种对象用amf0没办法编码。
如果我想把sharedobject用得很爽的话,那就只有实现amf3,那也就意味着,我的服务器要全面升级从以前的只支持amf0到支持amf3,以前的
NetConnection
NetStream部分都要改,工作量可真大,实现amf3编解码也不是一件简单的事。
amf3中提示了一个引用的概念,这也就意味着,我需要对对amf3对象的实例进行标识,没有语言内置的支持,写个这个还真是复杂。
写些基本的类型的编解码还是比较简单的。
像xml,object实在是复杂,想想还是觉得amf0里面解析一个对象比较容易。
都说amf3比amf0编码要压缩很多,从编码来上说的确是这样。
但是,amf3编码里面的引用的作用域只在处理一个rtmp包上,
如果连接开始amf3编码器起来开始,连接关闭编码器里面的引用什么的才消失还差不多。
amf3给我们带来的只是复杂,还好,一切都好了,复杂也复杂后面的人去吧。
amf3里面的ByteArray,还算是个不错的东西,如果你的什么数据不想让服务器解析就直接让这个装着吧,这个类型解析起来也很简单。
ByteArray实际上也就是一个amf3的编解码器,用这个什么数据都可以装,也不用担心解析出错,真是降低了写服务器的复杂度啊。