Tuscany所服务调用中的每个Service作为一个RunTimeWire进行实现,而针对Service中的方法在调用时形成一个Invocation Chain,其中每个Chain采用了链式调用机制,这有点类似Servelet 中的Filter,在Tuscany中我们称之为Interceptor,在服务调用时从Chain的头Interceptor起开始执行。Tuscany在服务调用中支持异步调用就是在chain的头部加上一线程Interceptor 名字叫NonBlockingInterceptor,来执行其后的Intercetpor。其调用的流程图如下:
同样的方式也应用到Service的回调(Callback)当中。
Interceptor的接口也很简单,只有两个方法定义其链式调用。
经过上面的介绍,我想如果想在服务调用过程当中添加自己的动作是再简单不过的事情了,只是简单在实现Interceptor接口,然后注入到Invocation Chain中去罢了。
用户评论