✅什么是泛化调用?

典型回答

通常我们在使用RPC服务的时候,都是需要依赖别人提供的API的,这样我们就可以面向接口编程,就像调用本地代码一样直接调用接口方法就行了。在实际调用中,会通过代理的方式进行远程调用。

但是,有时候如果我们没有别人提供的API的话,怎么办呢,这时候就需要泛化调用了。

泛化调用是指在调用方没有服务方提供的API(SDK)的情况下,对服务方进行调用,并且可以拿到调用结果。

一般在测试集成工具、网关服务中用泛化调用比较多。

在Dubbo中,可以通过GenericService 调用所有服务实现:

<dubbo:reference id="testService" interface="com.hollis.TestService" generic="true" />


GenericService barService = (GenericService) applicationContext.getBean("testService");
Object result = barService.$invoke("sayHello", new String[] { "java.lang.String" }, new Object[] { "World" });

通过使用GenericService服务即可实现对com.hollis.TestService服务实现泛化调用了,整个过程都不需要对应的API,只需要知道这个服务的全路径名就行了。

原文: https://www.yuque.com/hollis666/xkm7k3/kogite7l9dkksl4q