目前项目用到了阿里云的OCS服务,芳姐用的OCS之Java客户端,另外一个团队用的是OCS的python客户端,因为开发语言不同,OCS的客户端对不同语言的兼容性还不太好,为此我们进行了多次协商,让我们能够互相读写OCS中的数据,过程如下:
1、 Java将JavaBean对象序列化后写入OCS的数据,Java读写没有问题,而且效率很高,但Python不能读。因此这个方案废除。
2、 JAVA将JavaBean对象用toString()转换成key=value数据对的字符串写入OCS,发现当value中包含=号时,读取数据错乱,因此这个方案也废除。
3、 JAVA将JavaBean对象转换JSON格式字符串写入OCS,Java读出来后再转换成JavaBean对象,两次转换都需要消耗一定的时间。JAVA读写没有问题,但Python读出来中文乱码。
4、 为了解决中文乱码的问题,我们再接着考虑:把JSON格式字符串在写入OCS之前进行UrlEncoder进行编码,把中文汉字和符号进行转换,这时Python读出后先进行UrlDecoder解码,汉字可以正常显示了,但Python处理完UrlEncoder编码后回写到OCS时,Java读出了乱码,OCS控制台看到的也是乱码。
找了阿里云,阿里云那边的回复是不同语言OCS客户端的兼容性问题引起,python写入超过128字节的时候会出现乱码,控制台一旦看到是乱码,java客户端读到的就会是乱码,这是OCS的客户端问题,现在提交工单的话,也不知道何时能够解决。——最后得到的回复是:建议使用同一种语言进行项目开发!
另外,对象进行了JSON转换后,又进行了UrlEncoder编码,这个转换时间几乎超过目前阿里云平台上读取RDS中的记录的时间,因此,就是OCS能解决客户端的问题,我觉得这种方案也存在缺陷。