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

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

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

.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 库” 的相关文章

冷库存储费管理系统——货架收费版

冷库存储费管理系统——货架收费版headerfooter《冷库存储费管理系统——货架收费版》是根据冷链存储的管理进行开发的一款软件,该软件操作简单,界面简洁。区别于其他同类软件的主要特点是:按所用货架个数及存放时间收费。软件界面设计简洁、美观、其人性化的管理可以使用户轻易上手,提升服务质量,提高工作...

Linux发行版Nobara更新39版本,号称“专为游戏玩家定制”

IT之家 12 月 27 日消息,Linux 发行版 Nobara 今天推出了 39 版本,主要改进了“Gamescope 合成器”,并更新了 OBS Studio、部分驱动程序及 Nautilus 文件管理器,小伙伴们可以点此访问项目地址。IT之家经过查询得知,Nobara 是一款基于 Fedor...

带你五步学会Vue SSR

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

react hooks自定义组件居然能这样做

前言  这里写一下如何封装可复用组件。首先技术栈 react hooks + props-type + jsx封装纯函数组件。类组件和typeScript在这不做讨论,大家别白跑一趟。接下来会说一下封装可复用组件的思路,比如一个新手应该怎么去封装,都需要有哪些东西。  然后说一些复杂组件需要的功能,...

gitlab简单搭建与应用

一、gitlab1、简介GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。与Github类似,GitLab能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历...

30 个纯 HTML5 实现的游戏

浏览器和 JavaScript 的功能逐年不断的变强变大。曾几何时,任何类型的游戏都需要Flash。但随着 HTML5 发展,HTML5 + WebGL 游戏式就慢慢占领着这个舞台。以下是30款流行的游戏,它们可以在所有现代浏览器中运行,并且只使用web技术构建。1. HexGL地址:http://...