Jiang

你我山巅自相逢

.net core netcore


在C#中进行单元测试

单元测试是验证各个代码单元(通常是方法或函数)的正确性的过程,与系统的其余部分隔离。这可确保每个单元按预期执行,并有助于在开发过程的早期捕获潜在的错误或问题。单元测试通常是自动化的、独立的,并且侧重于单元的特定方面。它们应该易于理解、维护和执行,为任何想要确保代码质量的开发人员提供坚实的基础。 单元测试在软件开发中的重要性 单元测试是现代软件开发中的关键实践。它的重要性怎么强调都不为过,因为它: 确保功能:它验证每个代码单元是否按预期工作,避免错误和其他问题。 增强可维护性:编写良好的测试可以让开发人员自信地重构或更改代码。 提高代码质量:它鼓励最佳实践,如 SOLID 原则,并使开发人员更好地编写更可测试的代码。 加速开发:尽早并经常进行测试,使开发人员能够更快地检测和修复问题,从而减少调试所花费的总时间。 促进协作:共享测试套件使开发人员能够共同理解代码,并实现顺畅 …

dotnet

关于API设计实践

1.API设计实践的目标和原则 一些重要的概念和术语介绍: REST:一种架构风格,强调组件交互的可扩展性,接口的通用性,组件的独立部署。 REST模型:描述一个业务资源,以及客户端系统如何与之交互。模型会详细说明操作,方法和路径。它可能包含断言和状态码。它与域数据模型对齐,但进行了抽象,以提高可组合性,通用性和稳定性。 API类型:根据API的目的和范围,可以分为不同的类型,例如公共API,合作伙伴API,内部API等。 目标: 提高API的一致性,稳定性,通用性和可用性 促进API的复用,组合和自助服务 降低API的开发和维护成本 增强API的安全性和可靠性 提升API的用户体验和满意度 设计原则: 遵循REST架构风格 遵守企业级API开发标准 从业务需求出发,设计资源导向的API 使用清晰,一致,有意义的命名和文档 使用适当 …

.Net API

.NET中的事务

事务是作为单个逻辑工作单元执行的一系列操作。事务用于确保数据库系统中数据的一致性和完整性。它们遵循 ACID 属性:原子性、一致性、隔离性和持久性。确保以原子方式发生多个操作(所有操作都成功或全部失败),从而防止可能使数据库处于不一致状态的部分更新。事务还有助于隔离并发操作,确保每个事务的更改在提交之前与其他事务的更改隔离。 在 .NET 上下文中,可以通过 .NET Framework 提供的各种类和接口来管理事务。 NET 中的事务类型 1.本地事务是涉及单个资源(如单个数据库或单个消息队列)的事务。 与分布式事务相比,它们更简单、更快捷,因为它们只涉及一个资源管理器。在 .NET 中,可以使用 TransactionScope 类或 SqlTransaction 类实现本地事务。 2.分布式事务 分布式事务涉及多个资源,例如多个数据库或数据库和消息队列的组合。 它们比本 …

.Net

深入理解DIP、IoC、DI以及IoC容器

摘要 面向对象设计(OOD,Object-Oriented Design)有助于我们开发出高性能、易扩展以及易复用的程序. 其中OOD有一个重要的思想那就是依赖倒置原则(DIP,Dependence Inversion Principle),并由此引申出IoC、DI以及IoC容器等概念. 目录 前言 依赖倒置原则(DIP) 控制反转(IoC) 依赖注入(DI) IoC容器 总结 前言 简单概念:依赖倒置原则(DIP): 一种软件架构设计的原则(抽象概念)控制翻转(IoC): 一种翻转流、依赖和接口的方式(DIP的具体实现方式)依赖注入(DI): IoC的一种实现方式,用来反转依赖(IoC的具体实现方式) IoC容器: 依赖注入的框架,用来映射依赖,管理对象创建和生存周期(DI框架) 依赖倒置原则(DIP) 依赖倒置原则,它转换了依赖,高层模块不依赖于低层模块 …

.Net

Linq和Lambda 性能对比

Linq和Lambda 性能对比 1.Where() 使用LINQ创建一个简单的where查询 var query = from person in PersonCollection where person.Age.TotalDays > 1000 select person; var result = query.ToList() // This runs the query 使用LAMBDA创建一个相同的查询 var result = PersonCollection.Where(p => p.Age.TotalDays > 1000).ToList(); 查看性能对比查看性能对比 可以看到两者的性能差距并不是很大 2.Any() 如果集合中只要有一项符合条件,将返回一个bool值 同样使用上面的LINQ, …

linq lambda

Httpclient在.net core3.1上成功运行,但更新到.net 5中连接超时(System.Net.Sockets.SocketException (10060)) C#

前言: 项目本来是在.net core 3.0 版本上跑然后看了看现在都到5.0马上6.0了想着升级一下体验一下新版本的高性能(狗头)然后在测试的时候发现项目里一些请求外部API出现大批请求超时错误如下。没想到刚升级就出岔子了,使用同样的代码在本地运行,环境一致的情况下,将SDK换成.net core 3.0 请求正常,切换到5.0时就开始请求连接超时,没办法先百度看看有没有病友,结果发现就我一个病友,哎,本来有的话就不想发了 ,但是看到没有有用的结果,我还是把我搜索到的一些结果分享给广大病友,希望能有一点帮助把! Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1] An unhandled exception has occurred while executing the …

.NET5

构建简易区块链

区块链基本结构 使用SHA256进行加密,通过HASH将一个个区块链接起来,形成区块链。 数据篡改解决方案 此时非常容易对链进行篡改且无法发现,无论是单台服务器还是多台,通过引入工作证明(POW 生成新区块的一种模式) 添加新属性Nonce(无意义的值)通过调整Nonce的值来生成HASH直到HASH符合规则,例如下图将难度设置为3(HASH值的前三位为0) 交易和奖励机制 在矿工完成一次计算后需要奖励,交易机制,对区块链网络进行同步 P2P网络 去中心化,每个矿工既是服务端也是客户端(由两台以上的计算机组成的无中央服务器) Peer Discovery https://developer.bitcoin.org/devguide/p2p_network.html 学习视频来自 edi …

Blockchain

第三方登录授权 验证

OAuth是一个关于授权(authorization)的开放网络标准,它无法提供完善的身份认证功能,OpenID Connect是一个以用户为中心的数字身份识别框架,两组组合成为OIDC服务,它在OAuth2上构建了一个身份层,我们自己也能定义一个属于自己的OIDC服务 OIDC使得身份认证可以作为一个服务存在。 OIDC可以很方便的实现SSO(跨顶级域)。 OIDC兼容OAuth2,可以使用Access Token控制受保护的API资源。 OIDC可以兼容众多的IDP作为OIDC的OP来使用。 OIDC的一些敏感接口均强制要求TLS,除此之外,得益于JWT,JWS,JWE家族的安全机制,使得一些敏感信息可以进行数字签名、加密和验证,进一步确保整个认证过程中的安全保障。 1.Auth运行流程 (A)用户打开客户端以后,客户端要求用户给予授权。 (B)用户同意给予 …

Authentication Azure

  • 1