技术角度看QQ大战360之动态客户端设计

从技术的角度看,QQ和360都用到了一种技术——可以从服务器发出指令让客户端做服务器希望做的事情。那么指令是什么形式呢?

 

1、可以是二进制,例如

struct remote_code{

    long code;

    char param[100];

};

 

在客户端,收到这个结构体后,switch(code),分支执行相关操作即可。

 

2、可以是脚本代码,例如LUA之类的。用Java以来jvm,而且臃肿,估计很少人用。也可以用JavaScript。

 

我还在用qq2009, 大家可以看看群中的右上角:

记得09年初下载的时候,此处的样子可不是这样的。没有那么功能,左右slide的更不可能。那么,它是怎样产生的呢?我可以肯定,一定是QQ服务器传来的指令产生的!

 

我把这种客户端称之为动态客户端。动态客户端,简而言之是一种从服务器下载指令(二进制或者脚本)生成界面,并响应操作完成业务的客户端。它很像浏览器,浏览器是动态客户端的一个极端。

 

动态客户端的好处多多,引无数英雄竞折腰,QQ,盛大圈圈,等等。动态客户端可以是“现在部署未来”的一种投资。

 

要设计一套动态客户端,要从以下方面着手:
一、动态些什么。

就是说,服务器发过来的指令集究竟有多少。其中有多少是做界面产生的,有多少是响应操作的。指令集的多寡,决定了以后可以扩展什么。一种极端是,用脚本调用任何WinAPI,或者其他形式的动态链接库。(我已经做出来了,嘻嘻

 

二、客户端Exe部分可以为上述指令集做什么样的支撑。

支撑某个业务的入口,支撑参数设置(例如颜色,服务器地址等)。可以理解为,向上述指令集开放什么样的API。主要来自Exe本身做成函数指针形式的函数入口。这些函数可以做什么?这些函数的参数来自服务器,还是通过指令集运算所得?支持指令集运算结果作为参数是一个质的飞跃,与不支持这个特性的客户端有着本质区别。因为,支持运算,尤其是支持逻辑判断的运算,则可以把逻辑做到脚本中去,服务器送去的指令可以做无限多的事情。

 

三、指令送达的时机。

这个也很重要,是客户自己请求,还是类似于升级提示一样有个明显的、让用户看得到下载过程的,抑或“暗地里”稍稍完成?

 

动态,给开发者n多暇想~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值