引言

随着移动设备和操作系统的多样化,开发全平台应用的需求日益增长。Microsoft .NET Core 3.0作为一款强大的跨平台开发框架,为开发者提供了构建全平台应用的可能。本文将详细介绍Net Core 3.0的特点、开发环境搭建、项目创建以及一些实战案例,帮助开发者轻松掌握跨平台开发。

Net Core 3.0概述

特点

  • 跨平台:支持Windows、Linux和macOS操作系统。
  • 高性能:采用新的runtime和编译器,提供更快的执行速度。
  • 模块化:采用模块化设计,便于管理和维护。
  • 现代化:支持现代编程语言特性,如C# 8.0。

优势

  • 统一开发语言:使用C#进行开发,简化开发流程。
  • 丰富的库和工具:提供丰富的库和工具,如Entity Framework Core、ASP.NET Core等。
  • 社区支持:拥有庞大的开发者社区,资源丰富。

开发环境搭建

系统要求

  • Windows 7 SP1或更高版本
  • macOS 10.12或更高版本
  • Linux发行版:Ubuntu 16.04、Debian 9、RHEL 7、Fedora 28、CentOS 7等

安装步骤

  1. 安装.NET Core SDK:从官方网址下载并安装.NET Core SDK。
  2. 安装Visual Studio:安装支持.NET Core的Visual Studio版本。
  3. 安装Visual Studio Code:安装Visual Studio Code并安装.NET Core扩展。

项目创建

创建Web应用

  1. 打开Visual Studio Code,输入以下命令创建Web应用:
dotnet new webapp -n MyWebApp
  1. 进入项目目录:
cd MyWebApp
  1. 运行应用:
dotnet run

创建控制台应用

  1. 输入以下命令创建控制台应用:
dotnet new console -n MyConsoleApp
  1. 进入项目目录:
cd MyConsoleApp
  1. 运行应用:
dotnet run

实战案例

Web应用案例

1. 添加Entity Framework Core

  1. 在项目中安装Entity Framework Core:
dotnet add package Microsoft.EntityFrameworkCore
  1. 创建数据库模型:
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=BlogDb;Trusted_Connection=True;");
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
}
  1. 添加数据库迁移:
dotnet ef migrations add InitialCreate
dotnet ef database update

2. 添加ASP.NET Core身份验证

  1. 在项目中安装身份验证相关包:
dotnet add package Microsoft.AspNetCore.Identity
  1. 添加Identity配置:
public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<BloggingContext>(options =>
        options.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=BlogDb;Trusted_Connection=True;"));

    services.AddIdentity<IdentityUser, IdentityRole>()
        .AddEntityFrameworkStores<BloggingContext>()
        .AddDefaultTokenProviders();
}
  1. 在Startup.cs中添加身份验证中间件:
public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddControllersWithViews();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...
    app.UseAuthentication();
    app.UseAuthorization();
}
  1. 添加登录页面:

  2. 在Views文件夹中创建Shared文件夹。

  3. 在Shared文件夹中创建Login.cshtml文件,添加以下内容:

@{
    ViewData["Title"] = "Login";
}

<h2>Login</h2>

<form asp-action="Login">
    <div class="form-group">
        <label asp-for="Username" class="control-label"></label>
        <input asp-for="Username" class="form-control" />
        <span asp-validation-for="Username" class="text-danger"></span>
    </div>
    <div class="form-group">
        <label asp-for="Password" class="control-label"></label>
        <input asp-for="Password" type="password" class="form-control" />
        <span asp-validation-for="Password" class="text-danger"></span>
    </div>
    <button type="submit" class="btn btn-primary">Login</button>
</form>
  1. 在Controllers文件夹中创建AccountController.cs文件,添加以下内容:
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;

public class AccountController : Controller
{
    private readonly UserManager<IdentityUser> _userManager;
    private readonlySignInManager<IdentityUser> _signInManager;

    public AccountController(UserManager<IdentityUser> userManager,SignInManager<IdentityUser> signInManager)
    {
        _userManager = userManager;
        _signInManager = signInManager;
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Login(LoginViewModel model)
    {
        if (ModelState.IsValid)
        {
            var result = await _signInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, lockoutOnFailure: false);
            if (result.Succeeded)
            {
                return RedirectToAction(nameof(Index), "Home");
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
            }
        }

        return View(model);
    }
}
  1. 在Startup.cs中添加登录页面路由:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...
    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
        endpoints.MapRazorPages();
    });
}

控制台应用案例

1. 使用命令行参数

  1. 在Program.cs中添加命令行参数解析:
static void Main(string[] args)
{
    var builder = WebApplication.CreateBuilder(args);

    builder.Services.AddControllers();

    var app = builder.Build();

    if (args.Length > 0)
    {
        Console.WriteLine($"Hello {args[0]}!");
    }
    else
    {
        Console.WriteLine("Hello, World!");
    }

    app.Run();
}
  1. 运行应用并传入参数:
dotnet run --name="John"

2. 使用配置文件

  1. 在项目目录中创建appsettings.json文件:
{
  "name": "John"
}
  1. 在Program.cs中读取配置文件:
static void Main(string[] args)
{
    var builder = WebApplication.CreateBuilder(args);

    var configuration = builder.Configuration;

    Console.WriteLine($"Hello {configuration["name"]}!");

    var app = builder.Build();

    app.Run();
}

总结

本文详细介绍了Net Core 3.0跨平台开发的特点、开发环境搭建、项目创建以及实战案例。通过学习本文,开发者可以轻松掌握Net Core 3.0跨平台开发,为构建全平台应用奠定基础。