zencore-jsonrpc2

Zencore Jsonrpc2 Library


Keywords
zencore-jsonrpc2
License
MIT
Install
pip install zencore-jsonrpc2==1.0.12

Documentation

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视图)
      1. Decode payload
      2. Find service by payload.method
      3. Call service and get the result or exception
      4. 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进程内,是单例的。