在去年一年的开发过程中,基于开发中MVC的分层模式,我们在实际的项目中尝试了前后端分离的开发模式,并在几个项目中都坚持了下来,虽然坚持了,但不能说明实际的效果很好,或者解决了我们项目开发中存在的问题。就像做软件维护一样,经常会解决一个Bug,又引入多个Bug,在新的开发模式下,主要存在以下几个新问题,而这些暴露出来的问题,也进一步说明了,理想和现实总是有差距的。
1)前后端人员配比不合适。目前比例是1:1,可实际工作量却不是1:1的关系,开发进度的瓶颈就在这里。
2)前后端开发步调不对,前端总是等着后端人员把代码都测试完才开始前端实现,其实可以先去做很多工作的,没有
必要一定等后端工作的完成。
3)后端人员在测试完成之后,基本无事可做,要么闲下来,要么参与到自己并不熟练的前端开发中,代码质量不高。
4)项目开发初期,基于接口所做的工作不够细致,不够明确,因此,在这个阶段所产出的约定很脆弱,在后期不得不频繁的调整,导致后期的开发很纠结。后端人员不得不频繁的更改业务实现。
上面所提到的问题,既有沟通协作的问题,也有项目资源分配的问题,也有技术人员水平及熟练程度的问题。经过学科测评项目的开发,几个人对前后端分离的开发模式又有个新的认识,自己也反思总结了我们前后端开发的流程,自我感觉对这个流程也有了更深刻的理解,但不知道下个项目实际操作起来,会如何。
不管实际如何,还是先来说说理论吧。流程,通俗来讲,就是许多人,在做一系列的事情时,怎样相互协调,安排好这一系列事情的先后顺序,有什么事先的约定,需要达到怎样的预期目标。
理想状态下的Web前后端开发流程:
第一步:出原型
第二步:出静态页
第三步:定UI组件事件(根据原型和需求,确定UI需要提供哪些UI事件,或者JS调用),哪些需要用ajax实现等等。
第四步:定调用接口。这是非常重要的一个环节。在这个环节中,
1) 根据原型确定主要是有哪些Action参与,或者需要创建哪些Action
2) 讨论Action中需要哪些service方法。
3)确定页面与服务器端交换数据的接口、方式、格式、各类出错场景以及出错提示等,前端人员要考虑好前端的交互方式,实现方式,在这个过程中有向前设计的意识。同时要与后端开发人员沟通,看是否有问题,都要学会站在对方的角度上去看问题。我们在这个过程中容易忽略数据交换格式、出错场景(异常)等。
接口的约定是个关键,在这个阶段,不要怕浪费时间,只有多沟通,多思考,尽量的让前后端约定更丰满一些。因为她越丰满,后面的纠结就越少。
第五步:前后端同时基于接口开始做开发工作。
1)前端实现UI----开始html编写UI事件和JS调用、表单校验等,编写后可以只运行页面效果。
2)后端开始实现service方法,进行业务逻辑和数据访问层代码的编写,编写测试用例,针对service方法进行测试。数据持久层的代码使用ibatis的代码自动生成工具来做。
在这个阶段,前端开发人员可以忽略数据,而只做前端的交互效果,这是完全可行的。后端人员需要重点完成单元测试工作,保证自己的代码是高可用的。
第六步:后端因为代码的自动生成,所以开发速度会相对更快,因此,在后端完成业务处理之后,前端可能还在开发期,这时候,后端人员可以开始进行额外工作
1)初始化测试数据的准备,为下一步的前端整合测试做准备。
2)服务器搭建的准备
第七步:前端开发完毕,开始进行前后端代码的整合、进行集成测试。
备注:在这七步的流程之中,还有许多需要注意的细节,列举几点吧:
1)团队配合与沟通,这是一切工作的基础。这开发的过程中,涉及到集中角色。项目经理、项目主控、设计人员、后端开发人员、前端开发人员、UI设计师、需求人员。而在进入开发阶段之后,一定要注意几个沟通:设计人员与开发人员的沟通,保证开发人员理解了设计的思路。前端人员与UI设计师的沟通,保证UI设计的无误。前端人员与后端人员的沟通,保证在接口编写时思路的一致。一个人的思路是有限的,考虑问题的全面性也是有限的,沟通的过程需要强调主动性。
2)多站在对方的角度考虑。信任是团队协作的基础。而信任来自己自己代码的质量,自己设计的质量。从自己做起,不要只是说我只关心什么什么,可以沟通清楚自己需要的是什么,担心的是什么,学会站在对方的角度上去看问题。
3)项目中总有那么一些文件,是前后端开发人员都会修改的,如action.xml等。这些敏感文件,修改前以及修改完毕都要互相通知下,要养成update前先从vss上refresh的习惯。如果出现冲突,最好能够一起解决,或者及时告知,避免再次冲突。
4)以目前公司的人力配置和以往项目开发的实际来看,前后端人员可以调整到1:2或者1:3,因为后端的代码大多数可以自动生成,工作量会减少很多。前端开发人员数 >= 设计人员数+后端人员数 > 项目负责人数。
这就是我理想中的Web开发流程,当然,这是理想的情况,因为项目开发不可能都按照这个来走,流程本身就是把双刃剑。而且,想达到这么理想的状态,对项目的资源支撑、需求稳定、UI设计、程序员水平都需要有高的要求,但是,在当前情况下,这应该是符合现状的前后端分离的开发模式。随着前端技术水平的越来越高,前端不断壮大之后,我们会做的更好。
Web开发之四:前后端开发模式探讨
最新推荐文章于 2024-08-13 15:51:25 发布