惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tor Project blog
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 【当耐特】
G
Google Developers Blog
J
Java Code Geeks
The Cloudflare Blog
Attack and Defense Labs
Attack and Defense Labs
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
Cisco Talos Blog
Cisco Talos Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
I
Intezer
Jina AI
Jina AI
T
Tenable Blog
P
Palo Alto Networks Blog
Project Zero
Project Zero
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
The Hacker News
The Hacker News
F
Full Disclosure
Cloudbric
Cloudbric
量子位
H
Heimdal Security Blog
K
Kaspersky official blog
有赞技术团队
有赞技术团队
罗磊的独立博客
V
Vulnerabilities – Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
阮一峰的网络日志
阮一峰的网络日志
Vercel News
Vercel News
Recent Announcements
Recent Announcements
WordPress大学
WordPress大学
GbyAI
GbyAI
S
SegmentFault 最新的问题
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
Recorded Future
Recorded Future
Security Archives - TechRepublic
Security Archives - TechRepublic
AI
AI
Webroot Blog
Webroot Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
The Exploit Database - CXSecurity.com
Apple Machine Learning Research
Apple Machine Learning Research
C
Cybersecurity and Infrastructure Security Agency CISA
H
Hacker News: Front Page
Latest news
Latest news

博客园 - SamDragon

如何通过LangChain实现记忆功能的总结 基于LangChain的Ai应用开发平台 .net CPU和内存爆高的分析与处理01 前端导出Excel和打印介绍 Jenkins之Nunit的应用 jenkins发布application且并运行 Jenkins基础系统之完整的.net项目编译 Jenkins基础系统之更换镜像源 记一次业余项目的敏捷开发实践 奉上简单的.Net后端开发模板 C#之委托如此简单 cordova环境搭建 Linux实现免密码登录 ElasticSearch安装及运行的坑 Autofac 应用于IIS托管的WEB程序,注册程序集被回收的问题 通过Thrift实现C#与Hbase交流 OpenLayer实现路径运动 对SVN的落地与实践总结 Jenkins配置从节点
ApiTemplate:.net后端项目模板完善与总结
SamDragon · 2020-06-27 · via 博客园 - SamDragon

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

一、模块分解

image

模块分析是按照《C4-架构图》理念做的,主要分为

1. 系统上下文:显示当前构建的系统与现有系统的依赖关系,从宏观视角看

2. 容器:将当前构建的系统放大,显示出系统的 应用程序、数据存储、微服务等信息

3. 组件:放大单个《容器》后,显示其容器内部的组件列表、及关系。

4. 代码:放大单个《组件》后,显示其实现细节

注意:

1. 更正说明:上图中的《容器》应该改为《组件》,根据《C4-架构图》的定义,使用《组件》更贴切,因为想表达的是《登录/权限》模拟的子组件列表

2. 登录验证/在线用户管理:此两个组件为业务核心组件,设计与实现时要重点考虑

3. 获取用户/获取资源/角色:此两个组件主要从第三方系统获取数据,要考虑使用工厂模式进行策略切换。

二、核心代码

image

1. 上图表示IOnlineUserMgr接口的实现类应有的依赖,IOnlineUserMgr规范《在线用户管理》,包含添加在线用户、自动移除超时过期的用户等。

2. IReadAuthRepository/IRoleAndResDepend:规范对用户、资源、角色的依赖。对应《获取用户》、《获取资源/角色》组件

3. ITokenRepository:登录用户持久化,相当于用户登录记录

4. IUserEntity:用户实例规范,对应《登录验证》,提供资源、权限验证等相关接口

5. IUserEntiy和IOnlineUserMgr的接口实现在领域实现层(BAccurate.Implement项目)中,这样便从结构上对 业务领域组件 和 其他依赖组件进行了解耦。

6. 具体的代码实现可以移步至github地址,代码太多不方便博客文章展示

三、视频分享

B站视频介绍:https://www.bilibili.com/video/BV1Rz4y1Q7XY/,有兴趣小伙伴可以观看哟Winking smile

四、经验总结

1. 通过《C4-架构图》对系统从宏观->微观的逐步细化

2. 业务领域组件应该要高内聚

3. 对依赖组件要低耦合

4. 不急着进行数据库设计,先梳理好业务领域组件之间关系,以及核心业务实现。

5. 数据库存储实体与领域实体强分隔,这样更能做好业务变更与升级。