远程服务库API
项目描述
RSL - 远程服务库
此模块提供了一组接口和“插件”机制,以统一的方式访问不同协议和技术下的远程服务。
该库是作为“命令行shell服务集成”的一部分开发的。它已独立成一个包,以便进行模块化安装,也可能对其他项目也很有用。
RSL是一个纯客户端库,它允许轻松访问Web服务。它提供了服务协议和技术的完全抽象,并尝试将每个远程服务映射到Python方法。因此,从程序员的视角来看,本地方法调用和远程调用之间几乎应该没有区别(除了一些最小量的模板代码)。即使是SOAP、JSON或其他协议的使用,也应该完全隐藏(但不不可访问)。
该库的一个主要目标是,使其能够轻松地添加更多Web服务和传输协议,而无需更改其他所有部分。这允许逐步扩展库,并使每个包都更容易维护。它还允许将安装足迹保持在最小(只需安装所需的模块)。
文档
文档目前状况不佳,但随着API的稳定,这将会很快改变。此外,不断增长的用户提供反馈的用户基础将进一步缩短这个时间框架;)。
如上所述,本模块的核心是接口定义和“协议插件”的发现机制,这是通过Setuptools和Zope接口实现的。一般来说,给定接口背后的理念是,一个Web服务客户端可以被分割成多个组件。
- 传输:
每个远程访问都需要某种传输方式。传输协议是可插拔的,并且可以轻松替换,以便更容易地集成到其他框架,如Twisted。
- 描述:
由于存在许多不同的服务描述格式,这些格式通常支持多种服务协议,因此将服务描述实现为单独的组件是合乎逻辑的。
- 代理:
这类组件具有将描述和协议标准中的信息转换为可用的Python对象的知识,该对象作为代理来调用远程服务。
- 反序列化/序列化:
由于不同的协议允许不同的编码格式,反序列化/序列化器被实现为独立的组件,这使得它们可以在适当的地方重用。
- 类型系统:
通常基于XML的编码标准都有自己的类型系统(通常以XML-Schema表示)。这类类型系统也将用于JSON,以及可能的其他未来编码标准。类型系统尝试在Python数据类型和线缆表示之间进行映射,并允许实际用户忽略技术细节。
所有这些组件都尽可能地独立实现,以允许轻松替换、高重用性、极大的可扩展性和灵活性,当然还有易于安装。
以下模块与该模块一起开发
rsl.wsdl:通用WSDL模块
rsl.wsdl1:WSDL 1
rsl.soap11:SOAP 1.1 + WSDL 1 SOAP 1.1扩展
rsl.mime:WSDL 1 MIME扩展
rsl.http:WSDL 1 HTTP扩展
rsl.rest:类似REST的服务
rsl.jsonrpc10:JSON-RPC 1.0实现
rsl.smd01:SMD 0.1实现
rsl.upnp:UPnP描述
rsl.xmlrpc:XML-RPC
rsl.xsd:XML Schema类型系统
有关如何使用库的示例,请参阅附带的模块和测试。
状态
该库对于命令行服务集成效果相当不错。使用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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 48a861781b7858357850ef18b621377b44d14954e187ebb448459a1083a4eddf |
|
MD5 | d275668d96031e26c34f73fec04ed1c6 |
|
BLAKE2b-256 | 9b0031503b1ad42eb112a44b58e3bb7cd453852e578c6e3b735af1f8b368c7f4 |