首页 游戏问答 正文

SOA亚洲之子安卓

接手“亚洲之子”的实践记录

话说回来,我为啥非得去搞这个“SOA亚洲之子安卓”项目?说白了,就是领导拍脑袋,觉得咱们在亚洲区的业务不能老是用着那堆老掉牙的Windows CE设备了,太丢份儿。非要所有外勤人员手里拿的安卓手机,能实时我们那套跑了快十年的SOA后端。

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址(www.game519.com)

这个任务一砸下来,我就知道是个硬骨头。老系统的接口,你知道的,那是出了名的复杂,各种加密和验证机制堆得跟山一样。我一开始想法子是抄近路。我在中间层搞个协议转换器,把安卓端发过来的简单JSON请求,成后端需要的SOAP XML包。想着这样能省事,毕竟安卓端处理JSON比处理XML省力多了。

结果?快三周,中间件跑起来那叫一个慢,延迟高到用户体验跟便秘一样。数据来回了三四层,效率根本上不去。我,这条路走不通,必须得让安卓直接面对那套老系统,硬碰硬。

那段时间,我自己了那堆厚厚的SOA接口文档。我,问题的核心根本不是数据格式,而是身份验证和事务完整性。他们那套系统,每隔五分钟就会一次安全令牌,而且令牌的非常依赖请求的时间戳和请求体的特定字段。安卓端如果一个头部信息,或者时间戳,系统直接就

我的详细实践过程,主要解决这个安全握手问题:

  • 所有开源的SOAP客户端库,那些库太死板,不能灵活地请求头部。
  • 从底层HttpURLConnection,直接原始的XML请求。
  • 为了时间戳的精准,我NTP对时机制,安卓设备的时间跟服务器的时间误差不超过五十毫秒。
  • 最关键的一步,我了之前负责这个系统的一个老同事,他了一个文档里没写的“小秘密”:安全令牌的,不是文档上写的那个固定的值,而是会用户的权限级别

知道这个秘密后,我代码逻辑。我一个独立的身份服务模块,专门这个动态变化的安全头。安卓客户端每次业务请求前,都这个模块最新的安全头信息。这样一来,请求的成功率百分之九十九以上。

从那以后,我们亚洲区的业务人员终于可以手里的安卓机,丝滑地数据、库存了。整个项目了将近两个月,主要时间都跟那些老旧、不透明的验证机制。所以说,搞集成,技术只是敲门砖,老系统的脾气才是最重要的。