【1】Asp.Net Core2.2从环境配置到应用建立
作者:Eleven
来源:公众号【软谋net】
【前言】
.Net Core开源&跨平台,已经肉眼可见将成为.Net平台的未来,在企业招聘需求上已经频频见到,接触到很多公司内部都已经开始尝试Core的项目了,尤其是腾讯的财付通全部是基于Core+微服务搭建的,让人倍感振奋!Eleven最近出个专题,以当下最新的Asp.Net Core 2.2 Preview3为版本,给大家来一套系统教程,希望小伙伴儿们能多多关注!
【环境搭建】
我这边使用的VisualStudio版本为2017企业版15.7.4(并不是最新版本,专业版社区版也都是可以的)。之前安装是自带的Core是1.1版本,现在需要安装最新的sdk(dotnet-sdk-2.2.100-preview3-009430-win-x64.exe),以及最新的runtime(dotnet-runtime-2.2.0-preview3-27014-02-win-x64)。相关环境配置,需要的话可以关注底部公众号后,联系助教老师获取!
【项目建立】
下面开始动手建立Asp.Net Core2.2项目了,添加项目,选择Web,然后选择 ASP.NET Core Web应用程序模板,另外那个是原来的Framework版本的。
这里选择.NET Core,然后选择最新的ASP.NET Core2.2,选择下面的MVC应用程序,点击确定即可完成创建!建立完后的项目如下,一个典型的MVC项目,但是跟Framework下的有明显差异,增加了Program和Startup,这二位将是本文的主角了!
【Program】
看到Program,应该有种很亲切的感觉,包括里面的Main方法,这就是整个程序的入口。实际上,我们建立的这个项目,本质就是个控制台程序而已,查看项目属性可以得知。但为啥这个Program能当成MVC网站呢?
秘密就是那个CreateDefaultBuilder方法,这里面是启动一个Kestrel的服务器来完成请求的监听和响应的,在以前Core版本里,这里还有很多的配置项,现在已经内置为一个Default了。然后这里简单理解下,就是初始化一个服务器,然后Run一下,我们的Web服务器就算是启动了。其中在初始化服务器的时候,使用了一个Startup类,下面来详析一番!
【Startup】
在 ASP.NET Core 中,Startup 类提供了应用程序的入口,而且在所有应用程序中都有 Startup 类。ASP.NET 会在主程序集中搜索名为 Startup 的类(在任何命名空间下)。ASP.NET 并不关心 Startup 类是不是定义为 public,如果它符合命名规范,ASP.NET 将继续加载它。如果有多个 Startup 类,也不会触发异常,ASP.NET 将基于命名空间选择其中一个(匹配项目的根命名空间优先,否则使用第一个按字母排列的命名空间中的类)。
打开Startup类,大概分三块,这个是典型的构造函数注入,完成了一个叫IConfiguration类型变量的注入,至于是怎么注入的,后文中会讲到。这个变量是用来读取配置文件的,跟以前Framework下那个System.ConfigurationManager类差不多的。
然后是ConfigureServices方法,上面的注释描述的很清楚,是交给运行时环境调用的方法,然后用来给容器注册服务的(跟刚才说到的注入一致)。在Asp.Net Core里面,IOC容器是直接内置了的,也就是这个IServiceCollection。感兴趣的小伙伴儿可以去尝试下,直接nuget就可以下载Microsoft.Extensions.DependencyInjection,跟常见的容器用法几乎一样的,后面单独开文章再讲这个。这里完成全部需要依赖注入对象的初始化。
最下面是Configure方法,也是由运行时环境调用的,用来配置HTTP请求的处理管道的。Web的本质就是对Http请求的处理,最终得到一个响应结果,而这个方法,清晰的描述了,该如何去处理请求。
【内置服务和启动】
下面我就可以启动网站了,以前在做网站开发测试的时候,习惯性的去指定一下网站的端口和默认页,但是现在项目类型是控制台项目,相关的配置现在转移到项目的Properties--->launchSettings.json文件里面,可以在这里修改生效!顺便说一下,因为建立项目的时候,勾选了SSL支持,那么这里启动的会是https的Url,而且这个sslPort好像只能是以443开头,否则可能会无法访问。
然后一个完全没有做任何修改的Asp.Net Core2.2的项目就运行起来啦!
【结语】
本篇只介绍了最基本的环境搭建和项目建立过程,解释了一番项目结构,下一篇文章中将带大家尝试一些简单的功能开发尝试了!在这里应该感慨一下,Asp.Net Core的项目,外表看上去和之前,就是相当的不一样,而在本质上,变化可能会更多的。但是这些变化都是向着更优秀的方向的,希望大家能敞开心胸,拥抱变化!欢迎关注公众号,欢迎讨论,欢迎转发,愿天下有需求的人都能看到!
想了解更多干货,欢迎关注公众号【程序员在职场】
程序员在职场
【1】Asp.Net Core2.2从环境配置到应用建立的更多相关文章
- asp.net core + angular2 的环境配置
国内整个对 asp.net core 和 angular2这些新出来的关注度不是太好.跟国外比很大差距. 我在试着去做这个整合的时候也碰到不少问题. 最后通过查阅大量资料才弄明白. 我想肯定也会有类 ...
- windows server2008 64 asp.net 使用office组件环境配置.
服务器是windows server2008 64位系统, 我的系统需要用到Microsoft.Office.Interop.Excel组件 在上传Excel单据遇到错误:检索 COM 类工厂中 CL ...
- ASP.NET MVC 5 开发环境配置
Install-Package Ninject -Version 3.2.2 -ProjectName SportsStore.WebUIInstall-Package Ninject.Web.Com ...
- Python环境配置及项目建立
一.安装Python Python比较稳定的两个版本是Python 3.5和Python 2.7,我用的是Python 2.7,下载地址是:https://www.python.org/downloa ...
- ASP.NET和ASP.NETCore多环境配置对比
前言 多环境配置应该都很熟悉了,最为常见的便是Debug和Release,例如下图是新建的一个asp.net项目,配置文件展开共有三个文件组成 据我所知,大多公司从来没编辑过Web.Debug.con ...
- ES6学习之环境配置
环境配置 一.建立工程目录 新建dist文件夹(用于存放转化的es5文件).新建src文件夹(用于存放es6文件),在该文件夹下建立index.js文件 二.编写index.html 在根目录下新建i ...
- asp.net core2.0网站的环境搭建和网站部署
使用到的软件和硬件 1. centos7.3服务器一台 2. xshell.xftp 3. vs2017 4. .NET Core 1. 安装 li ...
- 解读ASP.NET 5 & MVC6系列(4):核心技术与环境配置
asp.net 5是下一代的asp.net,该版本进行了全部重写以适用于跨平台,新新版本中,微软引入了如下工具与命令:DNVM.DNX.DNU. DNVM(.NET Version Manager): ...
- (转) 一步一步学习ASP.NET 5 (一)- 基本概念和环境配置
转发:微软MVP 卢建晖 的文章,希望对大家有帮助. 编者语:时代在变,在csdn开博一年就发了那么的两篇文章,无论是什么原因都觉得有愧了.但是今年重心都会在这里发表一些文章,和大家谈谈.NET, 移 ...
随机推荐
- STM32 Cube mx 安装
原文链接:http://www.cnblogs.com/strongerHuang/p/5778216.html Ⅰ.写在前面 相信很多人都知道STM32CubeMX这个工具,也是近年来开发STM32 ...
- 使用NOOBS给树莓派安装系统Raspbian
使用NOOBS给树莓派安装系统Raspbian --英文原版教程:https://www.raspberrypi.org/learning/software-guide/quickstart/ 1.原 ...
- monkey-----停止正在测试的monkey
第一步:adb shell ps | grep monkey:查找到正在测试的monkey包名 第二步:kill pid:删除查找出的monkey进程 以上完美的停止monkey测试
- TensorFlow之DNN(一):构建“裸机版”全连接神经网络
博客断更了一周,干啥去了?想做个聊天机器人出来,去看教程了,然后大受打击,哭着回来补TensorFlow和自然语言处理的基础了.本来如意算盘打得挺响,作为一个初学者,直接看项目(不是指MINIST手写 ...
- java~springboot~目录索引
回到占占推荐博客索引 最近写了不过关于java,spring,微服务的相关文章,今天把它整理一下,方便大家学习与参考. java~springboot~目录索引 Java~关于开发工具和包包 Java ...
- 从零单排学Redis【白银】
前言 只有光头才能变强 今天继续来学习Redis,上一篇从零单排学Redis[青铜]已经将Redis常用的数据结构过了一遍了.如果还没看的同学可以先去看一遍再回来~ 这篇主要讲的内容有: Redis服 ...
- .NET(WinCE、WM)转Android开发——Xamarin和Smobiler对比
对比 WinCE Android 行业场景 扫描分拣.车载.工控 扫描分拣.车载定位 开发语言 C++.C# Java/.NET(Smobiler) 开发环境 Visual Studio Androi ...
- Java并发——volatile关键字
什么是内存可见性? 这里就要提一下JMM(Java内存模型).当线程在运行的时候,并不是直接直接修改电脑主内存中的变量的值.线程间通讯也不是直接把一个线程的变量的值传给另一个线程,让其刷新变量.下面是 ...
- 用CSS画一个带阴影的三角形的示例代码
1. 思路 怎么用CSS3画一个带阴影的三角形呢 ? 有童鞋说, 这还不简单吗 网上有很多解决方案, 但其实大多都是实现不太完美的, 存在一些问题 假设我们做一个向下的三角形箭头 常见的方法大致有两种 ...
- Android 初次进入默认不弹出软键盘
[遇到问题] 初次进入某个界面时,当页面中有EditText ,会自动聚焦并弹出软键盘. [解决方法] getWindow().setSoftInputMode(WindowManager.Layou ...