@zhangtao
2014-07-08T15:04:19.000000Z
字数 1675
阅读 2366
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单点登录验证)流程等。
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 程序的错误码。
该函数返回一个字符串,以人类可读的字符串告知交互过程中发生的错误。
文库使用ral示例 : http://man.baidu.com/app/search/wenku/ral/#ral调用实例
终端适配接口
日志处理接口
session及用户信息接口
基于NodeJs的JSON协议的RPC远程调用解决方案,并且还可以实现浏览器端直接调用远程服务(通过基于socket.io的 websocket开发库)
Git库地址: https://github.com/substack/dnode
服务端:
var dnode = require('dnode');
var server = dnode({
transform : function (s, cb) {
cb(s.replace(/[aeiou]{2,}/, 'oo').toUpperCase())
}
});
server.listen(5004);
客户端:
var dnode = require('dnode');
var d = dnode.connect(5004);
d.on('remote', function (remote) {
remote.transform('beep', function (s) {
console.log('beep => ' + s);
d.end();
});
});
服务端为php的dnode实现
git地址:https://github.com/bergie/dnode-php
thrift是一种可伸缩的跨语言服务的发展软件框架。它结合了功能强大的软件堆栈的代码生成引擎,以建设服务,工作效率和无缝地与C + +,C#,Java,Python和PHP、nodejs结合。