layotto / java-sdk

java sdk for layotto
8 stars 13 forks source link

refactor: refactor sdk layer #9

Open kevinten10 opened 2 years ago

kevinten10 commented 2 years ago

Hi,这里是对原有runtime-sdk的改动(不包含reactor),我尽力保持所有类路径和使用方式的不变。

layer design

Here is the overall design of the modules:

        runtime-sdk
        ↑             ↑
    sdk-domain     spec-pb
        ↑                      
sdk-infrastructure    

runtime-sdk中拆分出了sdk-infrastructuresdk-domain模块。

sdk-infrastructure:

变更介绍

runtime-sdk中的基础定义类、工具类、属性类等下沉到sdk-infrastructure层,这将被多种上层实现复用。

非兼容的变更点

sdk-domain:

变更介绍

将标准API的定义剥离到sdk-domain层,包括请求响应的实体类、接口定义。

独立的API定义模块sdk-domain,将有利于:

注:sdk-domain仅包含同步调用的api,后续reactor模式的api将放在sdk-domain-rx模块中。

变更点

我没有改动原有的API接口和实体类的使用(仅在代码风格上做了统一,以及添加了toString这样的方法)。

不过我新增了configuration的API entities和API接口(接口方法先注释掉了,后续再添加实现)。

故和原有API兼容。

grpc

仍在保留在runtime-sdk中。

kevinten10 commented 2 years ago

@seeflood Hi,这里是基于 https://github.com/layotto/java-sdk/pull/7 中的讨论,对原有runtime-sdk的层级重构和代码格式优化。

理论上,这个PR是对使用方无感的,麻烦有空帮忙review一下~

seeflood commented 2 years ago

感谢 我晚上看下!

seeflood commented 2 years ago

感谢贡献,有几个问题需要讨论下~

关于sdk-infrastructure

  1. exceptions相关的类感觉适合放到domain包?
  2. 我看 sdk-domain 虽然依赖了 sdk-infrastructure ,但是好像domain没有import这里面任何代码?
  3. domain包和infrastructure的边界是啥,会让人有一定的理解成本,想再简单一点。为啥一定要把这里面代码单独抽出来一个包呀? 拆这个包是为了让blocking sdk 和rx sdk复用代码么?

如果是为了代码复用,能否:

a. 简单一点,就把这些代码放在domain包里呢 (事实上,目前这俩包其实是当一个包用的,上层依赖了domain就依赖了这俩包)

        runtime-sdk
        ↑             ↑
    sdk-domain     spec-pb

b. 如果不行的话,改个名字呢,sdk-domain改叫sdk-api,spec-pb改名叫sdk-grpc-api,sdk-infrastructure改叫sdk-utils,

image

seeflood commented 2 years ago

(如果打字不好沟通的话,可以约个时间视频会议聊

kevinten10 commented 2 years ago

@seeflood good idea! 工作日下午怎么样?

seeflood commented 2 years ago

@kevinten10 好呀 明天下午?你看几点合适

kevinten10 commented 2 years ago

要不就先暂定明天下午三点或者四点吧~

seeflood commented 2 years ago

kevinten10 commented 2 years ago

Iam busy at the end of the year.

Give me some time to finish the refactoring~

seeflood commented 2 years ago

@kevinten10 hi, is this PR ready for review? Besides, we have two refactor PR now, both https://github.com/layotto/java-sdk/pull/7 and this one. Should I close #7 ?