工程在命名时一般也遵循api和impl分离的原则(如下是实现流程的工程结构),但是不同定义的工程对api的认识其实并不是一致的。
my-flow
|__my-flow-api
|__my-flow-impl
一、项目是一个自运行的平台,service as 平台
如果my-flow工程是一个后台服务,他是可以独立运行的一个平台。那么api,impl建议按照如下规则进行定义:
1)my-flow-api更多情况下应该定义为core的角色和职责,其可以脱离my-flow-impl而独立运行。
2)my-flow-impl是core实现时根据预留的扩展规则,而根据业务场景自定义的具体实现,可以替代或扩展已有的功能;
一般多见于SPI结构的工程,impl多为某种spi实现。
二、项目常被以一种规范而依赖,调用,service as 客户端/服务端
如果工程常能清晰的划分出客户侧和服务侧。其中客户侧常需要暴露API,被客户端依赖和调用(如微服务场景);服务侧则实现具体的业务处理。
为避免客户端依赖my-flow的实现逻辑,一般作如下职责定义:
1)my-flow-api:定义接口,不包含具体实现,被第三方依赖;
2)my-flow-impl:实现接口定义的逻辑;
微服务下,一般为客户端依赖my-flow-api工程,通过某种RPC框架(dubbo,jsf等)调用远程的微服务实现(my-flow-impl所在);
网友评论