上篇说道,将会根据RPC框架结构,构建Web MVC,那么这里先来了解RPC框架的大概结构:
对于我们的Web MVC框架,举例如下:
1、mvc.core项目,细分如下的包:
1.1、common:公共的一些组件,下面的各模块都会用到
1.2、config:配置模块,解决框架的配置问题
1.3、startup:启动模块,解决框架和Servlet如何进行整合的问题
1.4、plugin:插件模块,插件机器的实现,提供IPlugin的抽象实现
1.5、routing:路由模块,解决请求路径的解析问题,提供了IRoute的抽象实现和基本实现
1.6、controller:控制器模块,解决的是如何产生控制器
1.7、model:视图模型模块,解决的是如何产生绑定方法的参数
1.8、action:action模块,解决的是如何调用方法以及方法返回的结果,提供了IActionResult的抽象实现和基本实现
1.9、view:视图模块,解决的是各种视图引擎和框架的适配
1.10、filter:过滤器模块,解决的是执行Action,返回ActionResult前后的AOP功能,提供了IFilter的抽象实现以及基本实现
2、mvc.extension项目,细分如下包:
2.1、filters:一些IFilter的实现
2.2、results:一些IActionResult的实现
2.3、routes:一些IRoute的实现
2.4、plugins:一些IPlugin的实现
我们以IXXX来描述一个抽象,可以是接口也可以是抽象类,在具体实现的时候根据需求再来确定。
这种结构的划分方式完全吻合上面说的切蛋糕方式,可以看到除了横切部分和分层部分,作为一个Web MVC框架,它核心的组件就是routing、model、view、controller、action(当然,对于有些MVC框架它没有route部分,route部分是交由Web框架实现的)。
如果我们在这个时候还无法确定框架的模块划分的话,问题也不大,我们可以在后续的搭建龙骨的步骤中随着更多的类的建立,继续理清和确定模块的划分。
经过了设计的步骤,我们应该心里对下面的问题有一个初步的规划了:
1、我们的框架以什么形式来提供如何优雅的API?
2、我们的框架包含哪些模块,模块大概的作用是什么?