我的第一个python web开发框架(1)——前言

简介:

由于之前经验不是很丰富,写的C#系统太过复杂,所以一直想重写,但学的越多越觉的自己懂的越少,越觉得底气不足。所以一直不敢动手,在内心深处对自己讲,要静下心来认真学习,继续沉淀沉淀。这两年多以来找各种机会去参加各种沙龙或交流会,有空时就啃啃技术书籍,又或者看看一些文章或源友,努力向博客园大牛们学习。

  由于工作关系,这两年很少接触C#,一直在做产品设计、项目设计、架构设计,15年底公司有机会参加了个小项目开发,使用的是python语言开发web版的TMS,从而一发不可收拾喜欢上了python。在体验了python开发的便捷以后,接下来就有了python开发的第二个、第三个web项目。

  第一个项目是在运维同事小戴(运维大牛)的指导下,花了三天时间学习python基本语法,然后花了一天时间熟悉小戴写的Python框架,就马上进入开发写业务,大概花了一个月左右时间就完成了公司安排的项目并上线了。学习的第一个python框架是一个轻量级、直白、简单的框架(大家可以上小戴的博客http://www.linuxyw.com/去学习,有详细的教程和源码),这个框架的代码追求的是让没什么基础的人也能很容易看明白每行代码的用途,让初学者容易上手开发维护,降低系统的维护难度。通过这个项目的开发让我重新反思以前自己所写的代码与框架的利弊,过多的使用一些技术与模式,让自己的框架表面看功能很强大,但入门门槛就非常高了,虽然有很多文档与注释,但要学会并灵活应用就不是那么容易的事情,维护起来也比较困难,反而返璞归真的编码方式让人有另一种感受。

  由于第一个项目完成的不错,所以很快公司就安排了第二个python项目。有了之前的项目经验后,发现原框架有好多重复的代码存在,代码的重用率不高,所以花了三周时间对项目底层进行了重构,根据自己的需要开发了一个全新的ORM模块,对很多工具函数进行了重构,优化了数据层代码,增加了逻辑层,根据需要在IDE中整合了多项目共享同一模块代码......当然这个过程中踩了很多很多坑,在跌跌碰碰的过程中完成了第一版的python快速开发框架。然后使用这个框架和另一位后端开发人员+10位前端开发(android/ios/web)用了三个月左右时间完成了一个中型项目开发,并通过测试上线运行。

  创业型公司的生命是短暂的,在16年的10月份公司进入了清盘,公司解聘了所有员工,拿了补偿后应广东老东家邀请回到了广州上班,广州公司业务比较复杂,原系统的扩展性不强,每增加一个电信运营商就得部署一套差不多的代码,如果合作的APP同时接入不同的运营商,就得部署多套类似的接入不同运营商的服务,也就是说合作越多部署的服务就会越多:运营商*N个*N个APP合作商=xx个服务。维护起来非常麻烦,且数据不能共享,需要重新开发一套系统来代替原来系统。由于python开发效率高速度快、维护方便等原因考虑,就有了我第三个python web项目,同时也是我独立设计的第一个分布式微服务架构的项目,通过一个多月孤军奋战,对原python框架进行了全面重构和重写,python快速开发框架2.0版终于出来了,接着在另一位同事的共同努力下,用了一个月时间完成了旧系统业务功能往新系统迁移开发,并交付给客户使用,与客户们的旧版APP实现了无缝平滑对接。

 

  在学习并使用python开发的过程中我经常在思考,一个好的框架会用到各种封装、设计模式、面向对象的各种原则与准则,而想要让一个初学者快速上手马上进行业务开发却很难因为封装多了,代码简练了,重用性高了,而带来的结果是可读性可理解性却下降了,如果没有完善的文档或花大量的时间去了解,很难学得透。这两年时间自己也在尝试学习别人写的框架,学习别人写的教程,虽然说自己已经有十多年的开发经验,可学习起来经常也会感到力不从心,很吃力,因为拿到一份源码后,发现代码量太大,无从下手。而自己在使用自己写的框架时就不会出现这种情况,为什么呢?经过深入思考发现自己写的框架也不是一步到位一开始就很复杂的,它也是开始很简单,当开发经验累积以后,为了应付各种业务状况不停的重构与修改,慢慢变的越来越复杂,功能也越来越强大,而框架的可读性也慢慢随着下降了。当这样的框架给到别人学习时,他们不了解框架的发展历程,不了解很多功能模块、变量、参数......为什么要这么设计,不了解模块与模块、函数与函数等它们之间的关系,要想快速掌握新的框架可想而知难度有多大。所以即使学会了新框架的使用与开发,对于框架中存在的bug却不知怎么去修改,更不用说根据业务的需要有针对性的去改造框架底层不合理的地方了。

  为了方便同事们的学习,也完成自己的承诺,于是就有了本系列文章。

   

  本系列博文主要讲述的是一个小菜鸟,刚学会python就接了一个外包,写了一个很简单的web企业网站,而随着这个企业的发展,需求的不停变更,继续不停的改造与重构,企业网站变成一个小型电商平台、大型电商平台的过程(是否写一个大型电商平台暂时未定案,也有可能开发一个企业管理系统)。而代码也通过不停的重构,从一个简单得不能再简单的几行代码变成能应付各种业务需求变更,能快速完成开发任务的成熟框架。当然中间也经历了各种各样的坑与障碍,希望大家能喜欢这个故事,并与小菜鸟共同成长。 

  本系列文章会分为几大部分,第一部分主要讲的是一些基础、开发常识、开发环境与运行环境等内容,代码也会非常简单直接;第二部分是以重构为主,即主角稍微成长起来了,发现有很多重复的代码,加上出现一些突出事件,需要对系统进行重构,完善系统功能;第三部分是随着企业业务的发展,对IT会越来越依赖,提出了各种各样的需求,针对这些需求对系统进行完善;第四部分主题是变革,随着系统的完善,在这个过程中会发现代码变得复杂,应对爆增的数据和访问,现有架构体系无法负载,需要对系统框架进行变革,升级服务器架构与系统框架,往分布式、高可用、微服务架构发展变化;如果还有第五部分的话,将会讲解企业架构方面的内容,IT系统根据企业的发展战略和现有业务能力,增加用户行为分析、业务数据分析等大数据分析系统,推动企业的发展。

  如果从企业架构成熟度来讲,第一、二部分,是处于项目驱动技术阶段,一切以项目决策为主;第三、四部分,是处于业务驱动阶段,业务开始依赖技术,技术根据业务需要完善与促进业务发展;第五部分是战略驱动阶段,企业慢慢对技术熟悉,会更多的利用数据分析来进行战略决策,而技术在企业方面也占据着越来越重要的角色,通过大数据来指导企业的发展。

  由于我平常工作很忙,所以暂定写这几个部分,到底能否全部写完还不知道,只能走一步是一步了。前面两三部分应该没有问题,后面两部分涉及的内容太多,不好规划,章节数量恐怕会很多,如果写不完大家有兴趣的话,也可以加群一起讨论探讨一下。

 

版权声明:本文原创发表于 博客园,作者为 AllEmpty 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

python开发QQ群:669058475    作者博客:http://www.cnblogs.com/EmptyFS/



    本文转自 AllEmpty 博客园博客,原文链接:http://www.cnblogs.com/EmptyFS/p/5208498.html,如需转载请自行联系原作者




相关文章
|
2天前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
15 1
|
2天前
|
SQL 中间件 API
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】**Flask是Python的轻量级Web框架,以其简洁API和强大扩展性受欢迎。本文深入探讨了面试中关于Flask的常见问题,包括路由、Jinja2模板、数据库操作、中间件和错误处理。同时,提到了易错点,如路由冲突、模板安全、SQL注入,以及请求上下文管理。通过实例代码展示了如何创建和管理数据库、使用表单以及处理请求。掌握这些知识将有助于在面试中展现Flask技能。**
11 1
Flask框架在Python面试中的应用与实战
|
4天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)
|
5天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
11 0
|
8天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
8天前
|
前端开发 数据挖掘 API
使用Python中的Flask框架进行Web应用开发
【4月更文挑战第15天】在Python的Web开发领域,Flask是一个备受欢迎的轻量级Web框架。它简洁、灵活且易于扩展,使得开发者能够快速地构建出高质量的Web应用。本文将深入探讨Flask框架的核心特性、使用方法以及在实际开发中的应用。
|
9天前
|
关系型数据库 数据库 开发者
Python中的Peewee框架:轻量级ORM的优雅之旅
【4月更文挑战第13天】在Python的众多ORM框架中,Peewee以其轻量级、简洁和易于上手的特点,受到了许多开发者的青睐。Peewee的设计理念是“小而美”,它提供了基本的ORM功能,同时保持了代码的清晰和高效。本文将深入探讨Peewee的核心概念、使用场景以及实战应用,帮助读者更好地理解和使用这一框架。
|
9天前
|
SQL API 数据库
Python中的SQLAlchemy框架:深度解析与实战应用
【4月更文挑战第13天】在Python的众多ORM(对象关系映射)框架中,SQLAlchemy以其功能强大、灵活性和易扩展性脱颖而出,成为许多开发者首选的数据库操作工具。本文将深入探讨SQLAlchemy的核心概念、功能特点以及实战应用,帮助读者更好地理解和使用这一框架。
|
11天前
|
网络协议 Java API
Python网络编程基础(Socket编程)Twisted框架简介
【4月更文挑战第12天】在网络编程的实践中,除了使用基本的Socket API之外,还有许多高级的网络编程库可以帮助我们更高效地构建复杂和健壮的网络应用。这些库通常提供了异步IO、事件驱动、协议实现等高级功能,使得开发者能够专注于业务逻辑的实现,而不用过多关注底层的网络细节。
|
11天前
|
JavaScript 前端开发 关系型数据库
金融技术解决方案:用Python和Vue开发加密货币交易平台
【4月更文挑战第11天】本文介绍了如何使用Python和Vue.js构建加密货币交易平台。首先确保安装了Python、Node.js、数据库系统和Git。后端可选择Flask或Django框架,通过RESTful API处理交易。前端利用Vue.js、Vuex和Vue Router创建用户友好的界面,并用Axios与后端通信。这种架构促进团队协作,提升代码质量和平台功能。