TSRPC 介绍 —— TypeScript 的开源 RPC 框架

传送门

https://tsrpc.cn

TSRPC 是一个沉淀近 4 年的 TypeScript RPC 框架,不仅经过了多个千万用户级的项目验证,而且你可以联系到一个活着的讲中文的作者。

介绍

TSRPC是什么

TSRPC 是一个 TypeScript 的 RPC 框架,适用于浏览器 Web 应用、WebSocket 实时应用、NodeJS 微服务等场景。

目前,大多数项目仍在使用传统的 Restful API 进行前后端通信,这存在一些痛点。

1. 依赖文档进行协议定义,前后端联调常被低级错误困扰(如字段名大小写错误,字段类型错误等)。
2. 一些框架虽然实现了协议定义规范,但需要引入 Decorator 或第三方 IDL 语言。
3. 一些框架虽然实现了类型校验,但无法支持 TypeScript 的高级类型,例如业务中常见的 Union Type:

export type ReqLogin = {
  type: 'password',
  password: string
} | {
  type: 'wechat',
  code: string
}

4. JSON 支持的类型有限,例如不支持 ArrayBuffer,实现文件上传会非常麻烦。
5. 请求和响应都是明文,破解门槛太低,字符串加密方式有限且强度不够。
6. 等等...

我们无法找到一个能完美解决这些问题的现成框架,于是我们全新设计和创造了 TSRPC 。

概览

一个名为 Hello 的协议,从定义、实现到浏览器调用。

协议定义

export interface ReqHello {
  name: string;
}

export interface ResHello {
  reply: string;
}

服务端实现

export async function ApiHello(call: ApiCall) {
  call.succ({
    reply: 'Hello, ' + call.req.name
  });
}

客户端调用

let ret = await client.callApi('Hello', {
    name: 'World'
});
console.log(ret); // { isSucc: true, res: { reply: 'Hello, World' } }

TSRPC 介绍 —— TypeScript 的开源 RPC 框架_第1张图片

全程代码提示

TSRPC 介绍 —— TypeScript 的开源 RPC 框架_第2张图片

参数类型检测(编译时刻 + 运行时刻)

特性

TSRPC 具有一些前所未有的强大特性,给您带来极致的开发体验。

  • 原汁原味 TypeScript
    • 直接基于 TypeScript type 和 interface 定义协议
    • 无需额外注释,无需 Decorator,无需第三方 IDL 语言
  • 自动类型检查
    • 在编译时刻和运行时刻,自动进行输入输出的类型检查
    • 总是类型安全,放心编写业务代码
  • 二进制序列化
    • 比 JSON 更小的传输体积
    • 比 JSON 更多的数据类型:如 DateArrayBufferUint8Array 等
    • 方便地实现二进制加密
  • 史上最强大的 TypeScript 序列化算法
    • 无需任何注解,直接实现将 TypeScript 源码中的类型定义序列化
    • 首个也是目前唯一支持 TypeScript 高级类型的二进制序列化算法,包括:
    • Union Type
    • Intersection Type
    • Pick Type
    • Partial Type
    • Indexed Access Types
    • 等等
  • ☎ 多协议
    • 同时支持 HTTP / WebSocket
  • 多平台
    • NodeJS / 浏览器 / App / 小程序
  • ⚡️ 高性能
    • 单核单进程 5000+ QPS 吞吐量(测试于 Macbook Air M1, 2020)
    • 单元测试、压力测试、DevOps 方案齐备
    • 经过数个千万用户级项目验证

兼容性

完全可以在 Server 端使用 TSRPC,同时兼容传统前端。

  • 兼容 JSON 形式的 Restful API 调用
  • 可自行使用 XMLHttpRequestfetch 或其它 AJAX 框架以 JSON 方式调用接口
  • 兼容纯 JavaScript 的项目使用
  • 可在纯 JavaScript 项目中使用 TSRPC Client,也能享受类型检查和序列化特性
  • 兼容 Internet Explorer 10 浏览器
  • 浏览器端兼容至 IE 10 ,Chrome 30

开始学习

虽然有诸多新鲜、令人激动的强大特性, 但就像你能在 Github 上看到的那样,TSRPC 其实是一个已经开源超过 4 年的成熟框架。虽然一直没写文档,也没怎么推广,但我们已经使用它开发了若干个百万级DAU、千万级用户的项目,累计覆盖超过1亿+线上用户。

对于这份文档的迟到感到抱歉,希望能对你的工作有所帮助。

开始学习 TSRPC

你可能感兴趣的:(typescript,node.js,nodejs,rpc,nestjs)