专栏首页cnblogsApiTemplate:.net后端项目模板完善与总结

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地址,代码太多不方便博客文章展示

三、经验总结

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

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

3. 对依赖组件要低耦合

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 记一次业余项目的敏捷开发实践

    本次是在原有ApiTemplate项目之上,增加一个用户登录权限控制模块,用于验证ApiTemplate项目在面对一些简单问题时,如何抽象并支持未来...

    sam dragon
  • Java VS .NET:Java与.NET的特点对比

    .NET出生之后就带着Java的影子。从模仿到创新,.NET平台也越来越成熟。他们不同的支持者也经常因为孰弱孰强的问题争论不休。但是本文并不是为了一分高下。而是...

    KenTalk
  • 性能再提升70%?大咖前瞻带你揭开.NET6的神秘面纱!

    本月初微软官宣.NET 6 的RC1正式发布,这意味着.NET6正式版跟我们见面的时间又近了一步。在之前的.NET6预览版本中,微软加入了大量新功能特性,而在最...

    葡萄城控件
  • .NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目

    Furioin 是一款基于.NET5技术开发的功能强大、性能极致、文档完善、示例丰富、极易入门、快速开发、极易维护的Web框架。

    张传宁IT讲堂
  • Grid++Report报表工具C/S实战篇(五)

    跟着阿笨一起玩NET
  • .NET Core/.NET5/.NET6 开源项目汇总4:CMS、Blog项目

    开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激、尊重。请严格遵守每个项目的开源协议后再使用。尊重知识产权,共建...

    张传宁IT讲堂
  • Java VS .NET:Java与.NET的特点对比

    .NET出生之后就带着Java的影子。从模仿到创新,.NET平台也越来越成熟。他们不同的支持者也经常因为孰弱孰强的问题争论不休。但是本文并不是为了一分高下。而是...

    conanma
  • 创建API服务最小只要4行代码!!!尝新体验ASP.NET Core 6预览版本中的最小Web API(minimal APIS)新特性

    本文首发于《创建API服务最小只要4行代码!!!尝新体验ASP.NET Core 6预览版本中的最小Web API(minimal APIS)新特性》

    Rector
  • 详解linux下的.net/mvc/cms程序结构

    本程序是主要是用于企业网站开发的,也可以做博客程序,程序是从之前上一篇的.net 博客程序改进过来的,主要技术由webform转成.net mvc了,由于是很早...

    砸漏
  • Visual Studio 2008 SP1和.NET FX 3.5 SP1发布了

    NET Framework 3.5 SP1提供了以下新功能和改进: 1、ASP.NET 动态数据,它提供了丰富的框架,从而使用户可以快速进行数据驱动的开发,而...

    张善友
  • MVC Scaffolding SmartCode-Engine 更新

    通过扩展visual studio.net scaffolding组件,添加了一套功能完善的代码模板,包括Controller,Model,View,Busin...

    阿新
  • Magicodes.Admin.Core开源框架总体介绍

    Magicodes.Admin.Core框架在ABP以及ASP.NET ZERO的基础上进行了封装和完善,目前基于.NET Core 2.0+(Framewor...

    雪雁-心莱科技
  • 70后.net老猿,尚能饭否?

    纯洁的微笑
  • ActiveReports 大数据分析报告:贸易争端与中国企业数字化转型

    2018年11月12日至18日,亚太经合组织(APEC)领导人非正式会议首次在南太平洋最大岛国巴布亚新几内亚的首都莫尔兹比港举行,本次会议的主题是:“把握包容性...

    葡萄城控件
  • 分享我的CleanArchitecture for Razor Page项目模板

    这个项目是参考和整合了jasontaylordev/CleanArchitecture 和 blazorhero/CleanArchitecture 代码基础...

    阿新
  • ComponentOne.NET仪表板布局控件 — 实现可视化数据大屏展示

    .NET开发领域的总体趋势是互操作性,葡萄城全功能 .NET控件集 ComponentOne 在2018将延续这一趋势:无论是 .NET平台,ASP.NET C...

    葡萄城控件
  • 【52ABP实战教程】0.0.0 -- ASP.NET CORE系列介绍

    为什么是.net core? 记得在半年前.NET CORE刚刚出了1.0,当时有朋友推荐我使用的时候,个人觉得还不成熟。 现在.NET Core已经到了2....

    角落的白板报
  • 【52ABP实战教程】0.0.0 -- ASP.NET CORE系列介绍

    为什么是.net core? 记得在半年前.NET CORE刚刚出了1.0,当时有朋友推荐我使用的时候,个人觉得还不成熟。 现在.NET Core已经到了2....

    角落的白板报
  • ABP+AdminLTE+Bootstrap Table权限管理系统一期

       学而时习之,不亦说乎,温顾温知新,可以为师矣.

    远志

扫码关注云+社区

领取腾讯云代金券