ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
之前兩篇文章簡析.NET Core 以及與 .NET Framework的關(guān)系和.NET Core的構(gòu)成體系從總體上介紹.NET Core,接下來計劃用一個系列對ASP.NET Core的運行原理進(jìn)行剖析。
ASP.NET Core 是新一代的 ASP.NET,早期稱為 ASP.NET vNext,并且在推出初期命名為ASP.NET 5,但隨著 .NET Core 的成熟,以及 ASP.NET 5的命名會使得外界將它視為 ASP.NET 的升級版,但它其實是新一代從頭開始打造的 ASP.NET 核心功能,因此微軟宣布將它改為與 .NET Core 同步的名稱,即 ASP.NET Core。
ASP.NET Core 可運行于 Windows 平臺以及非 Windows 平臺,如 Mac OSX 以及 Ubuntu Linux 操作系統(tǒng),是 Microsoft 第一個具有跨平臺能力的 Web 開發(fā)框架。
微軟在一開始開發(fā)時就將 ASP.NET Core 開源,因此它也是開源項目的一員,由 .NET 基金會 (.NET Foundation) 所管理。
正式版的.NET Core已于今天發(fā)布(2016年6月27日),具體可看微軟 .NET Core 1.0 正式發(fā)布下載
核心框架
ASP.NET Core 在 .NET Core 的基礎(chǔ)上發(fā)展,目前規(guī)劃的功能有:
ASP.NET Core MVC:?ASP.NET Core MVC 提供了開發(fā)動態(tài)web站點的API,包括了WebPages 和 WebAPI ,最終可運行在IIS 或 自托管(self-hosted)的服務(wù)器中。
DependencyInjection:?包含了通用的依賴注入接口,用于在ASP.NET Core MVC中使用。
Entity Framework Core:?與之前版本的EntityFramework版本類似是一個輕量級的ORM框架,包括了Linq,POCO和Codefirst的支持。
ASP.NET Core Identity:?用于在ASP.NET Core web applications構(gòu)建用戶權(quán)限系統(tǒng)的框架,包括了membership、login等功能,同時也可以方便的擴展和自定義。
ASP.NET Core APP 創(chuàng)建與運行
一、安裝the .NET Core SDK for Windows(Linux、MAC)
以Windows為例,(下載地址),
安裝完成后可以用命令dotnet -v查看版本號。
二、命令行生成模版項目
開發(fā)一個webapp可以從零開始創(chuàng)建文件,也可以通過命令行生成一個空的項目模版,下面的代碼用于從零開始創(chuàng)建模版。
mkdir aspnetcoreappcd aspnetcoreapp dotnet new依次執(zhí)行命令后,便可在當(dāng)前路徑下,生成模版。
模版包括以下三個文件:
project.json:
主掌項目的運行期的配置設(shè)置,包含項目的包參考 (Package References)、項目的基本設(shè)置、引導(dǎo)指令、包含或排除指定目錄、以及建造時的相關(guān)事件指令等。
Program.cs:
程序入口文件
project.lock.json:
與project.json相比,是project.json文件中引用包的完整引用列表。
三、修改project.json
project.json是用于定義項目需要依賴的資源,每個WebApp 需要一個hosting 程序(IIS、IISExpress等),而此次使用Kestrel?(什么是kestrel?),在project.json中加入對Kestrel的依賴代碼清單如下。
"dependencies": {"Microsoft.NETCore.App": {"type": "platform","version": "1.0.0-rc2-3002702"},"Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final"},四、下載依賴包部署網(wǎng)站
在WebApp部署時(dotnet restore)根據(jù)project.json的依賴文件,依靠nuget下載依賴包,完成對整個程序的restore。(類似于Nodejs的 npm restore)
在C:\Users\stephen\.nuget\packages可以看到nuget已經(jīng)下載到本地的包,在開始部署前nuget是不會加載依賴包,下圖可看到目前nuget并沒有下載任何包。
然后執(zhí)行命令
dotnet restore可以看到,nuget已經(jīng)自動將需要依賴包下載到本地
五、添加Startup.cs文件
對于一個ASP.NET Core 程序而言,Startup Class?是必須的。ASP.NET Core在程序啟動時會從assemblies中找到名字叫Startup的類,如果存在多個名為Startup的類,則會先找到項目根名稱空間下的Startup類。
在Startup必須定義Configure方法,而configureServices方法則是可選的,方法會在程序第一次啟動時被調(diào)用,類似傳統(tǒng)的ASP.NET MVC的路由和應(yīng)用程序狀態(tài)均可在Startup中配置,也可以在此安裝所需中間件等等。Startup的詳細(xì)功能的對于startup.cs中的configure和configureServices方法會在后續(xù)文章中詳解。
在剛才文件路徑下添加Startup.cs文件,并復(fù)制如下代碼:
using System;using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.AspNetCore.Http;namespace aspnetcoreapp{ ? ?public class Startup{ ? ? ? ?public void Configure(IApplicationBuilder app) ? ? ? ?{app.Run(context =>{ ? ? ? ? ? ? ? ?return context.Response.WriteAsync("Hello from ASP.NET Core!");});}} }六、Web Hosting 配置
在Program.cs文件中復(fù)制如下代碼,指定WebApp宿主程序為Kestrel:
using System;using Microsoft.AspNetCore.Hosting;namespace aspnetcoreapp{ ? ?public class Program{ ? ? ? ?public static void Main(string[] args) ? ? ? ?{ ? ? ? ? ? ?var host = new WebHostBuilder().UseKestrel().UseStartup<Startup>().Build();host.Run();}} }七、編譯
dotnet build代碼完成后,需要調(diào)用Roslyn編譯器將代碼編譯為assemblies,存儲至bin文件夾中。按照上一節(jié)所述(簡析 .NET Core 構(gòu)成體系),
ASP.NET Core App 可以編譯為IL的assemblies外,還可以通過native直接編譯為機器碼。
八、啟動
輸入啟動命令,Kestrel托管WEB程序,并在5000端口監(jiān)聽,至此整個程序啟動起來。
dotnet run總結(jié)
本節(jié)介紹了ASP.NET Core 項目從創(chuàng)建、配置、編譯、發(fā)布、運行的過程,ASP.NET Core與之前的ASP.NET相比具有更高的透明度和靈活性,可以快速的在各個操作系統(tǒng)中開發(fā)與運行。
本節(jié)使用Windows操作系統(tǒng),但目前微軟也在?linux?和?mac?下提供了類似的命令行工具(鏈接地址),方便在?linux?和?mac?下開發(fā)與部署,在后面文章中會詳細(xì)講解,本節(jié)不再累述。
相關(guān)文章:
ASP.NET Core 1.0 入門——了解一個空項目
ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0簡介
云服務(wù)器下ASP.NET Core 1.0環(huán)境搭建(包含mono與coreclr)
使用VS Code開發(fā)ASP.NET Core 應(yīng)用程序
dotnet run是如何啟動asp.net core站點的
ASP.NET Core提供模塊化Middleware組件
“dotnet restore"和"dotnet run"都做了些什么?
探秘 dotnet run 如何運行 .NET Core 應(yīng)用程序
.NET Portability Analyzer 已開源
ASP.NET Core的配置(1):讀取配置信息
ASP.NET Core的配置(2):配置模型詳解
.NET Core 1.0 RC2 歷險之旅
使用VS Code開發(fā) 調(diào)試.NET Core 應(yīng)用程序
讓我們Core在一起:ASP.NET Core & .NET Core
.NET Core VS Code 環(huán)境配置
官方博客明確了 .NET Core RC2/RTM 時間表
.NET Core全新的配置管理[共9篇]
利用記事本創(chuàng)建一個ASP.NET Core RC2 MVC應(yīng)用
微軟.NET 正式劈腿成功,橫跨所有平臺
.NET Core 1.0 CentOS7 嘗試
解讀發(fā)布:.NET Core RC2 and .NET Core SDK Preview 1
[.NET Core].NET Core R2安裝及示例教程
ASP.NET Core 開發(fā)-中間件(Middleware)
結(jié)合Jexus + Kestrel 部署 asp.net core 生產(chǎn)環(huán)境
通過Jexus 部署 dotnetcore版本MusicStore 示例程序
ASP.NET Core 中文文檔 第一章 入門
用 Visual Studio Code 在 macOS 上創(chuàng)建首個 ASP.NET Core 應(yīng)用程序
用 Visual Studio 和 ASP.NET Core MVC 創(chuàng)建首個 Web API
用 Visual Studio 發(fā)布一個 Azure 云 Web 應(yīng)用程序
ASP.NET Core MVC 與 Visual Studio 入門
第二章指南(4.2)添加 Controller
DotNet Core 介紹
asp.net core 中間件詳解及項目實戰(zhàn)
教你實踐ASP.NET Core Authorization(免看文檔教程)
asp.net core 使用 Redis 和 Protobuf 進(jìn)行 Session 緩存
asp.net core 中間件詳解及項目實戰(zhàn)
第二章 指南(4.3)添加 View
dotnet core開發(fā)體驗之開始MVC
dotnet core 開發(fā)體驗之Routing
聊聊ASP.NET Core默認(rèn)提供的這個跨平臺的服務(wù)器——KestrelServer
簡析.NET Core 以及與 .NET Framework的關(guān)系
.NET Core 使用Dapper 操作MySQL
使用 CommandLineApplication 類創(chuàng)建專業(yè)的控制臺程序
簡析 .NET Core 構(gòu)成體系
.NET Core也可以使用MongoDB了
.NET Core & ASP.NET Core 1.0在Redhat峰會上正式發(fā)布
.NET Core:面向未來的開源跨平臺開發(fā)技術(shù)
微軟說它深愛著Linux,現(xiàn)在它用行動證明了
移植.NET Core計劃,整合各平臺變得更簡單了!
ASP.NET Core 介紹
原文地址:http://www.cnblogs.com/vipyoumay/p/5620373.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core 介绍
- 下一篇: 红帽、微软和 Codenvy 联合推出语