zencore-jsonrpc2
- package name: zencore-service
- module name: zencore_service
基本需求
-
功能性要求
- 为django应用设计的rpc2.0接口开发框架
- 服务自发现
- 服务自描述
- 提供js前端调用sdk
- 提供python后端调用sdk
-
安全性要求
- 可以启停的csrf保护机制
- 基于session的认证保护机制
-
性能优化要求
- 允许nginx/haproxy等web服务器或代理在不解压数据的情况下,识别调用目标
- 允许一次请求多个服务调用
概要设计
-
服务端概述
- 接口协议:jsonrpc 2.0(详见:http://www.jsonrpc.org/specification)
- 请求方法:POST
- 输入参数:request.PAYLOAD
- 响应数据:JsonResponse
- 接口路由:固定入口
-
客户端概述
- 提供python3客户端(基于requests)
- 提供jQuery客户端
- 提供angularjs 1.x客户端
-
服务端处理流程
- DJANGO请求处理机制
-
- ServiceManager.handler(标准django视图)
-
- Decode payload
- Find service by payload.method
- Call service and get the result or exception
- Make response
-
核心模块列表
- zencore_service.server.Fault
- zencore_service.server.Service
- zencore_service.server.ServiceManager
- zencore_service.middlewares.CsrfProtectMiddleware
- zencore_service.client.JsonrpcProxy
FAQ
-
Service是每次请求都进行实例化,还是单例模式?
Service类在注册时,进行实例化。所以在一个worker进程内,是单例的。