参数元数据信息可以从方法签名中获取,Invocatioon转换过程中是否可以加入一个尝试转换的逻辑。
也就是调用参数不一致的时候,看看能不能尝试一下自动转换。


Willem Jiang

Blog: http://willemjiang.blogspot.com (English)
          http://jnn.iteye.com  (Chinese)
Twitter: willemjiang
Weibo: 姜宁willem

2018-03-14 10:33 GMT+08:00 bismy <[email protected]>:

> 目前在分析如下业务场景。
> 场景1:----------
> Provider:定义一个借口
> @GetMapping
> public demo.Foo doSomething(demo.Bar request)
> Consumer: 使用RestTemplate调用接口:
> restTempalte.getForObject(url, otherDemo.Foo.class)
>
>
> java-chassis要求Foo的package名字完全一样。
>
>
> 场景2:-------------
> 同样是上面的代码。 Spring MVC支持GET的query参数映射到Bar的 属性, java-chassis不支持。
>
>
> 满足这些场景,需要在解析网络层的数据到Invocaton的时候(args参数),需要知道接口定义的元数据信息(
> 比如class类型),而这些在契约里面是不能体现的(因为契约和语言无关)
>
>
>
>
> 产生这种情况的本质原因是Invocation的args是语言有关的内容。
>
>
> 建议:
>
>
> Invocation的args做修改,尽可能体现一种契约描述的中立的数据结构,这个数据结构可以使用类似HttpServletRequest
> /HttpServletResponse的结构(越贴近契约越好,但要考虑网络层转换和编码层转换的性能)。
> 这样的话网络层到Invocation可以做极小的转换。
> 编码层可以结合代码的元数据和Invocation的的契约元数据将Invocation转换为args。
>
>
> 由于这个涉及到兼容性问题,针对上面的场景和实现优化, 大家有什么建议?

Reply via email to