ASP.NET Core模块化先后端分离快速开发框架介绍之二、快速建立一个业务模块

源码地址

GitHub:https://github.com/iamoldli/NetModularhtml

演示地址

地址:https://nm.iamoldli.com
帐户:admin
密码:admin前端

前端框架演示地址(临时)

地址:http://nm.demo.iamoldli.com/index.html
帐户:admin
密码:admingit

1、目录

一、开篇
二、快速建立一个业务模块
三、数据访问模块介绍
四、模块化实现思路github

2、实现快速开发的前提条件

NetModular实现快速开发有两个前提条件:web

一、约定优于配置的开发原则数据库

二、代码生成器npm

约定优于配置是如今处处可见的一种开发原则,好比ASP.NET MVC中的HttpGetHttpPost等特性限制请求方式,好比控制器都以Controller结尾,好比SpringBoot中各类注解等,都属于约定优于配置,这种开发原则的好处在于能够减小开发人员须要作决定的次数,使开发变得简单、快速,只是这是对于老手来讲的,对于新手则提升了学习成本。json

基本上每一个开源的框架都会有配套的代码生成器,而代码生成器其实就是以约定优于配置为基础的,只有先约定好了项目结构和开发规范,你才能实现一个代码生成器。与其它代码生成器不一样,NetModular的代码生成器不是根据数据库来生成代码,而是提供了一个单独的模块,能够很方便的集成到任何项目当中,经过Web的形式在线配置项目、实体、属性、模型、枚举等内容,而后能够一键生成项目代码并下载。后端

其实,个人最终目标是但愿可以有一个强大的可视化编辑页面,能够灵活配置前端的视图页面以及后端的实体信息,最后直接在线编译并热加载到当前项目中。后端热加载还有点思路,可是前端由于要打包的缘由,如今还没想好解决,之后努力~浏览器

3、模块的结构

上面说了,代码生成器是依赖与约定的,因此咱们先来看下一个模块的项目结构

模块的结构

上图中的Blog目录,就是一个模块的示例,自己就是经过代码生成器生成后放到项目当中的(不少人第一眼看到觉得是DDD架构的,其实不是,顶多就是个DDDLite~),先说一下每层的做用

一、Domain:领域层,包含实体、实体扩展、实体相关的枚举、仓储接口

实体都已Entity结尾
仓储接口都已Repository结尾,且必须继承IRepository<>泛型接口
实体包含扩展属性的,须要把实体设置为部分类,且扩展类须要以Extend.cs结尾

二、Infrastructure:基础设施层,包含仓储实现以及一些当前模块特有的类,像配置项等

仓储实现位于Repositories目录下,不一样数据库放到不一样的目录下面
模块特有的配置项放在Options目录下

三、Application:应用服务层、包含全部的业务逻辑

每一个实体对应一个目录,目录名称为实体名称+Service
每一个目录下包含有服务接口和实现、视图模型、对象映射配置、模型验证配置等信息

四、Web:接口层、包含控制器、模块初始化配置等

必须建立ModuleInitializer类,且该类必须继承IModuleInitializer接口
必须建立ModuleController基类控制器,继承ModuleControllerAbstract抽象类,并配置Area特性用于配置区域

五、WebHost:Web主机,包含配置文件,用于安装所需的模块以及启动项目

必须建立Startup类,而且继承StartupAbstract抽象类
ProgramMain函数中,使用WebHostCreator.Run<Startup>(args);方式启动

六、WebHost.Electron:客户端主机,用于启动基于 Electron.js 的客户端程序

以上就是NetModular框架中一个模块的结构,有了约定,那么接下来就演示一下如何经过代码生成器来建立项目吧。

4、代码生成

一、建立项目

已我的博客为例,项目须要填名称车和编码

建立项目

二、添加枚举

由于文章有多媒体信息,因此先添加一个多媒体的枚举MediaType

添加枚举

三、添加实体

添加文章Article、分类Category、标签Tag三个实体

添加实体

四、配置实体属性

以文章Article为例

配置实体属性

五、生成

在项目列表中,点击生成按钮生成代码并下载。

六、测试

打开生成的代码,进入Blog/data目录,按需建立数据库,由于模块默认依赖Nm_Admin模块,因此也要建立Nm_Admin的数据库

进入Blog/src/WebHost/config目录,打开db.json配置数据库链接

回到Blog/src/WebHost目录,代开命令行输入如下命令启动服务端

dotnet watch run --environment Development

进入Blog/src/UI/nm-module-blog目录,执行如下命令来启动前端代码

npm install

npm update

npm run serve

最后在浏览器中输入 http://localhost:6220 进行浏览

接口文档地址 http://localhost:6220/swagger/index.html

若是没有意外的话,应该能够了~

原文首发:ASP.NET Core模块化先后端分离快速开发框架介绍之二、快速建立一个业务模块

相关文章
相关标签/搜索