qian奇岸微信二维码 如您需要快速报价 请加技术经理微信 服务热线
13501992972
"MENU"
首页 > 开发知识 > 正文

后端跑的app当服务器拿到你的请求url,它会扔给一个跑在它

奇岸开发
ahqian.com
09/12/2022
wechat

无需加好友免费技术支持

经过9个小时的折腾,服务器终于架好了,因为uwsgi不友好,发现了比较nginx服务器还快——gunicorn,以前python不易部署,所以被php但估计不久, 就是我打python天下了!

好了,回到整体,其实我想把今年的发展经验献给第一个博客,告诉别人我走过的坑。

后端

在了解后端之前,你必须知道当你打开一个网页时发生了什么。

这张图是用的nginx和gunicorn做服务器代理

如图所示,通常在这些步骤之后,您首先发送请求(request)给服务器,对服务器说服务器服务器,给我域名下的页面get的方法访问的这个网址(url),服务器将接受您的访问并获取您的访问信息。

服务器是如何理解你的请求的,主要是因为有一个通用的写作方法,即协议——HTTP协议,这使得每次发送的表头都有规律,可以通过程序进行分析,如:

200是一个状态码,表示成功。4开头的状态码表示浏览器访问错误,如404,5开头的状态码表示服务器错误,如502

现在你发出请求(request),url是 这里面,http是协议(protocol),aljun.me是hostname,这里有一个隐含的,一般默认端口( port )为80,/about是path ,然后有一段query的值 username=salamer,这些信息将交给后端。app就像你给搜索引擎一串关键词一样,搜索引擎会回复你想要的结果。

后端跑的app

当服务器拿到你的请求url,它会扔给一个跑在它上面的人app,这是一套操作逻辑。你可以理解它是一个黑盒子。如果你给它扔东西,它会回到一个东西。现在我用一个最简单的flask以后端程序为例:

好吧,让我一句一句地解释这个程序。首先,你首先初始化一个程序flask应用程序,传递给它app(第一,二行),然后你得到一条路由(url)(第四行),这里得到的是 /目录,路由装饰器下运行的函数是当访问时 / 从路径中使用的逻辑可以看出,它返回到一个hello world,最后两句是,使app运行,这是python一种写不被调用

好吧,我们来看看

此时,您可以打开浏览器输入 `127.0.0.1:5000,

好,一个最简单的网站后端就算完成了。但是这单单只是客户端与服务端的交互,只涉及逻辑,并没有设计数据,现在的网站基本上都有复杂的数据库交互,即是,在运行app时,app会使用 * sql * 当语句与数据库互动并获取数据时,它将进入前端。

MTV

mtv是一种模式,它和mvc相类似,mtv分别指m(models,数据层),t(template,模板层),v(views,逻辑层)

python的web框架基本上是这个套路(django,flask,tornado)它们的作用是把一个后端app与逻辑分离不同,更好地扩展应用程序php,jsp那只是完全渲染,mtv分别作用:

M:一般使用定义数据库python的orm(如django的orm,或者着名的sqlalchemy)设计数据库,包装sql句子创建数据,对app起数据库的 起CRUD(增删查改)的作用T:前端渲染,用来写前端逻辑,一般可以嵌入一些python语句甚至是python函数方法,在python该领域的主流是(jinja2,和mako,连django也在其1.8版本后引进jinja2引擎)V:后端逻辑,即rails里面的controller他用它来调节从数据库中获取的数据和传输的数据template,和渲染哪个html文件、重定向等。MVC

其实mtv是mvc但是因为mvc在ruby,java等语言上的web很多后端框架都是基于他的。

后端框架(webframework)

首先放一个框架的排名(摘自

看到,ruby,python动态语言等web后端框架还是挺牛逼的。

为什么要使用框架,其实现在,如果说一切都是自己写的,那么开发效率就会很低,在产品迭代这么快,o2o即使产品每周迭代一次,如果开发团队不能快速迭代产品,也会很快被对手抛弃,被市场抛弃,框架iu最好的帮手是帮助我们,早期的框架相对混乱,但现在一般来说,一个好的框架是基于一定的好的软件方法概念mvc,mvvm之类的。

框架有多快?框架内的领导者ruby on rails有一段视频是在15分钟内开发的blog。

我将谈谈我在过去半年里使用的一些框架的经验

Django

这算上是python的web框架里的老板已经被拿走了rails相比,在quora上面的django vs rails 战争持续了很长时间,但是django确实有很多地方值得批评,尤其是性能,因为它是一个大而完整的框架,几乎什么都有,主要模块包括:django.template,django.orm,django.forms,django.url,django.admin,django.authenticate等等,其中最值得称赞的好像是django自带的admin系统,作者自己开发了学校的社区系统,后端是基于admin系统,节省了我很多事情,但是因为他坚持什么都是自己来的,所以代码量巨大,看源码几乎是一件很难的事情,它的orm首先,我爱恨他。django的orm真的够简单的。就关系而言,多对多,一对多很容易设计。sqlalchemy建立一个关系表,他真的太简单了,但这也导致了性能下降,其次是他的template系统,最近的1.8更新,最后他放弃了跑不动的template系统,转向拥抱jinja但两者的语法相当相似。

使用公司:IBM,NASA,instagram,disqus,Pinterest,mozila

FLASK

我的博客是基于flask开发的,flask它自称是基于两个库的微框架,一个前端渲染库jinja2,一个url库Werkzeug,其他东西可以自己东西,比如我的博客。wtf,sqlalchemy,pagedowm等库而开发,flask比起django自由性很大,但这也意味着你需要自己很多轮子

使用公司:国内果壳网,pinterest等

tornado

这是一种可以处理异步的方法web服务器,可以用来写后端框架,自己有一套template,一开始他是由的feedback开发,后来feedback被facebook他转而由收购facebook开发,facebook的前cto出去创业的quora就是基于tornado写的,而quora的国内版本 知乎 也是基于的tornado,由于异步带来的效率,他非常受欢迎。然而,作者不太喜欢他java然而,如果效率高,最近似乎无法与同样的异步相比nodejs。

使用公司:facebook,quora,知乎

ruby on rails

这是传说中框架中的王冠,支撑着早期的推特和很多公司,基本上是硅谷rails火一塌糊涂,ruby语言的作者赞其是将ruby元编程能力发挥到了变态的程度,当时作者自己按照rails guide写作时,完全处于非常恍惚的状态,一下子,几行代码,一个博客就出来了,而且代码可以复用型极高,语法也很简单,会coffescript,jquery一起包括什么,很吓人,写起来很爽

全面基于mvc框架,自然支持RESTful如果是初创企业,建议使用架构

使用公司:推特,github,tumblr,国内的100offer,freewheel以及非常多的公司在自己的领域使用rails开发小应用

详情:有哪些企业使用rails

nodejs

基于谷歌v8的javascript引擎的框架几乎在世界各地都很流行。他让他让javascript不再只是前端脚本语言,而是javascript自然对事件异步的支持也使用nodejs后端开发效率很高,作者nodejs经验不是特别多,但我不太喜欢那种javascript的语法,国内的话BAT基于内部的持续发展nodejs应用,更是nodejs mongodb express angularjs(mean框架)是目前最受欢迎的初创公司的技术选择。

使用公司:BAT等等的很多公司

热度448

了解更多后端跑的app当服务器拿到你的请求url,它会扔给一个跑在它欢迎联系奇岸开发客服。

奇岸开发可定制企业官网小程序、小程序商城、餐饮外卖小程序、预约小程序、多门店小程序、分销小程序及个人小程序。

微信二维码

微信长按识别或扫一扫,无需加好友直接咨询,企业网站开发、网站托管维护、企业管理系统开发、微信小程序制作、域名主机、网站备案、网站改版等提供专业技术解答。

精彩推荐

猜你喜欢