[关闭]
@zhangtao 2014-07-08T15:04:19.000000Z 字数 1675 阅读 2366

ODP RAL 及 SAF 服务调研


背景

Node方案中需要提供ODP中一些服务的功能,如资源访问、通用业务组件等。本文档调研ODP中RAL与SAF的常用功能,以确定node处理实现服务的方式(RPC调用或者重新实现)。

服务简介

RAL :

全称为 Resource Access Layer ,是 ODP 的资源访问层,使用 RAL 一站式接口与后端服务进行交互,不需要关注数据格式处理与协议交互的过程。

SAF:

SAF是ODP环境提供的业务层框架。SAF框架包含控制器组件,通用业务组件(参数处理,session处理,终端适配、日志打印等)以及通用配置组件。

使用场景

RAL :

调用后端服务(API等)服务及获取相应错误、服务信息等,并支持负载均衡和获取机器信息等。

SAF:

session(验证用户登录信息,更改用户的信息)、cgi(接受用户提交的数据,做编码的转换)、log(打印notice日志)、adapt(无线终端版式适配)、uuap(uuap单点登录验证)流程等。

常用接口

ral()

  1. mixed ral(string $service, string $method, mixed $payload, mixed $extra[, array $header])

参数

参数 类型 默认值 说明
service string 服务名,需是ral服务配置文件中已配置的某个服务
method string (version >= 1.1.0)http协议支持get或post(默认),其他协议保留使用,暂未生效
payload mixed 向后端发送的数据,根据配置的打包协议不同,将对输入数据做对应格式处理(详见下面注释部分)
extra mixed 可以是long型的负载均衡key 或array类型控制信息(version >= 1.1.0),见下面的详细说明。
header array (version >= 1.1.4)指定请求数据的header,各协议不同,见下面的详细说明。

ral_get_errno()

获取交互过程中 RAL 程序的错误码。

ral_get_error()

该函数返回一个字符串,以人类可读的字符串告知交互过程中发生的错误。

文库使用ral示例 : http://man.baidu.com/app/search/wenku/ral/#ral调用实例

Saf_Action_AdaptAction 接口

终端适配接口

Saf_Action_LogAction 接口

日志处理接口

Saf_Action_SessionAction 接口

session及用户信息接口

Node相关模块

DNode

基于NodeJs的JSON协议的RPC远程调用解决方案,并且还可以实现浏览器端直接调用远程服务(通过基于socket.io的 websocket开发库)

Git库地址: https://github.com/substack/dnode

使用示例

服务端

  1. var dnode = require('dnode');
  2. var server = dnode({
  3. transform : function (s, cb) {
  4. cb(s.replace(/[aeiou]{2,}/, 'oo').toUpperCase())
  5. }
  6. });
  7. server.listen(5004);

客户端

  1. var dnode = require('dnode');
  2. var d = dnode.connect(5004);
  3. d.on('remote', function (remote) {
  4. remote.transform('beep', function (s) {
  5. console.log('beep => ' + s);
  6. d.end();
  7. });
  8. });

dnode php版

服务端为php的dnode实现

git地址:https://github.com/bergie/dnode-php

thrift

thrift是一种可伸缩的跨语言服务的发展软件框架。它结合了功能强大的软件堆栈的代码生成引擎,以建设服务,工作效率和无缝地与C + +,C#,Java,Python和PHP、nodejs结合。

git地址:https://github.com/apache/thrift

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注