ApiTemplate:.net后端项目模板完善与总结
ApiTemplate后端项目开发模板,发布也有一段时间了。为了补充应用场景,以及详细说明本人总结的一些开发经验,现已常见的《用户/登录权限验证》功能模块来进行详细的讲解。我会以为开发此模拟的实现路径为主线进行说明,希望能帮助到某些开发朋友。
一、模块分解

模块分析是按照《C4-架构图》理念做的,主要分为
1. 系统上下文:显示当前构建的系统与现有系统的依赖关系,从宏观视角看
2. 容器:将当前构建的系统放大,显示出系统的 应用程序、数据存储、微服务等信息
3. 组件:放大单个《容器》后,显示其容器内部的组件列表、及关系。
4. 代码:放大单个《组件》后,显示其实现细节
注意:
1. 更正说明:上图中的《容器》应该改为《组件》,根据《C4-架构图》的定义,使用《组件》更贴切,因为想表达的是《登录/权限》模拟的子组件列表
2. 登录验证/在线用户管理:此两个组件为业务核心组件,设计与实现时要重点考虑
3. 获取用户/获取资源/角色:此两个组件主要从第三方系统获取数据,要考虑使用工厂模式进行策略切换。
二、核心代码

1. 上图表示IOnlineUserMgr接口的实现类应有的依赖,IOnlineUserMgr规范《在线用户管理》,包含添加在线用户、自动移除超时过期的用户等。
2. IReadAuthRepository/IRoleAndResDepend:规范对用户、资源、角色的依赖。对应《获取用户》、《获取资源/角色》组件
3. ITokenRepository:登录用户持久化,相当于用户登录记录
4. IUserEntity:用户实例规范,对应《登录验证》,提供资源、权限验证等相关接口
5. IUserEntiy和IOnlineUserMgr的接口实现在领域实现层(BAccurate.Implement项目)中,这样便从结构上对 业务领域组件 和 其他依赖组件进行了解耦。
6. 具体的代码实现可以移步至github地址,代码太多不方便博客文章展示
三、视频分享
B站视频介绍:https://www.bilibili.com/video/BV1Rz4y1Q7XY/,有兴趣小伙伴可以观看哟
。
四、经验总结
1. 通过《C4-架构图》对系统从宏观->微观的逐步细化
2. 业务领域组件应该要高内聚
3. 对依赖组件要低耦合
4. 不急着进行数据库设计,先梳理好业务领域组件之间关系,以及核心业务实现。
5. 数据库存储实体与领域实体强分隔,这样更能做好业务变更与升级。
ApiTemplate:.net后端项目模板完善与总结的更多相关文章
- 后端开发实践——Spring Boot项目模板
在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...
- 后端开发实践:Spring Boot项目模板
在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...
- Vue基础项目模板
https://github.com/wanglong/vue-element-admin.git 优化 Vue CLI 3 构建的前端项目模板(1)- 基础项目模板介绍 一站式开源运维平台,分享给大 ...
- 奉上简单的.Net后端开发模板
假定一个场景,开始做开发的你,领导走到你的面前说道:"小伙子,看了简历和最近的工作表现,很不错,现在交给一个任务,开发一个简单的CMS后端接口吧,前端有人配合你",当时你内心读白: ...
- 分享我的CleanArchitecture for Razor Page项目模板
这个项目是参考和整合了jasontaylordev/CleanArchitecture 和 blazorhero/CleanArchitecture 代码基础上,重构出来的新的项目,这两个项目都是非常 ...
- Cookiecutter: 更好的项目模板工具:(1)简介及可用资源汇总
原文档地址:https://cookiecutter.readthedocs.io/en/latest/ 本系列只介绍cookiecutter的基础使用,而且会删除与功能使用无关的部分.深度使用及了解 ...
- Win10系列:JavaScript 项目模板和项模板
使用Visual Studio 开发Windows应用商店应用时,通过其提供的模板可以帮助我们快速地创建一个应用.其中,在新建一个Windows应用商店应用程序项目时可以在项目模板中选择所需要的模板类 ...
- 担心后端代码泄露?用delphi做后端,模板扣出来,随时可以变化。
担心后端代码泄露?用delphi做后端,模板扣出来,随时可以变化. 本项目不是intraweb, unigui等类似的拖拉项目,只是一个简单 的模板引擎,理论上可以结合任何后端. 要就下载源码,作者保 ...
- Spring Boot 整合JDBC 实现后端项目开发
一.前言 二.新建Spring Boot 项目 三.Spring Boot 整合JDBC 与MySQL 交互 3.1 新建数据表skr_user 3.2 Jdbcproject 项目结构如下 3.3 ...
- Node JS后端项目开发与生产环境总结
原文地址:Node JS后端项目开发与生产环境总结 Node JS常用后端框架有express.koa.sails.国产框架有个egg js,已经在cnode投入生产了,还有个think js,类似t ...
随机推荐
- Spring Boot 自动配置原理深度解析
在 Spring 生态系统中,Spring Boot 自动配置是实现 "零配置" 开发的核心特性,通过约定大于配置的理念,自动为应用注入所需的基础设施配置.本文从核心注解.底层机制 ...
- 温故知新:Docker基础知识知多少
记得之前曾经粗略的写过一篇Docker的基础及ASP.NET Core部署Docker示例的入门文章,但那个时候刚刚学习Docker对Docker的认知还比较浅,现在重新来温故知新一下.此外,本篇已加 ...
- 智能手机无音频场景使用时Audio DSP低功耗的处理
智能手机(或智能手表)等用电池的电子设备对功耗比较敏感,因此不管是使用中还是待机时都要做低功耗处理来省电.前面的文章(智能手表音乐播放功耗的优化)讲了一款智能手表在播放音乐时的低功耗优化,这属于音频场 ...
- 利用POI插件导入excel 读取合并行数据(上)
图为要导入的excel格式 分析一下: 前一部分数据是读取 合并行 存入一张 "会见" 表 ,后面蓝色的 非合并行 存入 "会见人信息" 表. 先说后台方法,( ...
- C# 关于MD5CryptoServiceProvider 过期问题解决
MD5 x = new System.Security.Cryptography.MD5CryptoServiceProvider();使用 MD5 md5 = MD5.Create()
- 使用远程IO控制器ZLAN6808-3代替PLC实现电池工业生产线自动化
动力电池是一种能量储存装置,随着智能制造在传统制造领域的进一步渗透,作为国家战略性新兴产业,明确提出动力电池产业的智能制造发展规划,动力电池的生产已逐步从半自动化.自动化向智能化.数字化转型. 在动力 ...
- HashMap居然可以和它直接合体???
LinkedHashMap集合继承于HashMap,学习LinkedHashMap重点对比 LinkedHashMap 与 HashMap 的异同 特别强调两者的 Entry(节点)数据结构.数据结构 ...
- 迁移学习&在线学习
简介 英文: transfer learning 以已训练好的模型A为起点,在新场景中,根据新数据建立模型B 目的:将某个领域或任务上学习到的知识或模式,应用到不同但相关的领域或问题中. 特征提取 使 ...
- sort 从大到小从小到大
简介 虽然可以 写一个cmp函数但是太麻烦 正解 sort(v.rbegin(), v.rend()) 从大到小 sort(v.begin(), v.end()) 从小到大
- SciTech-EECS-FFmpeg开发笔记(六十七)《FFmpeg开发实战:从零基础到短视频上线》: 给FFmpeg集成支持RIST协议的librist
SciTech-EECS-FFmpeg开发笔记(六十七) FFmpeg开发笔记(61): Linux给FFmpeg集成H.266编码器vvenc 05-25 FFmpeg开发笔记(62): Windo ...