当前位置:首页 > 技术分析 > 正文内容

每个开发人员都应该知道的基本 .NET 库

ruisui883个月前 (02-03)技术分析81

.NET 库简介

欢迎来到 .NET 库的世界!如果您是 .NET 开发人员,那么了解正确的库可以增强您的项目,节省您的时间和精力。在接下来的部分中,我们将深入探讨您的工具包中必须包含的核心和第三方 .NET 库。

核心 .NET 库

什么是 .NET 库?

.NET 库是预构建代码的集合,您可以在 .NET 应用程序中重复使用它们。这些库提供各种功能 - 从处理数据集合到网络、文件操作等等。

在 .NET 开发中使用库的重要性

在 .NET 开发中使用库可以让你:

  • 避免重写通用功能
  • 加快开发时间
  • 提高代码质量和可靠性
  • 更多地关注业务逻辑,而不是样板代码

System.Collections

命名空间System.Collections提供定义各种对象集合的类和接口,例如列表、队列、位数组、哈希表和字典。

例子

var list = new List { "apple", "banana", "cherry" };
list.Add("date");

foreach(var fruit in list)
{
    Console.WriteLine(fruit);
}

此代码创建一个水果列表并打印每个水果。

System.Linq

LINQ(语言集成查询)对于以更易读、更简洁的方式查询集合来说是天赐之物。

例子

var numbers = new List { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
foreach(var num in evenNumbers)
{
  	Console.WriteLine(num); // 2, 4
}

此示例从列表中筛选出偶数。简单又优雅!

System.IO

正在使用文件系统?您一定能.NET Libraries拯救System.IO一切。

例子

string[] lines = { "First line", "Second line", "Third line" };
System.IO.File.WriteAllLines(@"C:\temp\example.txt", lines);

此示例将一些行写入文本文件。

System.Net.Http

使用 发出 HTTP 请求非常简单System.Net.Http。

例子

using HttpClient client = new HttpClient();
string responseBody = await client.GetStringAsync("https://example.com");
Console.WriteLine(responseBody);

您刚刚发出了 GET 请求。

热门第三方 .NET 库

第三方库可以让你的生活更加轻松,代码更加简洁。让我们来探索几个必备的库。

Newtonsoft.Json

在 .NET 中处理 JSON?Newtonsoft.Json(又名 Json.NET)可以帮你搞定。

例子

var json = JsonConvert.SerializeObject(new { Name = "John", Age = 30 });
var obj = JsonConvert.DeserializeObject(json);
Console.WriteLine($"{obj.Name} is {obj.Age} years old.");

将 JSON 处理从令人头痛的事情变为轻而易举的事情!

Dapper

Dapper是 .NET 的简单对象映射器。

例子

using (IDbConnection db = new SqlConnection(connectionString))
{
    string sql = "SELECT * FROM Users WHERE Age = @Age";
    var users = db.Query(sql, new { Age = 30 }).ToList();
}

Dapper 可以直接将数据库行映射到对象。

Serilog

想要风格化地记录日志?Serilog可以满足您的需求。

例子

Log.Logger = new LoggerConfiguration()
    .WriteTo.Console()
    .CreateLogger();

Log.Information("Hello, Serilog!");

只需设置并登录即可!

AutoMapper

AutoMapper是一个帮助您在对象(如 DTO 和业务模型)之间进行映射的库。

例子

var config = new MapperConfiguration(cfg => {
    cfg.CreateMap();
});

IMapper mapper = config.CreateMapper();
var user = new User { Name = "John", Age = 30 };
var userDto = mapper.Map(user);

此示例毫不费力地将一个User对象映射到另一个UserDto对象。

NLog

需要替代的日志库吗?NLog是另一个不错的选择。

例子

var logger = NLog.LogManager.GetCurrentClassLogger();
logger.Info("Hello, NLog!");

与 Serilog 一样高效且用户友好。

Specialized .NET Libraries

让我们深入研究一些专门的.NET 库,它们将使特定任务变得更加容易。

实体框架核心

概述和优势

Entity Framework Core (EF Core)是 .NET 的 ORM (对象关系映射器)。它允许您使用 .NET 对象处理数据库。

好处

  • 减少样板代码
  • 简化数据库架构管理
  • 支持各种数据库

EF Core 入门

例子

public class BloggingContext : DbContext
{
    public DbSet Blogs { get; set; }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
}

using (var context = new BloggingContext())
{
    context.Blogs.Add(new Blog { Url = "http://sample.com" });
    context.SaveChanges();
}

此示例展示了如何开始使用 EF Core——简单而干净。

SignalR

实时 Web 应用程序

SignalR可以轻松地向 .NET 应用程序添加实时 Web 功能,并为 .NET、JavaScript 和其他平台提供客户端库。

在你的项目中实现 SignalR

例子

// Hub definition
public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

将 SignalR 集成到您的项目中可以让您创建交互式的实时应用程序。

工具和实用程序

您可以利用某些工具和实用程序库来自动化和简化开发过程。

使用 Cake 自动执行任务

Cake(C# Make)是一个使用 C# DSL 的跨平台构建自动化系统。

例子

var target = Argument("target", "Default");

Task("Default")
    .Does(() =>
{
    Information("Hello, World!");
});

RunTarget(target);

这是您自动执行 .NET 构建任务的首选工具。

FluentValidation 实现清洁代码

FluentValidation是一个用于构建强类型验证规则的流行库。

例子

public class CustomerValidator : AbstractValidator
{
    public CustomerValidator()
    {
        RuleFor(customer => customer.LastName).NotEmpty();
        RuleFor(customer => customer.Age).GreaterThan(18);
    }
}

使用 FluentValidation 增强你的数据验证游戏。

使用 RestSharp 作为 API 客户端

RestSharp简化了对 RESTful API 发出 HTTP 请求。

例子

var client = new RestClient("https://api.example.com");
var request = new RestRequest("resource/{id}", Method.Get);
request.AddUrlSegment("id", 1);
RestResponse response = client.Execute(request);

进行 REST API 调用从未如此轻松。

用于单元测试的 .NET 库

单元测试对于维护代码质量至关重要。以下是一些您不应忽视的库。

单元

例子

[Test]
public void AdditionTest()
{
    var sum = 2 + 2;
    Assert.AreEqual(4, sum);
}

NUnit用户友好且具有高度可扩展性,可以满足您的单元测试需求。

性能和优化

优化 .NET 代码的性能可以带来很大的不同。

基准DotNet

例子

[MemoryDiagnoser]
public class Benchmarks
{
    [Benchmark]
    public void TestMethod()
    {
        var list = new List(1000);
        for (int i = 0; i < 1000; i++) list.Add(i);
    }
}

BenchmarkDotNet可帮助您轻松测量性能。

Polly 用于恢复能力和瞬态故障处理

例子

var retryPolicy = Policy
    .Handle()
    .RetryAsync(3);

await retryPolicy.ExecuteAsync(() => MakeRequest());

Polly非常适合处理瞬态故障和重试。

安全和密码

确保应用程序的安全应该是首要任务

BouncyCastle

例子

var secureRandom = new SecureRandom();
var keyGenerationParameters = new KeyGenerationParameters(secureRandom, 2048);
var rsaKeyPairGenerator = new RsaKeyPairGenerator();
rsaKeyPairGenerator.Init(keyGenerationParameters);
AsymmetricCipherKeyPair keyPair = rsaKeyPairGenerator.GenerateKeyPair();

BouncyCastle提供高级加密功能。

IdentityServer4

例子

services.AddIdentityServer()
    .AddInMemoryClients(Config.GetClients())
    .AddInMemoryIdentityResources(Config.GetIdentityResources())
    .AddInMemoryApiResources(Config.GetApiResources())
    .AddTestUsers(TestUsers.Users)
    .AddDeveloperSigningCredential();

IdentityServer4使得 OAuth 和 OpenID Connect 的实现变得简单。

集成和扩展

使用这些库扩展 .NET 项目的功能:

微软扩展依赖注入

例子

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient();
}

使用 可以很容易地实现 DI(依赖注入)
Microsoft.Extensions.DependencyInjection。

MediatR

例子

public class Ping : IRequest { }
public class PingHandler : IRequestHandler
{
    public Task Handle(Ping request, CancellationToken cancellationToken)
    {
        return Task.FromResult("Pong");
    }
}

MediatR简化了进程内消息传递、CQRS 和域事件。

使用 .NET 库的最佳实践

为了充分利用这些库,请遵循以下最佳做法:

管理依赖关系

  • 使用 NuGet 进行依赖管理
  • 锁定版本以避免兼容性问题
  • 定期检查库更新

保持Libraries更新

  • 定期更新可降低漏洞风险
  • 新功能可以提高性能并增加功能

评估Library 质量和社区支持

  • 检查 GitHub 统计信息和问题
  • 阅读文档
  • 参与社区论坛

结论

顶级 .NET 库回顾

从核心库到专门的框架,我们涵盖了每个开发人员必备的一系列 .NET 库。

给新手和有经验的开发人员的建议

无论您是刚刚起步还是经验丰富的 .NET 老手,将这些库集成到您的项目中都会简化您的工作流程,提高代码质量,并使您的应用程序保持最佳状态。

关于 .NET 库未来的最终思考

随着生态系统的不断发展,及时了解最新的 .NET 库和最佳实践至关重要。

您觉得如何?准备好升级您的 .NET 吗?不要等待,立即开始尝试这些工具吧!

祝您编码愉快!

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1349.html

分享给朋友:

“每个开发人员都应该知道的基本 .NET 库” 的相关文章

带你五步学会Vue SSR

作者:liuxuan 前端名狮转发链接:https://mp.weixin.qq.com/s/6K6GUHcLwLG4mzfaYtVMBQ前言SSR大家肯定都不陌生,通过服务端渲染,可以优化SEO抓取,提升首页加载速度等,我在学习SSR的时候,看过很多文章,有些对我有很大的启发作用,有些就只是照搬官...

Git 分支管理策略与工作流程

(预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料)团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。看完这篇文章后,涉及GIT的工作中就会减少因为规范问题导致工作出错,当然如果你现在暂时还未有合...

继Yuzu后,任天堂要求移除多个Switch模拟器项目

IT之家 7 月 11 日消息,任天堂美国分公司 (Nintendo of America) 已要求移除多个用于模拟 Nintendo Switch 游戏的开源模拟器项目,其中包括 Suyu、Nzu、Uzuy、Torzu、Sudachi 和 Yuzu-vanced 等。这些模拟器均被指控包含绕过任天...

壹啦罐罐 Android 手机里的 Xposed 都装了啥

这是少数派推出的系列专题,叫做「我的手机里都装了啥」。这个系列将邀请到不同的玩家,从他们各自的角度介绍手机中最爱的或是日常使用最频繁的 App。文章将以「每周一篇」的频率更新,内容范围会包括 iOS、Android 在内的各种平台和 App。本期继续歪楼,由少数派撰稿作者@壹啦罐罐介绍他正在使用的...

我的VIM配置

写一篇关于VIM配置的文章,记录下自己的VIM配置,力求简洁实用。VIM的配置保存在文件~/.vimrc中(Windows下是C:\Users\yourname \_vimrc)。VIM除了自身可配置项外,还可插件扩展。VIM的插件一般用vundle或vim-plug来管理,但我力求简单,不打算装太...

Excel中的FILTER函数详细介绍及使用示例

在Excel中处理大量数据时,经常需要根据特定条件筛选出符合条件的数据行或列。这正是Excel的FILTER函数发挥作用的地方。FILTER函数是Excel中一个非常强大的工具,它可以基于一个或多个条件动态地过滤数据,使数据分析和报告制作变得更加高效和准确。本文将详细介绍FILTER函数的用法,并提...