系统架构
概述
- 系统支持
Server
(推荐)和Auto
两种呈现模式。 - 电脑端和移动端开发和部署都是共用一套程序,根据浏览器终端自动识别系统入口。
- 解决方案由4个项目组成,分别为前后端共用库、前端组件库、后端业务库,
WinForm程序
(可选)。 - 如果不采用前后端分离,那么只需要创建一个后端项目即可,将实体类、页面组件和后端服务放到一个项目中,对于代码量小的小型项目可以这样架构。
- 对于大型项目,建议分模块创建项目,一个项目中存放模块对应的实体类、页面组件和后端服务,模块之间共用的部分可以独立创建一个共用项目。
文件结构
├─Sample -> 项目共用类库,包含配置、常量、枚举、实体、模型、服务接口。
│ ├─Entities -> 实体类文件夹,存放与数据库表对应的实体类。
│ ├─Models -> 模型类文件夹,存放前后端数据交互的复杂组合类型,相当于`DTO`。
│ ├─Resources -> 资源文件夹,存放多语言和系统操作按钮等配置资源文件。
│ ├─Services -> 服务接口文件夹,存放前后端数据交互的服务接口。
│ ├─AppConfig.cs -> 系统配置类,配置`ID`、名称、类型、程序集,以及移动端菜单。
│ ├─Constants.cs -> 系统常量类,存放系统定义的常量。
│ ├─Enums.cs -> 系统枚举类,存放系统定义的枚举。
├─Sample.Client -> 项目前端,包含配置、路由、页面,基于`Castle`动态代理访问后端`WebApi`。
│ ├─Apps -> 移动端文件夹,按模块存放移动端页面组件。
│ ├─Pages -> 管理端文件夹,按模块存放管理端页面组件。
│ ├─Shared -> 共享组件文件夹,存放移动和管理端共享的组件。
│ ├─AppClient.cs -> 系统前端配置类。
│ ├─Index.razor -> 管理端首页组件。
│ ├─Install.razor -> 系统安装页面组件。
│ ├─Login.razor -> 系统用户登录页面组件。
│ ├─Routes.razor -> 路由组件。
├─Sample.Web -> 项目后端,包含业务逻辑、数据访问,根据服务接口动态生成`WebApi`。
│ ├─wwwroot -> 静态文件夹,存放`css`、`js`和图片文件。
│ ├─Helpers -> 帮助类文件夹,存放模块初始化等帮助类。
│ ├─Pages -> 页面文件夹,存放后端`RazorPage`页面。
│ ├─Repositories -> 数据依赖文件夹,存放复杂`SQL`语句的数据访问类。
│ ├─Resources -> 资源文件夹,存放建表脚本等后端资源文件。
│ ├─Services -> 服务实现文件夹,存放服务接口的实现类,主要为后端业务逻辑。
│ ├─WorkFlows -> 工作流文件夹,存放系统工作流模块实现类。
│ ├─App.razor -> 系统入口组件。
│ ├─appsettings.json -> 系统配置文件。
│ ├─AppWeb.cs -> 系统后端配置类。
│ ├─Program.cs -> 系统入口。
├─Sample.WinForm -> 项目`WinForm`程序。
│ ├─wwwroot -> 静态文件夹,存放`css`、`js`和图片文件。
│ ├─App.razor -> 系统入口组件。
│ ├─AppSetting.cs -> 系统配置类。
│ ├─Dialog.cs -> `WinForm`对话框操作类。
│ ├─MainForm.cs -> `WinForm`主界面窗体。
│ ├─Program.cs -> 系统入口。
├─Sample.sln -> 解决方案文件。
配置文件
项目可以说是零配置,数据库连接默认是在安装页面中配置,保存在系统用户数据文件夹,Windows
路径为C:\Users\YourName\AppData\Roaming\Known
。如果要预先配置数据库连接,可以在appsettings.json
中配置,内容如下:
{
"DetailedErrors": true,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnString": "Data Source=..\\Sample.db"
}