本文将会示范如何在Windows系统下基于ASP.NET Core构建跨平台服务,并通过Docker容器运行发布。 首先说一下为什么选择这一套组合: 我本人和我们Code4Thought团队关注一切具备生产力的技术和工具,话说有所了解才有所选择,DotNet技术发展趋势也值得我们关注和支持。基于DotNot Core我们可以构建跨平台服务,结合Entity Framework Core(微软强大的ORM),MYSQL(免费),Docker(方便移植),Visual Studio 2015(宇宙最强IDE)这一系列技术和工具,不管从商业成本,可移植性,还是生产效率上,都具备很强的诱惑力。
- Windows 10 Professional or Enterprise 64-bit CPU 开启虚拟化
- Docker for Windows 安装包。https://download.docker.com/win/stable/InstallDocker.msi
- DotNet Core 开发环境
- MySQL 数据库
1,创建ASP.NET Core,可以通过.Net Core SDK提供的命令创建,当然在Windows环境下最佳选择还是宇宙最强IDE:Visual Studio,本文使用2015 Update3 版本:
选择Web 应用程序,创建成功后,VS会自动执行 dotnet restore 自动还原project.json 中的依赖项,项目结构如下:
介绍几个变化项:
project.json:类似JAVA世界的Maven,管理了程序的依赖项,包括程序集,工具,配置等。
Program.cs:跟JAVA世界还是很像,程序会找到其中的Main方法做为启动入口,模板代码是通过微软Microsoft.AspNetCore.Hosting 自托管当前Web程序。
Startup.cs:初始化应用程序服务,全局配置,服务注入等。
wwwroot:前端项目文件。
通过Nuget命令行或管理工具,获取项目所需依赖程序集和工具:
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Tools (还需要添加到tools内,后续需要使用Migrations命令)
- SapientGuardian.EntityFrameworkCore.MySql 或者 MySql.Data.EntityFrameworkCore(官方推荐的尚未发布正式版,https://docs.efproject.net/en/latest/providers/index.html)
Get成功之后,project.json如下:
下面我们使用Entity Framework Core试用Code First模式,结合领域驱动设计,快速构建领域模型,假设建模后的模型包含 “用户“”和“物品“两个实体,当然这种开发模式可以充分利用面向对象的设计理念,比如领域模型通过继承获取一些系统属性:BaseEntity
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Threading.Tasks; 5 6 namespace WebApplication2.Domain.Model 7 { 8 public class BaseEntity 9 { 10 11 public int Id { get; set; } 12 13 public DateTime CreateTime { get; set; } 14 15 public DateTime UpdateTime { get; set; } 16 17 } 18 }