理想很丰满,现实往往很残酷。
一种按照需求驱动开发的方式,根据业务来逐个编写所需的模块,然后按照模块编写所需的接口,构建中间件和解耦的command、handler等。通过这样的方式,一个项目便初具雏形。该项目的显著特点是按需开发,无需定义与业务相关的公共模块,有则使用,无则不添加。这种项目看起来似乎没有公共框架,只是一个独立的项目。当然,这种方式的效率和性能也是最高的,无需过多地包装公共代码。
有关示例如下,不做过多的赘述:
l iuzhixin405/netcore-micro (GitHub.com)
一种业务规模庞大的项目,开发人员只需要编写业务实现,这就需要一个公共框架,提供可复制的公共模块,以便业务人员编写业务代码。
下面以简洁的方式呈现这种开发模式,项目层级如下:
三个模块分别是业务模块、主机和基础模块。业务模块Business以dll形式提供给host进行注册和发布。
主机host可以存放公共的基础模块,例如注册、登录、认证等,这里省略。
业务模块存放业务代码,包括提供接口。
流程如下:request => 业务模块controller => business => service => repository
整个项目的接口保持不变,实现可以各异。
在仓储层定义几个公共的方法,
服务层也是同样的方法
依赖注入还是老一套,实现它就行。
在主机通过扫描assembly来注册服务
业务需求注入代码如下:
在business层加了aop,通过proxy的方式
在你需要的每个方法前加上特性就可以了
再控制器层加了个公共的,不管是controller拦截还是公共的部分都可以写到这里
该框架主打就是一个简陋,像日志、缓存、消息中间件都可以提前约定好公共接口,service层接口调用,business层注入需要的实现。按照接口和实现分离的方式该项目还需要调整下目录
地址如下:
liuzhixin405/single-arch (github.com)