为什么要把软件做成前后端分离?
在Web应用开发过程中,业界对前后端的分界线似乎一直都没有确定的概念,不过大多数人以浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称为前端,而将运行于服务器,为前端提供业务逻辑和数据准备的所有代码统称为后端。
在传统的前后端混合开发模式中,前端写好静态的HTML页面交付给后端开发,静态页面可以本地开发,也无需考虑业务逻辑,只需要实现View即可。随后后端使用模板引擎去套模板,同时内嵌一些后端提供的模板变量和一些逻辑操作。然后前后端集成对接,遇到问题,前台返工,后台返工。然后再集成,直至集成成功。
这种模式使得前端调试的时候要安装完整的一套后端开发工具把后端程序完全启动起来,遇到问题需要后端开发来帮忙调试。直接导致了前后端严重耦合,后端人员需要掌握一些前端语言,前端页面里还嵌入了很多后端代码。一旦后端换了一种语言开发,就需要重做。这种工作流程增加了大量的沟通成本、调试成本等,并且前后端的开发进度相互影响,使得开发效率大大降低。
为了解决这个问题,前后端分离的开发模式走入了人们的视线。
准确的说,前后端分离并不只是开发模式,而是Web应用的一种架构模式。把前端与后端独立起来去开发,放在两个不同的服务器,需要独立部署。两个不同的工程,两个不同的代码库,不同的开发人员,前后端工程师需要约定交互接口,实现并行开发和测试。开发结束后需要进行独立部署,前端通过接口来调用调用后端的API,前端只需要关注页面的样式与动态数据的解析和渲染,而后端专注于具体业务逻辑。
使用前后端分离可以让团队分工更加明确。通过将开发团队前后端分离化,让前后端工程师只需要专注于前端或后端的开发工作,使得前后端工程师分别自治,培养其独特的技术特性,然后构建出一个全栈式的精益开发团队。这样的开发团队能够快速应对需求的变更以及市场的复杂多变,打造出架构清晰、前后端并重的优质产品。
前后端分离以后,可以实现前后端代码的解耦,只要前后端沟通约定好应用所需接口以及接口参数,便可以开始并行开发,无需等待对方的开发工作结束。与此同时,即使需求发生变更,只要接口与数据格式不变,后端开发人员就不需要修改代码,只要前端进行变动即可。如此一来整个应用的开发效率必然会有质的提升。
在这种模式下,应用的代码不再是前后端混合,而是只有在运行期才会有调用依赖关系。应用代码将会变得整洁清晰,不论是代码阅读还是代码维护都会比以前轻松。
前后端分离并非仅仅只是前后端开发的分工,而是在开发期进行代码存放分离、前后端开发职责分离,前后端能够独立进行开发测试;在运行期进行应用部署分离。前后端分离的开发模式与传统模式相比,能提升开发效率、增强代码可维护性,有规划地打造一个前后端并重的精益开发团队,更好地应对越来越复杂多变的Web应用开发需求。
放眼未来,应用的云化、微服务化势不可挡。同社会分工精细化一样,前后端开发的精细化也是必然趋势。技术在持续进步,架构在不断演进,只有紧跟发展的脚步,不断调整项目管理方式,软件开发模式,才能在互联网浪潮中把握机会,乘风破浪。