.NET Core的DDD的技术落实
贫血模型与充血模型在面向对象的设计中有贫血模型与充血模型两种风格。所谓的贫血模型指的是一个类中只有属性或者成员变量,没有方法,而充血模型指的是一个类中既有属性、成员变量,也有方法。 假设我们需要定义一个类,这个类中可以保存用户的用户名、密码就、积分;用户必须具有用户名;为了保证安全,密码采用密码的哈希值保存;用户的初始积分为10;每次登录成功奖励5个积分,每次登录失败扣3个积分(这样的需求肯定是不合理的) 贫血模型逻辑代码: 123456class User{ public string UserName{get;set;}//用户名 public string PasswordHash {get;set;}//密码的散列值 public int Credit...
ASP.NET Core程序的发布
网站发布 不能直接把bin/Debug部署到生产环境的服务器上,性能低。应该创建网站的发布版,用【发布】功能。 两种部署模式:“框架依赖”和“独立”。两者的优缺点。 独立模式为什么要选目标操作系统和CUP类型。 如果你使用 Visual Studio,可以通过以下步骤发布: 在解决方案资源管理器中右键点击项目 选择 “发布” 选择发布目标(文件夹、IIS、Azure 等)我们这里选择使用文件夹的方式发布。 配置发布设置(如目标框架、运行时、是否自包含等) 点击 “发布” 按钮 框架依赖部署(FDD)特点 依赖共享运行时:应用程序依赖目标环境中已安装的 .NET 运行时(如 .NET 6/7/8)。 体积小:发布包仅包含应用代码和第三方依赖(如 NuGet 包),不包含 .NET 运行时,因此包体积小。 跨平台兼容性:发布包不包含运行时,需确保目标环境的运行时版本与开发环境兼容。 更新便捷:.NET 运行时由操作系统或管理员统一更新,应用无需包含运行时更新。 适用场景 目标环境已预装 .NET...
SignaLR案例:导入英汉词典
SignaLR案例:导入英汉词典需求 英汉词典ECDICT中导入单词到数据库。 T_Worditems:Id(主键)、Word(单词)、Phonetic(音标)、Definition(英文解释)、Translation(中文翻译) 下载地址:https://github.com/skywind3000/ECDICT CSV(Comma-Separated Values)是一种常用的文本文件格式,用于存储和交换表格数据。以下是关于 CSV 格式的详细介绍: 特点 简单性:CSV 格式非常简单,它以纯文本形式存储数据,每行代表一条记录,字段之间用逗号分隔。这种简单的结构使得 CSV 文件易于阅读、编写和解析,几乎所有的文本编辑器和电子表格软件都能处理 CSV 文件。通用性:CSV 是一种通用的格式,可被多种应用程序识别和导入,如电子表格软件(如 Microsoft Excel、Google Sheets)、数据库管理系统、数据分析工具等。这使得它成为不同系统之间数据交换的常用格式。 数据表示 记录:CSV...
ASP.NET Core SignaLR服务器端消息推送
什么是WebSocket和SignalR WebSocket基于TCP协议,支持二进制通信,双工通信。 性能和并发能力更强。 WebSocket服务器端部署到Web服务器上,因为可以借助HTTP协议完成初始的握手(可选),并且共享HTTP服务器的端口(主要) 虽然WebSocket是独立于HTTP的,但是我们一般仍然把WebSocket服务器端部署到Web服务器上,因为我们需要借助HTTP完成初始的握手,并且共享HTTP服务器的端口,这样就可以避免为WebSocket单独打开新的服务器端口。因此,SignalR的服务器端一般运行在ASP.NET Core项目中。 SignIR ASP.NET Core SignalR(以下简称SignalR),是.NET Core平台下对WebSocket的封装。 Hub(集线器),数据交换中心。 SignalR基本使用第一步,创建一个继承自Hub类的ChatRoomHub类,所有的客户端和服务器端都通过这个集线器进行通信. 12345678910111213141516public class...
ASP.NET Core 托管,数据的校验
托管(轮询)服务 场景,代码运行在后台。比如服务器启动的时候在后台预先加载数据在缓存,每天凌晨3点把数据导出到备份数据库,每隔5秒钟在两张表之间同步一次数据。 托管服务实现IHostdService接口,一般编写从BackgroundService继承的类。测试:延迟若干秒再读取文件,再延迟,再输出。 12345678910111213141516public class DemoBgService:BackgroundService{ private readonly ILogger<DemoBgService> _logger; //注入日志服务 public DemoBgService(ILogger<DemoBgService> logger) { _logger = logger; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { ...
ASP.NET Core Session与JWT
Authentication与Authorization1.Authentication对访问者的用户身份进行验证,“用户是否登陆成功”。2.Authorization验证访问者用户身份是否又对资源访问的访问权限,“用户是否有权限访问这个地址”。 标识(Identity)框架1.标识(Identity)框架:采用基于角色的访问控制(Role-Based Access Control,简称RBAC)策略,内置了对用户、角色等表的管理以及相关的接口,支持外部登录、2FA等。2.标识框架使用EF...
ASP.NET Core筛选器,中间件
筛选器1.筛选器(filter,也可以翻译为“过滤器”)是ASP.NET Core中提供的一种切面编程机制,它允许开发人员创建自定义筛选器来处理横切关注点,也就是在ASP.NET Core特定的位置执行我们自定义的代码,比如在控制器的操作方法之前执行数据检查的代码,或者在ActionResult执行的时候向响应报文头中写入自定义数据等。2.ASP.NET Core中的筛选器有以下5种类型:授权筛选器(Authorization filter)、资源筛选器(Resource filter)、操作筛选器(Action filter)、异常筛选器(Exception filter)、结果筛选器(Result...
配置系统与ASP.NET Core
配置系统与ASP.NET Core默认添加的配置提供者1.加载现有的IConfiguration。2.加载项目根目录下的appsettings.json。3.加载项目根目录下的appsettings.{Environment}.json。4.当程序运行在开发环境下,程序会加载“用户机密”配置。5.加载环境变量中的配置。6.加载命令行中的配置。 配置的环境问题1.开发环境、测试环境、生产环境需要进行不同配置。2.运行环境:ASP.NET...
ASP.NET Core Web API基础组件
ASP.NET Core中服务注入的地方1.在ASP.NET Core项目中一般不需要自己创建ServiceCollection、IServiceProvider。在Program.cs的builder.Build()之前向builder.Services中注入。2.在Controller中可以通过构造方法注入服务。 定义一个MyService类 12345public class MyService{ public IEnumerable<string> GetName(){ return new string[] {"you","xian","yu"}; }} 在ASP.NET Core项目的Program.cs文件中的var...

