753

系统架构

概述

  • 系统支持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"
}