Jackiesteed

www.github.com/jackiesteed

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

wsgi 之 竞争对手

web开发的接口规范除了最早的cgi,各个语言也开始有自己独立的规范。

这些规范从产生的过程中看分为两类,一个弱势如wsgi,一个强势如servlet。

wsgi从外观上很接近cgi的调用方式,和unix环境中调用一个程序也很类似:给你一堆环境变量,加上参数。如果把wsgi application 看作一个脚本,其实就是外界通过wsgi 调用python的脚本而已。

从功能上servlet要比wsgi复杂得多。wsgi更多关注接口层,只要返回规定格式的数据,至于appliation中怎么实现并无要求。servlet规定了各个组件的写法,往往要继承某个基类,override某几个方法,然后在web.xml中配置,还有复杂的生命周期管理。

wsgi的规范就是 pep333 和 pep 3333,servlet3.0的规范是个230页的pdf。

二者只是在web开发中有对应的地位,但实现细节,操作细节都差别很大。

刚从java web开发接触python的时候对wsgi和servlet的差别简直不可想像,这也成为我一直很好奇的地方,现在总结有两个原因。

随语言出现的时间

关于wsgi 和servlet 有几个时间特别值得玩味,

python诞生于1989年,而pep333(第一个wsgi规范)是03年发布。

java诞生于 1995年,而servlet发布于1997年。

看过 《wsgi 之 因何而生》的读者应该了解 wsgi 规范因为要适应业已存在的诸多python web框架,必须做到简单,否则这些框架很难实现,pep333 就是一纸空文。

java语言诞生不久,加上当时web的流行,cgi编程方兴未艾,在java web框架还几乎没有的时候,java之父就开始构思完整的web开发规范,足见servlet的远见。以后几乎所有的java web框架都遵循统一的规范,这也是java web开发可以大规模推广的原因。想想python web开发者在选择框架时的傲娇。。。

社区特点

python 发迹于科研界,因为快速开发原型的特点被中小企业认可,后来得益于google的“推广”,得以进入众多开发者的视线。但是推动python发展的社区一直都是松散的,一直不温不火的发展着。在这样的环境中想强行去统一一件事,需要投入的资源是社区本身承受不了的。

java背后一直都是大公司,可以做到花钱保证高质量,走的是高端大气上档次的路线。生于大公司,用于大企业。java的世界里充满了一致和规范。

对web开发的影响

wsgi 对各个web 框架的影响太弱,熟悉wsgi对于你熟悉某个python web开发框架帮助并不大, 你还是需要看框架的文档。只要熟悉了servlet,如果不使用各serlvlet应用服务器特殊的功能,切换应用服务器其实学习成本并不高。在最终部署方式来说,无疑servlet更加适合开发,运维等角色分离的大公司做法。

和servlet 不同,python的web框架可以差异巨大,就像一个生物圈,什么物种都有,从老泰龙钟的zope到新潮的bottle。可选择的范围广,加上用python写个可用的web框架实在不难(基础工具一大堆),拼拼凑凑一个“框架”就出来了。 所以python的web开发技术上可以很快进化。

随着web开发技术的成熟,很多开发人员希望更多地控制web开发地细节,相比大一统地web框架,小巧灵活地web开发工具包更加受新一代developer的青睐。这也是web技术发展的一个方向。

如果崇尚自由可定制,可以尝试wsgi web开发的信马由韁,如果坚守稳定可靠, servlet的规范一致给你足够的信心。好坏只在你的需求,无关对错。

转自: http://blog.crazjob.com/4

posted on 2015-02-12 00:56  Jackiesteed  阅读(1090)  评论(0编辑  收藏  举报