Python开发WebService系列教程之REST,web.py,eurasia,Django


Posted in Python onJune 30, 2014

在Bioinformatics(生物信息学)领域,WebService是很重要的一种数据交换技术,未来必将更加重要。目前EBI所提供的WebService就分别有SOAP和REST两种方式的服务,不管是数据服务还是计算服务(计算任务提交)。

1 Python + SOAP/WSDL/UDDI

最普遍的做法(个人观点)是使用 python ZSI2.0   ,ZSI还依赖于 SOAPpy  和 pyXML  等LIB。

SOAP协议很多人都很熟悉,有很多现有的应用也都使用Java等语言来开发服务端,而客户端除了java,绝大多数的脚本语言也都可以胜任。

关于python ZSI的使用可以参考IBM DW上的这篇文章: 使用 python 开发 Web Service

2 Python + REST

REST一词目前确实很流行;那么使用Python做REST开发,如何做技术选型呢???

其实接触过python web的人应该都知道Django,典型的REST风格的WEB框架 !!!

那么在实际开发中,我们究竟如何选择?

(1 如果你不是架构师,并不过分追求REST的面向资源的理念和体验REST风格架构的具体实践的话,那么,还是根据自己的业务需求和规模等,选择适合的WEB框架或者python web server就好了;比如常见的Django,web.py,cherrypy,Zope,Twisted,Quixote,spyce,webware for python ... 当然国内的框架也不少。

(2 如果你确实想体验下REST风格架构以及面向资源的设计,也许你可以选择使用web.py来达到目的;

这里有一篇关于使用web.py实现RESTfull开发的博客文章: Getting RESTful with web.py   , 相信有很好的参考价值 。

这里还有一篇中文的博文:  用Python实现CRUD功能REST服务

(3 你可以选择eurasia !!!  地址:  http://code.google.com/p/eurasia/

eurasia是一个值得你了解的东西,它是一个server,也包含框架;而且主要特点是:

“ Eurasia is a low-level Python Web framework which follows the Tao

Eurasia3 被设计成用于解决百万级同时在线的长连接用户数量的 HTTP 服务器, 或者每秒种处理上万次 CGI 请求的常规 Web 应用服务器。

Eurasia3 向下兼容 AJAX (难道 AJAX 对服务器有要求吗?), 但是她不推荐您使用落后的 AJAX 模式来摧残用户和程序员, 她正在尝试使用诸如 Pushlet  (Comet 是 Pushlet 的炒作版本) 一类的有趣技术来改变 Web 的开发面貌。

这里的Eurasia3是相对于 Eurasia2说的,两者并不是一会事哦!

这里有它的文档,可以了解和学习下: http://eurasia.googlecode.com/files/Eurasia-3.0.0a6.2-snapshot.tar.bz2

(4 其他方案。

尾声:

在做技术选型时,有两个前提很重要:1 你充分地了解你的项目需求,而且你很清楚自己要把它做成什么样,做到什么规模; 2 你对项目实现相关的技术和理论比较了解,知识面要够广,同时对于主要流派的主要特色要清楚。

之后,你才可能做出不同的方案来比较选择!  对于IT项目开发,技术主要体现在实现阶段,但是它完全其影响到整个项目生命周期! 选择合适的理论和方法来解决问题,才有可能提高解决问题的效率和质量。

Python 相关文章推荐
Python制作数据导入导出工具
Jul 31 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
利用python解决mysql视图导入导出依赖的问题
Dec 17 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
python使用celery实现异步任务执行的例子
Aug 28 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 Python
Python远程方法调用实现过程解析
Jul 28 Python
用python自动生成日历
Apr 24 Python
python画条形图的具体代码
Apr 20 Python
windows下wxPython开发环境安装与配置方法
Jun 28 #Python
Python使用稀疏矩阵节省内存实例
Jun 27 #Python
Python实现的百度站长自动URL提交小工具
Jun 27 #Python
python使用心得之获得github代码库列表
Jun 25 #Python
在Python中使用异步Socket编程性能测试
Jun 25 #Python
Python开发的单词频率统计工具wordsworth使用方法
Jun 25 #Python
python 字典(dict)遍历的四种方法性能测试报告
Jun 25 #Python
You might like
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
DOMXML函数笔记
2006/10/09 PHP
php获取url参数方法总结
2014/11/13 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
Node.js模块加载详解
2014/08/16 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
vue v-model的用法解析
2020/10/19 Javascript
python简单获取数组元素个数的方法
2015/07/13 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
python读取文件名并改名字的实例
2019/01/07 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
深入了解Python enumerate和zip
2020/07/16 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
七一党建活动方案
2014/01/28 职场文书
大学班级学风建设方案
2014/05/01 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
食品药品安全责任书
2015/05/11 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫