微软官方教程地址 :C# 文档 - 入门、教程、参考。 | Microsoft Learn
B站视频:
微软官方教程地址:使用 ASP.NET Core 创建 Web API | Microsoft Learn
.NET 6教程,.Net Core 2022视频教程,杨中科主讲_哔哩哔哩_bilibili
Blazor 是一个使用 Blazor 生成交互式客户端 Web UI 的框架:
使用 .NET 进行客户端 Web 开发可提供以下优势:
Blazor UI框架推荐
ORM简介
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。
这种方案存在以下不足:
1.持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口
2.持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,毒药修改持久化曾的相关程序代码,增加了软件的维护难度。
是一款功能强大的对象关系映射(O/RM)组件,支持 .NET Core 2.1+、.NET Framework 4.0+ 以及 Xamarin✨
Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。(作者推荐efcore是由微软官方维护)
Dapper是由Stack Overflow背后的团队创建的micro-ORM。Dapper 是 .NET 的简单对象映射器,在速度方面拥有 Micro ORM 之王的称号,几乎与使用原始 ADO.NET 数据读取器一样快。ORM是一个对象关系映射器,负责数据库和编程语言之间的映射。
SqlSugar 是一款 老牌 .NET 开源ORM框架,由果糖大数据科技团队维护和更新
SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS);
SQL Server使用方便,伸缩性好与相关软件集成程度高;
SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能。
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
PgSQL PostgreSQL 的历史简介. 现在被称为 PostgreSQL 的对象- 关系型数据库管理系统 (有一段时间被称为 Postgres95)是从伯克利写的 POSTGRES 软件包发展而来的。. 经过十几年的发展, PostgreSQL 是世界上可以获得的最先进的 开放源码 的 数据库系统 , 它提供了多版本并行控制,支持几乎所有 SQL 构件 (包括 子查询 , 事务 和用户定义类型和函数), 并且可以获得非常广阔范围的(开发)语言绑定(包括 C,C++,Java,perl,tcl,和 python)
中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。它并没有很严格的定义,但是普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。
用于分布式系统的应用程序性能监视工具,特别为微服务、云原生和基于容器(Kubernetes)架构设计。
Consul是微服务架构中,解决服务发现、配置中心的分布式中间件。
Consul是HashiCorp公司推出的开源工具,Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色、轻量级的特点。Consul是分布式的、高可用的、 可横向扩展的用于实现分布式系统的服务发现与配置。
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群机来提供实时的消费。
Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Drone是为繁忙的开发团队提供的自助持续集成平台。
CI 持续集成(Continuous Integration)
协同开发是目前主流的开发方式,也就是多位开发人员可以同时处理同一个应用的不同模块或者功能。
但是,如果企业计划在同一天,将所有开发分支代码集成在一起,最终可能会花费很多时间和进行很多重复劳动,费事费力。因为代码冲突是难以避免的。
如果开发人员本地的环境和线上不一致的话,那么这个问题就更加复杂了。
持续集成(CI)可以帮助开发者更加方便地将代码更改合并到主分支。
一旦开发人员将改动的代码合并到主分支,系统就会通过自动构建应用,并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。
如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。
CD 持续交付(Continuous Delivery)
CI 在完成了构建、单元测试和集成测试这些自动化流程后,持续交付可以自动把已验证的代码发布到企业自己的存储库。
持续交付旨在建立一个可随时将开发环境的功能部署到生产环境的代码库。
在持续交付过程中,每个步骤都涉及到了测试自动化和代码发布自动化。
在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。
CD 持续部署(Continuous Deployment)
对于一个完整、成熟的 CI/CD 管道来说,最后的阶段是持续部署。
它是作为持续交付的延伸,持续部署可以自动将应用发布到生产环境。
实际上,持续部署意味着开发人员对应用的改动,在编写完成后的几分钟内就能及时生效(前提是它通过了自动化测试)。这更加便于运营团队持续接收和整合用户反馈。
总而言之,所有这些 CI/CD 的关联步骤,都极大地降低了应用的部署风险。
不过,由于还需要编写自动化测试以适应 CI/CD 管道中的各种测试和发布阶段,因此前期工作量还是很大的。
一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。
域驱动设计 (DDD) 提倡基于与用例相关的真实业务来构建模型。 在构建应用程序的上下文中,DDD 用域来描述问题。 它将独立的问题区域描述为界定的上下文(每个界定的上下文关联一个微服务),并强调使用一种通用的语言来讨论这些问题。 它还提出许多技术概念和模式,如具有充血模型的域实体(无贫血模型)、值对象、聚合和聚合根(或根实体)规则,用于支持内部实现。 本部分介绍这些内部模式的设计和实现。
有时这些 DDD 技术规则和模式被认为是障碍,因为会导致实施 DDD 方法时的学习曲线较陡峭。 但重要的并非模式本身,而是如何根据业务问题组织代码,并使用相同的业务术语(通用语言)。 此外,只有在需要实现采用重要业务规则的复杂微服务时,才应使用 DDD 方法。 较为简单的功能,如 CRUD 服务,可使用较为简单的方法来管理。
设计和定义微服务时,最关键的任务是界定边界。 借助 DDD 模式,可了解域中的复杂性。 对于每个界定的上下文的域模型,需确定和定义为域建模时所需的实体、值对象和聚合。 生成和优化限定在某个边界内的域模型,该边界用于定义上下文。 如果是微服务的形式,这会十分明晰。 这些边界内的组件最终会成为微服务,但在某些情况下,BC 或业务微服务可由多个物理服务组成。 DDD 与边界相关,微服务也是如此。
对于读取/查询,来自 eShopOnContainers 引用应用程序的订购微服务独立于 DDD 模型和事务区域实现查询。 此实现主要是因为查询的需要和事务的需要有很大不同。 写入的执行事务必须符合域逻辑。 另一方面,查询是幂等的,可以与域规则分离。
ABP是一个开源且文档友好的应用程序框架。ABP不仅仅是一个框架,它还提供了一个最徍实践的基于领域驱动设计(DDD)的体系结构模型,可以支持.net framework和.net core两种技术流派。
ABP 框架特点
ABP 框架特别的功能
全新的.NET现代应用开发,提供分布式应用运行时–基于Dapr云原生最佳实践,能够快速实现分布式、微服务、DDD,SaaS等现代应用开发
OpenIddict是什么?
OpenIddict旨在提供一个通用的解决方案,在任何ASP中实现OpenID连接客户端、服务器和令牌验证支持。NET Core 2.1(及更高版本)应用程序。ASP。NET 4.6.1(及更高版本)应用程序也得到了完全的支持,这要归功于原生的Microsoft。Owin 4.2集成。
OpenIddict完全支持代码/隐式/混合流、客户端凭证/资源所有者密码授予和设备授权流。
OpenIddict原生支持实体框架核心、实体框架6和MongoDB,并且可以实现自定义存储以支持其他提供者。
欢迎大佬继续补充, 壮大 dotnet 生态!
GitHub 地址: dotent入门到高级
来自 token 的分享
技术交流群: 737776595