首页 > 其他分享 >Web应用框架ABP技术分享

Web应用框架ABP技术分享

时间:2023-12-28 10:11:07浏览次数:25  
标签:Web 架构 开发人员 应用程序 ABP UI 分享 DDD

ABP技术分享

 

一、什么是ABP

ASP.NET Boilerplate(ABP)是一个开源且有着完善文档的应用程序框架。它不仅仅是一个框架,还基于领域驱动设计提供了强大的架构模型,并考虑到了所有的最佳实践。

二、ABP 的关键特性和原则

2.1领域驱动设计(DDD)

ABP鼓励使用DDD原则,帮助开发人员专注于对应用程序内核业务逻辑和关系进行建模。

2.2模块化

ABP促进了一种模块化架构,允许开发人员将应用程序拆分为更小、更易管理的模块,可以独立开发和维护。

2.3多租户支持

ABP内置了对多租户的支持,使其适用于为多个客户或组织提供服务的应用程序。

2.4横切关注点

它提供了处理诸如授权、验证、缓存和错误处理等横切关注点的机制,以结构化和一致的方式处理。

2.5应用程序服务

ABP鼓励使用应用程序服务,它们在应用程序逻辑与用户界面之间提供了一个抽象层。

2.6依赖注入

该框架内置了依赖注入系统,使得管理对象的生命周期和处理依赖关系变得容易。

2.7内置用户管理

ABP提供了预先构建的用户和角色管理功能,可以轻松扩展或定制以适应特定的应用程序要求。

2.8支持多个UI框架

ABP支持不同的UI框架,包括ASP.NET MVC、Angular和Blazor,使得在选择前端技术方面具有灵活性。

2.9本地化与国际化

它包括对多语言应用程序的支持,可以轻松地本地化和国际化用户界面。

2.10强大的社区和文档

ABP拥有一个活跃且支持性强的社区,以及广泛的文档和教程,使得开发人员更容易上手,并在需要时获得帮助。

 

总的来说,ASP.NET Boilerplate为构建企业级应用程序提供了坚实的基础,使开发人员能够专注于业务逻辑,同时遵循软件开发的最佳实践。它是在.NET生态系统中开发复杂且可扩展的Web应用程序的开发人员的常用选择。

三、ABP架构及实现

3.1领域驱动设计

DDD适用于复杂领域或较大规模的系统,而不是简单的CRUD程序.它着重于核心领域逻辑,而不是基础架构.这样有助于构建一个灵活,模块化,可维护的代码库。

 

DDD高度依赖面向对象编程思想(OOP)和设计原则。

3.2 DDD分层和整洁架构

基于DDD的架构分为四个基础层

 

业务逻辑分为两层,分别为 领域(Domain) 层和 应用(Application) 层,它们包含不同类型的业务逻辑.

领域层:只实现领域业务逻辑,与用例无关.

应用层:基于领域层来实现满足用例的业务逻辑.用例可以看作是用户界面(UI)或外部应用程序的交互.

展现层:包含应用程序的UI元素.

基础设施层:通过对第三方库的集成或抽象,来满足其它层的非核心业务逻辑的实现.

同样的分层架构也可以如下图所示:被称为 整洁架构, 又或者称为 洋葱架构:

 

 

3.3 ABP解决方案分层

 

3.4项目依赖关系图

 

 

3.5 DDD模式的应用程序执行顺序

 

 

3.6应用开发

3.6.1.准备开发环境:

Visual Studio 2022, Node v16/18, npm v6+, Redis, DB, ABP CLI

3.6.2创建解决方案

Download template 或者ABP CLI命令

3.6.3运行解决方案

DB Migration, ConnectionStrings, Run Swagger UI/MVC

四、病人管理Demo

4.1 Domain层

1.创建OIS_Patient实体及共享实体(SexType 枚举)

2.将OIS_Patient实体添加到DbContext中

3.将OIS_Patient实体映射到数据库表
4.添加数据迁移

5.添加初始数据

6.更新数据库

4.2 Application层

1.创建DTO( PatientDto,CreateUpdatePatientDto)

2.定义映射

3.创建应用服务接口

4.实现服务接口

5.自动生成API,Swagger UI

4.3 Rest API(自动创建)

4.4 Razor Page UI

......

 

 

 

 

 

标签:Web,架构,开发人员,应用程序,ABP,UI,分享,DDD
From: https://www.cnblogs.com/ljmzxq/p/17932100.html

相关文章

  • webpack概念(依赖图、target、manifest)
    依赖图(dependencygraph)依赖的东西可以是代码,也可以是非代码(images和web字体) 从 入口 开始,webpack会递归的构建一个 依赖关系图,这个依赖图包含着应用程序中所需的每个模块,然后将所有模块打包为少量的 bundle ——通常只有一个——可由浏览器加载。对于 HTTP/2 来......
  • webpack(模块modules 和 模块解析)
    模块(Modules)每个模块都具备了条理清晰的设计和明确的目的何为webpack模块与 Node.js模块相比,webpack模块能以各种方式表达它们的依赖关系。下面是一些示例:ES2015 import 语句CommonJS require() 语句AMD define 和 require 语句css/sass/less文件中的 @imp......
  • Android学习路线,以及学习资源分享
    前言编程行业博大精深,光是开发语言就好几十种,不要太贪,先掌握其中的一两种,然后在工作中一边提高自己的能力,一边再学习新的其他的编程语言。这样可以慢慢拓宽自己的职业道路。很多粉丝私聊我如何学习,如何规划路线图,新手从何学起?今天小编就给大家分享一下android开发的学习路线。1、开......
  • 软件测试/测试开发|web基础知识介绍
    简介web(WorldWideWeb)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信......
  • 海康威视WebSDK_V3.3.0 集成vue2项目避坑+解决方案
    最近新需求项目集成WebSDK_V3.3.0的视频插件,开发过程中遇到了一些问题,如下:无法正确引入插件/InitPlugin报错使用文档中写的I_DestroyPlugin报错并且再次Init插件后无法正常播放,报错如下:如果你也有类似问题请往下看首先开发包如下:1.无法正确引入插件/InitPlugin报错首......
  • 给你一个网站,你如何来做自动化测试的?Web网站测试流程及方法
    我想大多数开始进行web端页面测试的人,一开始会的都是在页面上点点点,然后一看到页面上有什么图片失效啊,页面遮挡就觉得是找到了大bug;一开始我也是这样,尽管我很谨慎,很仔细,把页面上的每一个角落都看了几十遍,依然没有把页面上的点点点测好,当时真的是每天都过得提心吊胆。那给你一个网......
  • 启封涂料行业ERP需求分析和方案分享
    涂料制造业是一个庞大而繁荣的行业。它广泛用于建筑、汽车、电子、基础设施和消费品。涂料行业生产不同的涂料,如装饰涂料、工业涂料、汽车涂料和防护涂料。除此之外,对涂料出口的需求不断增长,这增加了增长和扩张的机会。近年来,中国的涂料行业出现了巨大的增长,这主要是由于城市化、基......
  • 【专题】2023年中国数字金融调查报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34685原文出处:拓端数据部落公众号随着数字化转型的深入推进,新客户的增长速度已达顶峰,用户运营成为推动存量增长的关键手段。调查数据显示,相比去年,网上银行用户比例有所下降,而手机银行用户比例基本持平。阅读原文,获取专题报告合集全文,解锁文末249份......
  • 【专题】2023年中国6G产业研究报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33186原文出处:拓端数据部落公众号以5G技术的发展方向为基础,结合6G技术的理念,我们可以展望未来的发展方向。随着5G作为移动通信技术个人和企业服务的分界线的确立,未来更先进的移动通信技术必然会将目光聚焦在企业服务市场上,以获得更好的发展。阅读......
  • WebView中的页面调试方法
    在iOS12中,苹果正式弃用UIWebView,改成WKWebView,参考官方声明。后者在性能、稳定性、功能方面有很大提升,并且与Safari具有相同的JavaScript引擎(JavaScriptCore)。从Android4.4开始,增加ChromiumWebView,用来取代AndroidWebKitWebView。从Android......