02 什么是 Web 框架?
上一节课我们简单地认识了下 Django 框架,在正式开始学习它之前,我还要跟你说下 Web 框架到底是个什么东西?为什么市面上会有各种各样形形色色的 Web 开发框架?以及使用 Web 框架进行开发的优势在哪里?这些问题在这节课里面你都可以找到答案。
1. Web 框架
在计算机领域,框架指的是由部分组织、机构或者个人开发出的一套程序模板。我们借助这套程序模板可以快速进行应用开发。往往一个优秀的框架是能帮我们简化各种常用操作,比如各种类型数据库 (SQLite、MySQL 或者 PostgreSQL)的增删改查、简化各种热门互联网组件(如消息中间件等)的接入以及提供各种复杂功能的再包装。
特别对于 Web 框架,会对到发生过来的 HTTP 请求做一系列的过滤处理,最后才到达我们的视图函数进行处理。计算机的每一个领域都有大量的早期互联网工作者为我们做了不少工作。为了减少重复造轮子,早期的互联网工作者为我们开发了许多优秀的代码库,而后逐渐演变成开发框架,以供普通开发者使用。正是由于开发框架的出现,大大降低了程序员的开发门槛,也导致越来越多的人员进入该行业。
Web 框架是专门针对 Web 应用开发的一套开发工具,几乎都是开源和任意使用,由社区维护。由于 Web 的后端开发语言有很多种,比如 Java、Python 以及 Go 等,它们都对应着若干个非常流行的 Web 框架。Java 中最火的 Web 开发框架莫过于 Spring 以及 Spring 系列框架,Python中有 Django、Flask 和 Tornado 等。而在这些框架的基础上,我们几乎只需要十几行就能构建出一个简单的 Web 服务。
2. 使用 Web 框架的好处
使用 Web 框架进行开发的好处如下:
应用业界最流行的 Python Web 框架,如 Django、Flask 等,可以帮我们快速完成应用开发,节省开发时间和人力投入,这种做法往往是中小型企业开发的不二之选。大型企业也许会开发出自己的服务框架,比如阿里的微服务框架 Dubbo。但对于大多数企业而言,由于财力和人力限制,基于框架开发是最高效的解决方案;
流行的 Web 框架往往具备一定的优异性能和良好的代码规范,我们遵守一定的开发原则就能构建出良好风格的 API 接口,同时开发应用也会具备框架的优异性能。例如 Tornado 框架是专注高性能的 Web 框架;
避免重复造轮子,由框架完成各种常用操作代码。开发人员集中精力完成业务逻辑开发,可以显著降低 Web 开发难度。
在熟练使用 Web 框架之后,我们可以认真学习 Web 框架源码,这些代码是来自全世界优秀的程序员奉献智慧的结晶。从中我们可以学习到如何处理 Web 请求,如何使用开发语言(如 Java、Python 等)的各种设计模式、高级封装等。只有深入学习了这些知识,我们才有可能成为一名合格的应用开发者。
在信息安全领域,只会使用工具进行网络攻击的人,被嘲笑为脚本小子。只会使用框架,调各种 API 接口的开发者,往往被人戏称为调包侠。因此,掌握 Web 框架的使用是第一步,除此之外,我们在学完框架的基本使用之后,还需要真正深入框架源码进行学习,除了能快速定位开发问题之外,也是快速提升个人能力的一个有效途径。
3. 各种语言的 Web 框架介绍
目前,主流的 Web 框架可以按照语言类型进行分类,比如基于 Java 开发的 Web 框架、基于 Python 开发的 Web 框架和基于 Go 开发的 Web 框架等等。每种语言领域内的 Web 框架也是各有特色,有大而全,有小而精,还有专注异步高性能等等。
热门的 Python Web 框架有:
Django:基于 MTV 的框架模式,有强大的数据库功能、强大的后台管理功能、模板系统、缓存系统等;
Flask:小而精的 Web 框架典范,可扩展性强;
Tornado: 轻量级的 Web 框架,其特点是非阻塞和高性能,是实时 Web 服务的一个 理想框架。
主流的 Java Web 框架有:
Spring/Spring Boot/Spring Cloud 等:几乎是大部分 Java web 开发者的首选和必选,占据了大部分市场。基于 Spring 及其衍生框架,我们能迅速开发一个 Java Web 服务,几乎不需要任何 Web 开发基础;
Dubbo:阿里巴巴的开源的高性能 RPC 框架、特点是分布式、高性能以及高度可扩展;
Struts2:老一代的 Java Web 框架,特点是高度成熟。不过目前趋势来看,已经很少人使用 Struts2 来开发新的 Web 服务。
Go 作为近几年快速崛起的后端开发语言,也受到了广大后端开发者的追捧,Go Web 框架也随之而来,其中的典型代表有:
- Beego 框架:它类似于 Python Web 框架 Django,走大而全的风格,具备各种 Web 应用程序的通用功能;
- Gin 框架:Gin 是 Go 的一个微框架,封装优雅,接口友好。具有快速灵活,容错方便、性能优异等特点;
- Echo 框架:Go 的微型 Web 框架。其具备快速HTTP路由器、支持扩展中间件,同时还支持静态文件服务。
4. 小结
本小结介绍了 Web 框架相关知识,梳理了使用 Web 框架开发的诸多好处,最后介绍了三种后端开发语言的主流 Web 框架。任何一种 Web 框架其核心思想和封装功能都有很多相似。完全掌握一个 Web 框架的使用并熟读其源码,掌握框架核心处理流程,对于快速上手使用其他 Web 框架以及提升自身编码水平都有极大的促进作用。