企业网站的必要性,在线商城怎么弄的,常德小学报名网站,自学制作app需要多久无论PC 客户端还是手机客户端#xff0c;可能会遇到需要发布一些广告#xff0c;这些广告可能是自己开发的#xff0c;可能是三方的#xff0c;而且希望是比较通用#xff0c;能随时发布#xff0c;随时就能看到效果。 本文提供了一种基于轮询的广告系统#xff0c;主要…无论PC 客户端还是手机客户端可能会遇到需要发布一些广告这些广告可能是自己开发的可能是三方的而且希望是比较通用能随时发布随时就能看到效果。 本文提供了一种基于轮询的广告系统主要是提供了一个大致的框架和少许的代码示例。由于需要比较通用可能需要三方广告所以整个广告是以H5页面的形式展示。当然这个系统既可以展示广告也可以满足一些常规的业务需求甚至是用来修复软件BUG等。 整体框架如下 系统有3端共同组成客户端前端服务端。
客户端提供两个功能1.提供一个QtWebkit也就是提供JS执行环境承载前端页面和JS代码。 2.提供本地接口供JS调用注入JS对象。
本地接口由ruby来提供。这些接口一部分是由ruby自己实现一部分是由C来实现。大部分情况改变的都是ruby脚本C的代码改动比较少。
Ruby是通过QtRuby技术来调用Qt通过SMOKE技术来调用C。QtRuby技术就是支持使用ruby脚本来开发Qt程序
和有些公司使用Python开发Qt程序类似。SMOKE是KDE框架下面内置的一个技术他的作用就是把C和脚本语言绑定起来。
QtRuby是SMOKE技术在把Qt绑定到ruby环境的一个具体实现。
前端加载在线html和JS和服务端交互通过轮询的方式拉取广告资源和客户端交互调用本地接口展示广告。
服务端配置广告资源返回广告资源。支持按照条件过滤。 什么优点
1.尽量脚本化很少改动C的代码C仅对新增业务支持大部分的对本地接口支持ruby本身
可以完成ruby脚本支持更新启动时一次后面2小时检查一次重启软件生效。
2.JS SDK使用在线代码如果出问题可以在线修改解决问题。 轮询的使用
广告展示对实时性要求不高在这种场景下可以使用。
和长链接相比每5-10分钟请求一次对服务器压力也有所缓解。
有些客户端在登录或者支付时会跳转到浏览器客户端也是使用轮询机制来确认是否
登录或者支付成功。轮询时间一般指数递增。 如何使用
1.软件的广告比如打折促销某某节日广告等最典型的就是双十一。
2.第三方广告接入他们的前端SDK即可。
3.任何其他可以做的事情。比如对用户本地的文件读写操作注册表网络操作等等。
这种情况一般是没有界面的再后台执行的比如下载一个软件的安装包然后
执行静默安装的操作。 客户端职责
2.提供一1.提供本地接口供前端调用本身不处理业务逻辑业务部分由前端JS来实现
个QtWebkit来供前端执行JS
3.提供一个常驻进程①主进程调起一个进程②任务计划③服务程序
前端职责
1.轮询拉取广告资源判断展示广告条件展示广告调用本地接口实现业务
2.开发广告页面处理业务逻辑 服务端职责
提供查询广告接口如果有广告就返回给前端。并且支持条件过滤。
更好的做法是使用推荐系统根据用户的性别年龄人群分类浏览历史等特征
通过算法进行精准推荐。 以上基本是广告系统的全部内容了不过这个系统不一定只是来展示广告实际上他能做更多的事情比如作为一种满足常规业务需求甚至是修复软件BUG这个在业内有时候也称为“云指令”也就是说通过服务器下来的指令来完成一些通用的事情。
这个“云指令”框架如下 适用场景
1.一次性任务比如上报日志文件大小收集用户信息供决策等
2.应急性任务比如功能开关需要关掉崩溃修复升级程序损坏等
3.常规性任务威力强大
实现业务
1.直接使用lua脚本完成业务逻辑
2.可以通过通知主程序做业务逻辑或者通过IPC从主程序获取数据
3.可以通过写插件主程序加载后完成业务逻辑
4.可以下载EXE独立完成业务逻辑
难点稳定性多进程模型扩展性
意义方便做一些临时性或者应急性的需求或者排除问题以及常规需求等。非常灵活强大。
不建议使用 固定的指令让客户端去解析太麻烦。如果有很多条件判断甚至有循环就比较麻烦。 之前有这样类似的做法后面很难维护。建议直接使用脚本文件非常灵活。 本文关联的PPT介绍可以在这里下载https://download.csdn.net/download/zsc_976529378/88878825?spm1001.2014.3001.5501