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

在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项目开发,技术主要体现在实现阶段,但是它完全其影响到整个项目生命周期! 选择合适的理论和方法来解决问题,才有可能提高解决问题的效率和质量。

时间: 2024-11-01 09:58:44

Python开发WebService系列教程之REST,web.py,eurasia,Django_python的相关文章

linux服务器WEB环境一键安装包lanmp系列教程之二

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在我们安装了linux服务器WEB环境一键安装包lanmp后,可能会有不少疑问还有就是使用过程中出现的问题,下面为大家总结几点比较常见的,如若还有其他疑问,可到wdlinux论坛寻找相关教程. 1.正确的lnamp支持SSI的方法!即支持SHTML和include调用! 研究了一下午,参考了各种方法,才发现他们讲的都不完全,缺一个的话,就不行

深入浅出SQL系列教程之SQL语言简介

SQL是结构化查询语言(Structured Query Language)的缩写.这种语言允许我们对数据库进行复杂的操作.SQL语言的使用范围非常广泛.许多数据库产品都支持SQL语言,这意味着如果我们学会了SQL语言,我们可以把这种知识运用到MS Access 或 SQL Server, Oracle, DB2以及非常多的其它数据库中. SQL语言运用在关系型数据库中.一个关系型数据库把数据存储在表(也称关系)中.每个数据库的主要组成就是一组表.每个表又由一组记录组成--每条记录在表中有相同的

LNMP系列教程之二:删除站点及域名绑定

上一篇,笔者分享到"LNMP系列教程之一:添加域名建立站点",如果我们有遇到在该VPS中不想建立该网站,想移动到其他的空间中的时候.我建议大家还是删除原VPS中的站点绑定和数据,一来是为了原VPS中数据的干净度,二来可以便于其他人协同管理.如果你在这个VPS中出现其他站点数据,时间久了就不懂这个网站是不是在该主机中. 第一步,使用命令删除域名绑定; rm /usr/local/nginx/conf/vhost/***.org.conf 域名替换成自己添加的站点域名. 第二步,通过cd命

LNMP系列教程之 SSL安装WordPress博客(程序下载与安装)_Linux

在之前的文章中,老左已经在VPS中添加了站点,然后我们就需要传程序建站.我们可以利用WinSCP工具直接向我们的对应的站点目录中传程序,然后添加数据库安装网站.但是今天我分享的这个方法是比较先进的SSL远程下载程序,这样的好处是万一我们用的CMS程序较大,可以直接下载至VPS中,省的我们再去FTP传.用命令操作一来可以显得牛X,二来可以节省时间. 首先,用Putty登陆我们的VPS,到我们的站点目录下,今天我以安装wordpress建立博客为例: 其次,输入远程下载程序的命令: wget htt

java的nio之:java的nio系列教程之channel的概念

一:java的nio的channel Java NIO的通道类似流,但又有些不同: ==>既可以从通道中读取数据,又可以写数据到通道.但流的读写通常是单向的. ==>通道可以异步地读写. ==>通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入. 正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道.如下图所示: 二:java的nio的channel的实现 这些是Java NIO中最重要的通道的实现: ==>FileChannel  : ==>

LLsMP系列教程之二:添加站点建立网站方法

之前笔者和大家一起在debian安装了LLsMP环境.安装好环境,于是我们就肯定需要建立站点,建立站点我们可以通过2个方法完成,第一种就是比较推荐的方法也是我下面需要说的用SSH命令安装完成.另外一个种方法就是登陆Litespeed手工添加站点信息完成,这个方法比较复杂,以后有机会在专门写教程出来. 使用vhost.sh命令安装添加站点的方法如下,我们SSH登陆自己的VPS,然后输入下面的命令; 然后会弹出如上图所示的界面,输入我们需要添加的域名.下面会我们是否需要添加其他域名,不要就输入N,然

Microsoft .Net Remoting系列教程之二:Marshal、Disconnect与生命周期以及跟踪服务_自学过程

一.远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成.工作过程事实上是将该远程对象注册到通道中.由于Remoting没有提供与之对应的Unregister方法来注销远程对象,所以如果需要注册/注销指定对象,微软推荐使用Marshal(一般译为编组)和Disconnect配对使用.在<Net Remoting基础篇>中我已经谈到:Marshal()方法是将MarshalByRefObject类对象转化为ObjRef类对象,这个

安装所见即所得编辑器 Drupal使用系列教程之二

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 很多人习惯使用所见即所得编辑器,而Drupal自带的模块是没有的,需要自己安装,我们下面讲解fckeditor的安装过程,同时演示Drupal如何安装模块.fckeditor是一种所见即所得的编辑器,使用比较广泛,之所以选择这个编辑器是为了以后整合图片上传容易. 第一步,下载所需文件.需要下载两个软件包,一个是整合fckeditor到Drup

java的nio之:java的nio系列教程之selector

一:Java NIO的selector的概述===>Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件.这样,一个单独的线程可以管理多个channel,从而管理多个网络连接. 二:Java NIO的为什么要使用selector===>仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道.事实上,可以只用一个线程处理所有的通道.对于操作系统来说,线程之间上下文切换的开销很大,而且每个线程都要占用系统的一些