简介

有时候,我们可能会希望在远程过程调用中对通讯的一些细节有更多的控制,比如对传输中的数据进行加密、压缩、签名、跟踪、协议转换等等,但是又希望这些工作能够跟服务函数/方法本身可以解耦。这个时候,Hprose 过滤器就是一个不错的选择。

Hprose 过滤器是一个接口,它有两个方法:

  1. type Filter interface {
  2. InputFilter(data []byte, context Context) []byte
  3. OutputFilter(data []byte, context Context) []byte
  4. }

其中 InputFilter 的作用是对输入数据进行处理,OutputFilter 的作用是对输出数据进行处理。

data 参数就是输入输出数据,返回值表示已经处理过的数据,如果你不打算对数据进行修改,你可以直接将 data 参数作为返回值返回。

context 参数是调用的上下文对象,它用来在客户端或服务器端的整个调用流程中前后传递数据,有一点需要注意,客户端的 context 数据并不会传给服务器端的 context,客户端和服务器端的 context 是独立的。

原文:

https://github.com/hprose/hprose-golang/wiki/Hprose-%E8%BF%87%E6%BB%A4%E5%99%A8