.NET 生态中主流的前后端生产级框架

发布于:2025-06-25 ⋅ 阅读:(22) ⋅ 点赞:(0)

在这里插入图片描述


在这里插入图片描述


1. 后端框架(Backend Frameworks)

(1) ASP.NET Core(微软官方,主流选择)

定位:高性能、跨平台、模块化的 Web 框架
适用场景:API 服务、MVC 应用、微服务、企业级应用
关键特性

  • 支持 REST API、gRPC、SignalR(实时通信)
  • 内置 依赖注入 (DI)、中间件管道、日志系统
  • 高性能(Kestrel 服务器 + System.Text.Json)
  • 支持 Blazor(全栈 .NET 开发)
  • 集成 Entity Framework Core(ORM)
  • 支持 Docker、Kubernetes 部署

示例代码(API 开发)

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    private readonly IProductService _productService;

    public ProductsController(IProductService productService)
    {
        _productService = productService;
    }

    [HttpGet]
    public async Task<IActionResult> GetAll()
    {
        var products = await _productService.GetAllAsync();
        return Ok(products);
    }
}

(2) ABP Framework(企业级应用开发框架)

定位:基于 DDD(领域驱动设计) 的企业级开发框架
适用场景:SaaS、ERP、CRM 等复杂业务系统
关键特性

  • 模块化架构(类似 Java 的 Spring Boot)
  • 内置 身份认证、权限管理、多租户
  • 集成 Entity Framework Core、MongoDB、RabbitMQ
  • 提供 自动 API 生成(动态 Web API)
  • 支持 微服务(结合 Kubernetes)

示例代码(自动生成 API)

public class ProductAppService : ApplicationService, IProductAppService
{
    private readonly IRepository<Product, Guid> _productRepository;

    public ProductAppService(IRepository<Product, Guid> productRepository)
    {
        _productRepository = productRepository;
    }

    public async Task<List<ProductDto>> GetAllAsync()
    {
        var products = await _productRepository.GetListAsync();
        return ObjectMapper.Map<List<Product>, List<ProductDto>>(products);
    }
}

2. 前端框架(Frontend Frameworks)

(1) Blazor(微软官方,.NET 全栈开发)

定位:使用 C# 替代 JavaScript 构建交互式 Web UI
两种模式

  • Blazor Server(实时 SignalR 连接,适合企业内网应用)
  • Blazor WebAssembly(前端运行 WASM,适合 SPA 应用)

关键特性

  • C# 代替 JS,共享后端代码
  • 支持 Razor 组件(类似 React/Vue 组件化)
  • 集成 SignalR 实时通信
  • 支持 PWA(渐进式 Web 应用)

示例代码(Razor 组件)

@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;
    private void IncrementCount() => currentCount++;
}

(2) React/Angular/Vue + .NET API(传统前后端分离)

适用场景:大型 SPA 应用,前端团队使用 JavaScript 技术栈
推荐组合

  • 前端:React(Ant Design)、Angular(Material UI)、Vue(Element Plus)
  • 后端:ASP.NET Core Web API
  • 通信:REST API / GraphQL(HotChocolate)

示例架构

Frontend (React)  →  ASP.NET Core API  →  SQL Server

3. 微服务 & 云原生框架

(1) Steeltoe(.NET 微服务工具包)

定位:让 .NET 应用无缝集成 Spring Cloud Netflix(Eureka、Hystrix)
关键特性

  • 服务发现(Eureka)
  • 配置中心(Spring Cloud Config)
  • 熔断器(Hystrix)
  • 适用于 Kubernetes + .NET 微服务架构

(2) Dapr(Distributed Application Runtime)(微软 & CNCF 项目)

定位:云原生微服务开发框架
关键特性

  • 服务调用、Pub/Sub、状态管理、Actor 模型
  • 支持 Kubernetes、Azure、AWS
  • 语言无关(Go/Java/.NET/Python 均可使用)

示例代码(Dapr Pub/Sub)

[Topic("pubsub", "orders")]
[HttpPost("orders")]
public async Task<ActionResult> CreateOrder(Order order)
{
    await _repository.SaveAsync(order);
    return Ok();
}

4. 数据库 & ORM

(1) Entity Framework Core(微软官方 ORM)

关键特性

  • 支持 SQL Server、PostgreSQL、MySQL、SQLite
  • Code First / Database First
  • LINQ 查询
  • 迁移(Migrations)

示例代码(EF Core 查询)

var users = await _dbContext.Users
    .Where(u => u.Age > 18)
    .OrderBy(u => u.Name)
    .ToListAsync();

(2) Dapper(轻量级高性能 ORM)

适用场景:需要极致性能的 SQL 查询
示例代码

using var connection = new SqlConnection(connectionString);
var users = connection.Query<User>("SELECT * FROM Users WHERE Age > @Age", new { Age = 18 });

5. 实时通信

(1) SignalR(微软官方实时 Web 框架)

适用场景:聊天应用、实时数据推送、股票行情
关键特性

  • 支持 WebSocket、Server-Sent Events (SSE)、长轮询
  • 自动选择最佳传输协议
  • 适用于 Blazor、React、Vue、Angular

示例代码(Hub 类)

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

总结:如何选择?

场景 推荐框架
企业级 Web 应用 ASP.NET Core + Angular/React + EF Core
全栈 C# 开发 Blazor WebAssembly + ASP.NET Core API
微服务架构 Dapr + Kubernetes + Steeltoe
高性能 API ASP.NET Core Minimal API + Dapper
实时应用 SignalR + Blazor Server

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到