跳转到主要内容

远程服务库API

项目描述

RSL - 远程服务库

此模块提供了一组接口和“插件”机制,以统一的方式访问不同协议和技术下的远程服务。

该库是作为“命令行shell服务集成”的一部分开发的。它已独立成一个包,以便进行模块化安装,也可能对其他项目也很有用。

RSL是一个纯客户端库,它允许轻松访问Web服务。它提供了服务协议和技术的完全抽象,并尝试将每个远程服务映射到Python方法。因此,从程序员的视角来看,本地方法调用和远程调用之间几乎应该没有区别(除了一些最小量的模板代码)。即使是SOAP、JSON或其他协议的使用,也应该完全隐藏(但不不可访问)。

该库的一个主要目标是,使其能够轻松地添加更多Web服务和传输协议,而无需更改其他所有部分。这允许逐步扩展库,并使每个包都更容易维护。它还允许将安装足迹保持在最小(只需安装所需的模块)。

文档

文档目前状况不佳,但随着API的稳定,这将会很快改变。此外,不断增长的用户提供反馈的用户基础将进一步缩短这个时间框架;)。

如上所述,本模块的核心是接口定义和“协议插件”的发现机制,这是通过Setuptools和Zope接口实现的。一般来说,给定接口背后的理念是,一个Web服务客户端可以被分割成多个组件。

传输:

每个远程访问都需要某种传输方式。传输协议是可插拔的,并且可以轻松替换,以便更容易地集成到其他框架,如Twisted。

描述:

由于存在许多不同的服务描述格式,这些格式通常支持多种服务协议,因此将服务描述实现为单独的组件是合乎逻辑的。

代理:

这类组件具有将描述和协议标准中的信息转换为可用的Python对象的知识,该对象作为代理来调用远程服务。

反序列化/序列化:

由于不同的协议允许不同的编码格式,反序列化/序列化器被实现为独立的组件,这使得它们可以在适当的地方重用。

类型系统:

通常基于XML的编码标准都有自己的类型系统(通常以XML-Schema表示)。这类类型系统也将用于JSON,以及可能的其他未来编码标准。类型系统尝试在Python数据类型和线缆表示之间进行映射,并允许实际用户忽略技术细节。

所有这些组件都尽可能地独立实现,以允许轻松替换、高重用性、极大的可扩展性和灵活性,当然还有易于安装。

以下模块与该模块一起开发

有关如何使用库的示例,请参阅附带的模块和测试。

状态

该库对于命令行服务集成效果相当不错。使用Python eggs和easyinstall安装相当容易。然而,由于整个项目相当庞大,并且处于早期开发阶段,许多事情还没有优雅地解决,并且很可能在不久的将来需要进行重构。然而,大多数的重构将使代码库更加符合PEP-08。API变更的可能性很高,这也是为什么这次发布目前被分类为alpha的原因。

一个重要的待办事项是,尽可能减少库的不便,这将大大提高整体库设计。

类型系统组件有点繁琐,目前只有一种实现(XML-Schema)可用。我希望这种情况会有所改善,至少有第二个类型系统实现可用。

注释

由于这个库也支持SOAP,可能会有人问:“为什么还需要另一个SOAP库?”简单的回答是,没有可用的可工作的客户端SOAP库。我测试了所有三个(或四个?)主要的SOAP库,没有一个能够与我所需要的Web服务配合工作。其中大部分SOAP库对我来说太简单了,而且其他一些存在一些严重的互操作性问题。(所以有两个原因:扩展现有库的难度与修改一个功能齐全的库相当,而修改代码库则更加困难。)

变更

0.2.1 (2008-12-09)

  • 修复了源分发(缺少CHANGES.txt文件)

0.2.0 (2008-12-03)

  • 初始发布

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

rsl-0.2.1.tar.gz (19.3 kB 查看哈希值)

上传时间

由以下支持