引言
随着移动设备和操作系统的多样化,开发全平台应用的需求日益增长。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等
安装步骤
- 安装.NET Core SDK:从官方网址下载并安装.NET Core SDK。
- 安装Visual Studio:安装支持.NET Core的Visual Studio版本。
- 安装Visual Studio Code:安装Visual Studio Code并安装.NET Core扩展。
项目创建
创建Web应用
- 打开Visual Studio Code,输入以下命令创建Web应用:
dotnet new webapp -n MyWebApp
- 进入项目目录:
cd MyWebApp
- 运行应用:
dotnet run
创建控制台应用
- 输入以下命令创建控制台应用:
dotnet new console -n MyConsoleApp
- 进入项目目录:
cd MyConsoleApp
- 运行应用:
dotnet run
实战案例
Web应用案例
1. 添加Entity Framework Core
- 在项目中安装Entity Framework Core:
dotnet add package Microsoft.EntityFrameworkCore
- 创建数据库模型:
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; }
}
- 添加数据库迁移:
dotnet ef migrations add InitialCreate
dotnet ef database update
2. 添加ASP.NET Core身份验证
- 在项目中安装身份验证相关包:
dotnet add package Microsoft.AspNetCore.Identity
- 添加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();
}
- 在Startup.cs中添加身份验证中间件:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
app.UseAuthentication();
app.UseAuthorization();
}
添加登录页面:
在Views文件夹中创建Shared文件夹。
在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>
- 在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);
}
}
- 在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. 使用命令行参数
- 在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();
}
- 运行应用并传入参数:
dotnet run --name="John"
2. 使用配置文件
- 在项目目录中创建appsettings.json文件:
{
"name": "John"
}
- 在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跨平台开发,为构建全平台应用奠定基础。