前端与后端的配合

 

      FLASH与后端通讯的手段多种多样,网上相关教程太多了,这里不再例举。但很多时候,创业团队由于受制于各种现实条件,可选择的方案并不多。像我们公司,刚开始基本上只能选择FMS+PHP+MYSQL。其实,对于我们前端来说,后端选择什么解决方案对我们的影响并不大,我们无非就是用的API不一样而已。多看看教程,用很少的时间我们就能掌握其要领。那么前后端合作的难点是什么呢?我觉得关键是逻辑的划分。

  “前后端合理划分逻辑”,这句话咋看上去貌似简单,其实里面蕴含着诸多方面的考虑。比如安全性、后端性能、工作量、人事分工等等。安全性:记得我们的游戏同时在线超过3000的时候,就已经有人开始攻击我们的后端了,篡改了很多人的个人资料。幸亏攻击的人只是我们一个善意的玩家,如果是恶意的商业攻击,后果不堪设想。经过这次后,老板开始缠着我们追问“怎么防止别人攻击,提高安全性”。这个问题又一次把我们难住了,我们都知道,基于HTTP的请求不被截取是不可能的,而SWF文件又不存在绝对的安全。就算你防得了恶意进攻,你也防不了良性的外挂,想从技术层面让别人完全攻击不了我们也是不可能的。那我们是不是只能坐以待毙了?不是!如果前、后端在合作的时候,数据逻辑与合法性检查都是做在后端的,就可以很好的避免一些良性外挂。首先是游戏数据逻辑要尽量全做在后端,比如用户在玩小游戏的时候,我们不要只是在用户结束小游戏后,简单的把数据传回后端,后端记录进数据库完事,一旦攻击者发现了你这个传数据的后台接口,完全可以避开SWF,做外挂直接呼叫你这个接口刷分,就算你验证用户也没用,因为他可以先注册一个合法的用户,然后在外挂中登录再刷分。当然,你还可以对游戏分数先加密在传给后端,提高攻击难度,但这也是不保险的,因为加密算法就在你的SWF文件中,别人可以很容易获得。所以正确的做法应该是:游戏开始的时候只告知后端游戏ID→后端标识ID对应的游戏已经开始并记录开始时间→用户每次获得一个分数时,前端传回来的不是分数,而是一个动作ID,后端根据动作ID给用户加分→游戏结束时,前端告知后端游戏已经结束→后端得知游戏结束,记录结束时间,计算时间差,根据时间差和最后得分是否符合标准做出相应处理,如果符合标准就把最后得分入库,并返回前端显示给用户,如果不符合标准,就启动作弊处理系统。而这个标准一般是由数值策划给出的。经过我这么一分析,你可能头痛了,本来一个很简单的小游戏计分,怎么搞得这么复杂?前后端工作量都增加了不说,对后端性能也提出了更高的要求,服务器可能要增加了,后端人手可能要增加了,开发周期也要延长了,值得么?这个问题问的很好,这正是我下面要说的:后端性能、工作量、人事分工:一旦我们每一步进行安全性与合法性验证后,整个项目的工作量都会大大膨胀,开发周期也会大大延长;一旦我们把数据处理、业务逻辑和安全验证都移到后端时,后端的压力就会增加,服务器要增多,对后端人员的能力要求也会提高。很多初创团队在项目初期人力财力,软件硬件都不足,可能顾不上那么多,一心想着早点让项目上线。在这种情况下,我觉得安全性可以暂时放一下,众所周知的安全漏洞补上就可以了。但“数据处理和业务逻辑”这个,宁可开发的慢一点,宁可再招个后端高手,宁可多几台服务器成本,也要把它们尽量都放在后端。因为这个没分清的话,会影响到整个系统的清晰度,严重影响项目中后期的发展,为日后的重构增加难度和超多的工作量,我们还指望着在重构时加强安全性呢,到时候数据处理和业务逻辑还是要放后端!所以综合考虑,该出手时就出手,能省的不浪费,不能省的不要抠!

  前面一节谈了前后端合作的难点。这里再简单的谈两个要点:

  1,前端人员不要以前端的角度看后端:前端和后端有个本质的区别,就是前端的负荷是分担在每个客户端的,而服务端的负荷是集中在服务器上的。对于我们前端来说,一个功能多占了几K内存,SWF文件大了几K根本不是什么问题,可对后端来说就是很严重的问题了,一个人大几K,上千人就是几M了。服务器在连接数、内存和CPU之间会有微妙的平衡点,一旦这个平衡点被打破,随便再多哪怕一点点资源占用,整个服务器的性能都会严重下降,影响用户体验,当然,如果你有几十上百台冗余服务器供你负载平衡,你可以当我没说,可如果你像我们公司一样,一开始就3、5台服务器的话,就请前端人员一定要多多配合后端人员,帮他们省出每一个字节,每一次请求。比如像道具属性会有很多文字说明,这些说明应该以类似XML文件的方式储存为静态文件,后端返回给前端的道具数据包里只需要一串物品ID,前端就可以根据这些物品ID在XML文件里查询出这些道具对应的静态物品属性了。别看这些数据可能只有十几K,对后端来说意义重大。还是那句话,只要不是架构性问题,前端不要怕麻烦,要尽量配合后端提高性能。

  2,前端后端要有很明显的BUG分界点。当一个BUG出现时,后端应当很快的用一种统一的方案证明数据没有问题!这个方案必须让前端知道,并让前端也可以操作。大家熟知的php remoting里有一个servicebrowser,这个东西就很好,它能罗列出所有PHP的接口,我们输入参数,它就返回结果,我们可以根据结果直接查看数据是否正确。——确定数据的正确性,对前端DEBUG非常重要,而一个BUG的解决,一般都是由前端人员入手并进行定位的。

  其实相对于前端和美术的合作,前端与后端的合作还是简单清晰的,前后端在开发的过程中,应该是非常独立的,后端开发完全可以先启动,把数据接口提前写好,等着与前端整合,而当整合过程发生问题时,又可以很快的界定是谁的问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值