WEBAPP开发之ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
白羽 2018-07-19 来源 :网络 阅读 1153 评论 0

摘要:本文将带你了解WEBAPP开发之ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行,希望本文对大家学WebApp有所帮助。






ASP.NETCore是新一代的ASP.NET,早期称为ASP.NETvNext,并且在推出初期命名为ASP.NET5,但随着.NETCore的成熟,以及ASP.NET5的命名会使得外界将它视为ASP.NET的升级版,但它其实是新一代从头开始打造的ASP.NET核心功能,因此微软宣布将它改为与.NETCore同步的名称,即ASP.NETCore。
ASP.NETCore可运行于Windows平台以及非Windows平台,如MacOSX以及UbuntuLinux操作系统,是Microsoft第一个具有跨平台能力的Web开发框架。
微软在一开始开发时就将ASP.NETCore开源,因此它也是开源项目的一员,由.NET基金会(.NETFoundation)所管理。

正式版的.NETCore已于今天发布(2016年6月27日),具体可看微软.NETCore1.0正式发布下载

核心框架
ASP.NETCore在.NETCore的基础上发展,目前规划的功能有:

ASP.NETCoreMVC:ASP.NETCoreMVC提供了开发动态web站点的API,包括了WebPages和WebAPI,最终可运行在IIS或自托管(self-hosted)的服务器中。
DependencyInjection:包含了通用的依赖注入接口,用于在ASP.NETCoreMVC中使用。
EntityFrameworkCore:与之前版本的EntityFramework版本类似是一个轻量级的ORM框架,包括了Linq,POCO和Codefirst的支持。
ASP.NETCoreIdentity:用于在ASP.NETCorewebapplications构建用户权限系统的框架,包括了membership、login等功能,同时也可以方便的扩展和自定义。

ASP.NETCoreAPP创建与运行
一、安装the.NETCoreSDKforWindows(Linux、MAC)
以Windows为例,(下载地址),
安装完成后可以用命令dotnet-v查看版本号。
C:\Users\stephen>dotnet-v
Telemetryis:Enabled
.NETCommandLineTools(1.0.0-preview1-002702)
Usage:dotnet[common-options][command][arguments]

二、命令行生成模版项目
开发一个webapp可以从零开始创建文件,也可以通过命令行生成一个空的项目模版,下面的代码用于从零开始创建模版。
mkdiraspnetcoreapp
cdaspnetcoreapp
dotnetnew

依次执行命令后,便可在当前路径下,生成模版。

模版

模版包括以下三个文件:

project.json:

主掌项目的运行期的配置设置,包含项目的包参考(PackageReferences)、项目的基本设置、引导指令、包含或排除指定目录、以及建造时的相关事件指令等。

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"
},

四、下载依赖包部署网站
在WebApp部署时(dotnetrestore)根据project.json的依赖文件,依靠nuget下载依赖包,完成对整个程序的restore。(类似于Nodejs的npmrestore)
在C:\Users\stephen\.nuget\packages可以看到nuget已经下载到本地的包,在开始部署前nuget是不会加载依赖包,下图可看到目前nuget并没有下载任何包。

nuget

然后执行命令
dotnetrestore

可以看到,nuget已经自动将需要依赖包下载到本地

nuget

五、添加Startup.cs文件
对于一个ASP.NETCore程序而言,StartupClass是必须的。ASP.NETCore在程序启动时会从assemblies中找到名字叫Startup的类,如果存在多个名为Startup的类,则会先找到项目根名称空间下的Startup类。
在Startup必须定义Configure方法,而configureServices方法则是可选的,方法会在程序第一次启动时被调用,类似传统的ASP.NETMVC的路由和应用程序状态均可在Startup中配置,也可以在此安装所需中间件等等。Startup的详细功能的对于startup.cs中的configure和configureServices方法会在后续文章中详解。
在刚才文件路径下添加Startup.cs文件,并复制如下代码:
usingSystem;
usingMicrosoft.AspNetCore.Builder;
usingMicrosoft.AspNetCore.Hosting;
usingMicrosoft.AspNetCore.Http;

namespaceaspnetcoreapp
{
publicclassStartup
{
publicvoidConfigure(IApplicationBuilderapp)
{
app.Run(context=>
{
returncontext.Response.WriteAsync("HellofromASP.NETCore!");
});
}
}
}

六、WebHosting配置
在Program.cs文件中复制如下代码,指定WebApp宿主程序为Kestrel:
usingSystem;
usingMicrosoft.AspNetCore.Hosting;

namespaceaspnetcoreapp
{
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
varhost=newWebHostBuilder()
.UseKestrel()
.UseStartup()
.Build();

host.Run();
}
}
}

七、编译
dotnetbuild

代码完成后,需要调用Roslyn编译器将代码编译为assemblies,存储至bin文件夹中。按照上一节所述(简析.NETCore构成体系),
ASP.NETCoreApp可以编译为IL的assemblies外,还可以通过native直接编译为机器码。

新增bin文件夹

八、启动
输入启动命令,Kestrel托管WEB程序,并在5000端口监听,至此整个程序启动起来。
dotnetrun



总结
本节介绍了ASP.NETCore项目从创建、配置、编译、发布、运行的过程,ASP.NETCore与之前的ASP.NET相比具有更高的透明度和灵活性,可以快速的在各个操作系统中开发与运行。
本节使用Windows操作系统,但目前微软也在linux和mac下提供了类似的命令行工具(链接地址),方便在linux和mac下开发与部署,在后面文章中会详细讲解,本节不再累述。


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程