.NET Core-学习笔记(1)
- 格式:doc
- 大小:35.50 KB
- 文档页数:11
netcore运行原理NetCore是一个跨平台的高性能框架,用于构建云应用、移动后端、物联网应用和企业级应用程序。
它基于.NET平台,提供了一种快速、可扩展和灵活的开发模式,使开发人员能够轻松地构建各种类型的应用程序。
NetCore的运行原理主要包括以下几个方面:运行环境、开发工具、编译和执行过程。
NetCore的运行环境是一个包含了运行时和类库的虚拟环境。
运行时是.NetCore的核心组件,它负责加载和执行应用程序。
在运行时中,有一个称为CLR(Common Language Runtime)的组件,它负责将编译后的IL代码转换为机器代码,并提供垃圾回收、异常处理等功能。
同时,运行时还提供了一些基础类库,用于支持应用程序的运行和开发。
NetCore提供了丰富的开发工具,以帮助开发人员进行应用程序的构建和调试。
其中,最常用的是Visual Studio,它是一个功能强大的集成开发环境,提供了代码编辑、调试、测试等一系列开发工具。
此外,还有命令行工具和跨平台编辑器等工具,用于满足不同开发人员的需求。
在编译和执行过程中,NetCore采用了一种即时编译(JIT)的方式。
即时编译是指在程序运行时将IL代码转换为机器代码。
在NetCore中,CLR会在应用程序运行之前对IL代码进行编译,将其转换为与当前硬件平台兼容的机器代码。
这种编译方式可以提高应用程序的执行速度,并且使得应用程序能够在不同的平台上运行。
NetCore还支持多种部署模式,包括自托管模式和托管模式。
自托管模式是指将整个应用程序作为一个独立的进程运行,而托管模式是指将应用程序托管在一个宿主进程中运行。
通过选择不同的部署模式,开发人员可以根据应用程序的需求来选择最合适的方式。
总结起来,NetCore的运行原理是基于.Net平台,通过运行环境、开发工具、编译和执行过程来实现应用程序的构建和运行。
它提供了一种快速、可扩展和灵活的开发模式,使开发人员能够轻松地构建各种类型的应用程序。
.net core原理
.NET Core是一个跨平台的开源框架,用于构建现代化的应用程序。
它是由Microsoft开发的,可在Windows、Linux和macOS等多个操作系统上运行。
.NET Core的原理基于以下几个方面:
1. 跨平台性:.NET Core的跨平台性是通过基于公共语言运行时(CLR)的多平台实现来实现的。
CLR是一个虚拟机,它可以在不同的操作系统上运行,它可以解释CIL(通用中间语言)代码并将其转换为本机代码。
2. 高性能:.NET Core采用了多种技术来提高性能,例如:JIT编译器、AOT编译器、垃圾回收器等。
JIT编译器将CIL代码编译为本机代码,而AOT编译器则在应用程序启动时将CIL 代码编译为本机代码。
垃圾回收器可以自动管理内存,减少内存泄漏和崩溃的风险。
3. 模块化:.NET Core采用了模块化设计,使得应用程序可以根据需要加载和卸载模块,从而提高了灵活性和可扩展性。
模块化还使得应用程序具有更好的可维护性和测试性。
4. 开源:.NET Core是一个开源的框架,可以轻松地在GitHub上访问和贡献代码。
这意味着开发人员可以利用社区的力量来改进和扩展.NET Core,使其更适合他们的需求。
总之,.NET Core是一个跨平台、高性能、模块化和开源的框架,它可以帮助开发人员构建现代化的应用程序。
本文档是学习《C#高级编程》第七版的读书笔记,对于一些资源参考了网络相关文章。
本文档仅供个人学习,不可用于商业行为。
第Ⅰ部分部分 C#C#语言语言语言第一章第一章 .NET 体系结构1. 什么是 .NET Framework?2. C#语言和 .NET Framework 关系是什么?3. 什么是公共语言运行库?4. 什么是托管代码? 其与非托管代码有什么不同? 他们执行效率如何?5. IL 是什么?6. 什么是程序集?7. 值类型和引用类型的区别?答1:.NET Framework 是用于Windows 的新托管代码编程模型。
.NET Framework 又称 .Net 框架。
一个致力于敏捷软件开发(Agile software development Agile software developmentAgile software development)、快速应用开发(Rapid Rapid application developmentapplication development)、平台无关性和网络透明化的软件开发平台。
.NET 框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime Common Language Runtime Common Language Runtime)为基础,支持多种语言(C#、VB、C++、Python 等)的开发。
答2:C#本身只是一种语言,尽管它是用于生成面向.NET 环境的代码,但它本身不是.net 的一部分。
.net 支持的一些特性,C#并不支持。
而C#语言支持的另一些特性,.net 却不支持。
但C#语言是和.NET 一起使用的,所以如果要使用C#高效地开发应用程序,理解Framework 就非常重要。
答3:.NET Framework 的核心是其运行库的执行环境, 称为公共语言运行库公共语言运行库 (CLR) 或 .NET 运行库。
.net core 技术基础知识点嘿,朋友!咱们今天来聊聊.net core 技术那些基础知识点。
说起.net core 啊,它就像是一个强大的工具箱,里面装满了各种实用的工具和技巧。
先来说说 C# 语言吧,这可是.net core 的“主打歌”。
它就像是一把灵活的手术刀,能精准地处理各种编程任务。
你想想,要是没有它,那岂不是像做饭没了锅铲,只能干瞪眼?还有啊,类和对象的概念,这可是核心中的核心。
类就好比是一个模具,对象就是用这个模具生产出来的产品。
比如说,汽车的设计图就是类,按照这个设计图制造出来的每一辆汽车就是对象。
要是搞不懂这个,那编程之路可就磕磕绊绊啦!再讲讲委托和事件,这俩家伙可神奇了。
委托就像是个传话筒,能把消息从一个地方传到另一个地方。
事件呢,就像是个信号灯,一旦触发,相关的程序就会响应。
这难道不像马路上的红绿灯,控制着交通的有序进行?说到数据类型,那也是五花八门。
整数、浮点数、字符串等等,每个都有自己的特点和用途。
这就好比不同尺码的鞋子,得选对了才能合脚,才能跑得顺溜。
接口和抽象类也是不能忽略的。
接口就像是一份合同,规定了必须要实现的功能。
抽象类呢,则像是一个半成品,给了一些基础的框架。
你说要是不遵守这些规定,那不就乱套了?至于异常处理,这可是救命的法宝。
程序运行中难免会出岔子,这时候异常处理就像一个超级英雄,能及时出手把问题解决,保证程序不崩溃。
还有泛型,它可真是个聪明的家伙。
能让代码更通用、更灵活,就像一件万能的衣服,谁穿都合适。
内存管理也很重要哦!不好好管理内存,就像家里东西乱堆乱放,迟早会找不到想要的东西,甚至把房子都塞满。
朋友,掌握好这些.net core 技术的基础知识点,就像有了一把万能钥匙,能打开编程世界的无数扇门。
还等什么,赶紧加油学起来吧!总之,.net core 技术的基础知识点就像一块块基石,只有把它们都稳稳地铺好,才能在编程的大道上一路畅行无阻!。
net core源码解读Net Core作为微软推出的跨平台开发框架,其源码的解读对于深入理解其内部机制和原理具有重要意义。
本文将对Net Core源码进行解读,帮助读者更好地理解这一框架。
一、源码概述Net Core源码主要包括.NET运行时、.NET标准库和 Core 等部分。
其中,.NET运行时是整个框架的核心,负责应用程序的加载、运行和管理。
.NET标准库是一组跨平台的类库,提供了丰富的API 用于开发各种应用程序。
Core则是基于.NET Core的Web开发框架,用于构建高效、可扩展的Web应用程序。
二、.NET运行时.NET运行时是Net Core框架的核心,它负责应用程序的加载、运行和管理。
在.NET运行时中,主要包括了垃圾回收器、JIT编译器、内存管理器、线程池等组件。
这些组件协同工作,为应用程序提供了稳定、高效的运行环境。
其中,垃圾回收器负责自动管理内存,防止内存泄漏和过度占用内存。
JIT编译器则负责将MSIL代码编译成本地代码,提高应用程序的运行效率。
内存管理器负责分配和释放内存,保证应用程序的内存安全。
线程池则提供了高效的线程复用机制,降低线程创建和销毁的开销。
三、.NET标准库.NET标准库是一组跨平台的类库,提供了丰富的API用于开发各种应用程序。
在.NET标准库中,主要包括了System命名空间下的众多类库,如System.Collections、System.IO、System.Threading等。
这些类库涵盖了常见的数据结构、文件操作、多线程编程等领域,为开发者提供了强大的支持。
四、 Core Core是基于.NET Core的Web开发框架,用于构建高效、可扩展的Web应用程序。
在 Core中,主要包括了Kestrel服务器、中间件、依赖注入等组件。
这些组件共同协作,实现了高效、安全的Web应用程序开发。
其中,Kestrel服务器是 Core内置的轻量级Web服务器,具有高效、可扩展的特点。
.net 各版本知识点.NET 是一个开发平台,它提供了一系列的工具和服务,帮助开发者快速构建应用程序。
以下是 .NET 的几个主要版本及其知识点: Framework:• 1.0版本:这是.NET Framework的初始版本,于2002年发布。
它引入了托管代码、垃圾回收、异常处理、Common Language Runtime (CLR) 等重要概念。
• 1.1版本:在2003年发布,它对1.0版本进行了许多改进,包括对移动设备的支持、对XML Web Services的改进等。
• 2.0版本:于2005年发布,这个版本引入了大量新功能和改进,例如泛型、匿名类型、局部变量类型推断等。
• 3.0版本:这是.NET Framework的第一个Longhorn版本,虽然它在Windows Vista 发布之前被推迟了,但它最终在2006年发布。
这个版本引入了WPF(Windows Presentation Foundation)、WCF(Windows Communication Foundation)和WF(Windows Workflow Foundation)等新框架。
• 3.5版本:于2008年发布,这个版本通过.NET Framework 3.5 Service Pack 1升级至。
它引入了LINQ(Language Integrated Query)和其他许多新功能。
• 4.0版本:在2010年发布,这个版本引入了并行编程、动态语言运行时和改进的垃圾回收器等新功能。
• 4.5/4.6版本:这些版本在2012年和2014年发布,引入了更多新功能和改进,例如支持异步/等待、改进的并发性和性能等。
Core:•.NET Core是跨平台的.NET开发框架,它基于.NET Framework的设计,但可以运行在Windows、Linux和macOS等操作系统上。
它包括.NET Core运行时和.NET Core SDK。
优秀范文:学习.net心得 (2)优秀范文:学习.net心得 (2)精选3篇(一)学习.net心得在学习.net的过程中,我深刻地体会到了它的强大和实用性。
.net是微软公司开发的一种编程框架,它具有很多优点和特点,使得开发人员可以轻松地构建多种类型的应用程序。
首先,.net具有良好的兼容性和可扩展性。
无论是在Windows系统还是在其他操作系统上,都可以轻松地运行.net应用程序。
而且,.net还支持多种编程语言,如C#、等,这使得开发人员可以根据自己的喜好和需求选择最合适的语言进行开发。
此外,.net还提供了丰富的类库和工具,开发人员可以直接调用这些类库和工具,大大提高了开发效率。
其次,.net具有很强的安全性。
在.net中,所有的代码都是在托管环境下运行的,这意味着代码的执行受到了严格的控制,可以预防一些常见的安全漏洞。
此外,.net还提供了很多安全机制,如代码权限控制、代码签名等,可以保证应用程序的安全性。
另外,.net还具有很好的性能和可靠性。
通过.net编写的应用程序通常具有较高的性能,可以快速响应用户的请求。
而且,.net还具有内存管理和异常处理机制,可以有效地避免内存泄漏和程序崩溃的问题,保证应用程序的稳定运行。
最后,我发现学习.net对我的职业发展有很大的帮助。
.net是一种非常流行的编程框架,很多企业在招聘开发人员时都会要求掌握.net技术。
通过学习和掌握.net,我可以更好地应对就业市场的竞争,增加自己的就业机会。
总的来说,学习.net是一项值得投入时间和精力的事情。
它不仅能够提高我们的开发效率和编程能力,还能够为我们的职业发展带来更多的机会。
因此,我将继续努力学习和应用.net技术,不断提升自己的能力。
优秀范文:学习.net心得 (2)精选3篇(二)学习.NET的过程中,我不仅学会了很多关于软件开发的知识和技能,还收获了很多宝贵的心得体会。
下面是我在学习过程中总结的一些心得:第一,坚持不懈是学习.NET的关键。
.net学习心得正文第一篇:.net学习心得1.反射:反射是.net中的重要机制,通过反射可以在运行时获得.net中每一个类型,包括类、结构、委托和枚举的成员,包括方法、属性、事件,以及构造函数等。
有了反射,既可以对每一个类型了如指掌。
下面来演示一下反射的实例(1)新建一个类库项目。
在解决方案上单击右键选择添加“新建项目”,在弹出来的框中选择“类库”,在下面名字栏中输入classlib。
然后删除class1类,新添加一个类“classperson”,添加如下代码:namespace classlib{public class classperson{public classperson():this(null){}public classperson(string strname){name = strname;}private string name;private string sex;private int age;public string name{get { return name; }set { name = value; }}public string sex{get { return sex; }set { sex = value; }}public int age{get { return age; }set { age = value; }}public void sayhello(){if (null==name)console.writeline(“hello world“); elseconsole.writeline(“hello,“ + name);}}}添加完之后编译生成一下,就会在这个类库项目中的bindebug中有一个classlib.dll文件。
然后添加一个控制台应用程序。
引入system.reflaction的命名空间。
添加的代码如下:using system;using system.collections.generic;using system.linq;using system.text;using system.reflection;//添加反射的命名空间namespace consoleapplication4{public class program{static void main(string[] args){console.writeline(“列出程序集中的所有类型“);assembly ass = a ssembly.loadfrom(“classlib.dll“);type[] mytype = ass.gettypes();type classperson = null;foreach (type p in mytype)console.writeline();if (==“classperson“){classperson = p;}}console.writeline(“列出classpersonl类中的所有的方法“); methodinfo[] md = classperson.getmethods();foreach(methodinfo m in md){console.writeline();}console.writeline(“实例化classperson类,并调用sayhello方法“); object obj = activator.createinstance(classperson);object objname=activator.createinstance(classperson,“飞鹰“); methodinfo mysayhello = classperson.getmethod(“sayhello“); mysayhello.invoke(obj, null);//无参数构造函数mysayhello.invoke(objname, null);//有参构造函数console.readkey();}}运行之后的结果是:列出程序集中的所有类型classperson列出classpersonl类中的所有的方法get_nameset_nameget_sexset_sexget_ageset_agesayhellotostringequalsgethashcodegettype实例化classperson类,并调用sayhello方法hello worldhello,飞鹰ing的作用(1)引入命名空间,如:using system。
Core是建立在.NET Core之上的Web框架,因此理解.NET Core的底层原理对于理解 Core的工作原理非常重要。
以下是.NET Core的一些底层原理:
1. 运行时:.NET Core运行时(Microsoft.AspNetCore.dll)是 Core的核心组件之一,负责处理应用程序的生命周期、路由、中间件等功能。
2. 容器:.NET Core使用容器来管理应用程序的依赖项和配置。
每个应用程序都会创建一个容器,容器中包含应用程序的所有组件和依赖项。
3. DI容器:.NET Core使用依赖注入(DI)容器来管理应用程序的依赖项。
DI容器可以自动解决和解耦应用程序中的组件,并在需要时提供它们。
4. 中间件:.NET Core使用中间件来处理HTTP请求和响应。
中间件是应用程序中的一个组件,它在处理请求和响应之前或之后执行一些操作。
中间件可以用于处理身份验证、授权、日志记录等。
5. 路由:.NET Core使用路由来处理HTTP请求。
路由定义了应用程序如何响应不同的URL 请求。
6. 配置:.NET Core使用配置来管理应用程序的设置和配置。
应用程序可以从多个配置源中获取配置,例如环境变量、命令行参数、文件等。
7. 跨平台:.NET Core支持跨平台运行,可以在Windows、macOS、Linux等操作系统上运行。
以上是.NET Core的一些底层原理,理解这些原理可以帮助我们更好地理解 Core的工作原理。
作为一名网络工程师,我不断地探索着网络领域的新技术,其中包括了网络编程技术。
在这个领域里,有一个比较重要的网编开发框架——.Net Framework,今天我想和大家分享一下我学习.Net的心得。
在我的学习过程中,我发现.Net具体有这样几个方面的知识点:1.C#语言基础C#语言是.Net Framework的主要开发语言,所以在学习.Net的时候,我们必须首先掌握C#语言的基础知识。
所以,与其说是.Net Framework,我更愿意把它看成是一个包含了C#语言的开发框架。
在学习C#语言的时候,我们需要掌握变量类型、运算符、循环语句、条件语句、数组、字符串、函数、类、继承、多态等基础知识。
C#语言和Java有些相似之处,不过个人认为,C#语言的语法更加简明易懂,符合“最好的代码是没有代码”的理念。
我个人觉得,学习C#语言不仅仅是为了.Net Framework,更重要的是掌握一种新的编程语言,不断地拓展自己的编程技能。
2.WinForm框架WinForm框架是支持图形化用户界面的.Net应用程序框架。
他是C#语言中的一部分,可以让我们通过组件化的方式来开发出具有丰富用户界面的应用程序。
WinForm包含了很多控件,如文本框、按钮、列表框、下拉框等等。
WinForm框架的学习过程中主要是学习如何应用控件以及控件的事件,比如点击事件,双击事件等等。
WinForm的开发过程中会需要HTML CSS 等前端基础知识,如果没有这些基础知识的话,在排版这一块儿会比较困难。
框架是连接数据库的.Net Framework标准,包括了一些核心基类和接口,如Connection、Command、DataReader、DataAdapter等等。
学习的时候,我们需要掌握如何连接数据库,通过命令对象来执行SQL语句,以及如何读取和操作数据。
在实际应用中,我们通常会使用LINQ来进行数据库的操作,这会让我们的代码更加简洁。
.NET Core-学习笔记(1).net core最近园子讨论频率很高的话题,从不久前发布正式版本后,也是开始从netcore官网一步一步走向学习之路;.net跨平台的设计让人很是兴奋起来,因为做了多年的互联网研发者,见识了很多一流大公司对之的态度,在很多应用方面几乎看不到影子,深深感觉发展前景不是很乐观,但现在不同以往跨平台,加上其本身开发特点速度快,和vs神器的存在,我想过几年情况应该会发生很大变化吧;感叹完了,开始正篇吧。
下面是本篇将要分享的学习步奏,对于刚学或者即将要学习的朋友做个相互交流:1.window7系统搭建开发环境2.快速创建个net core Web Application项目,简单认识core 项目自动生成的mvc文件3.使用命令dontnet run让浏览器可以访问项目4.连接本地数据库操作5.分析Startup.cs文件的代码6.使用Program.cs文件开放多个端口使站点运行起来感觉一篇说不完,想说的太多了,慢慢来吧。
1.window7系统搭建开发环境首先,去https:///net/download地址下载几个安装文件,根据自己的系统下载不同的版本吧,这里截图说明下当前我安装的包,如下:这要要说的是最后一个包的功能,主要让程序运行起来,监听端口,近似于iis发布站点功能(有更多希望大家补充或纠正);都安装完后会重启一次,那下面打开您的vs2015 visualC#->.Net Core:如果可以大家看到的应该是3个可选项:类库,控制台程序,net core web application;记得当时第一想的怎么没有winform的呢,后来觉得winform里面需要一些资源皮肤等现有资源这些在其他系统没有,估计也是这里看不到的原因吧,这里只是猜测系统某个后来者能证实下,谢谢。
2.快速创建个net core Web Application项目,简单认识core 项目自动生成的mvc文件选择net core Web Application点击'确定'按钮,看到如下图:这里感觉很以前创建mvc的界面都差不多,没什么具体说明的,这里有一个在云中托管,操作步骤具体请看官网地址:https:///en/latest/tutorials/publish-to-azure-webapp-u sing-vs.html;输入项目的名称,即可得到如下目录:注:1.appsettings.json文件初始化的信息是本地数据库链接和日志logging配置信息2.gulpfile.js加载一些js文件,css等3.project.json项目工程包4.web.config里面内嵌了一个aspNetCore节点5.Program.cs文件里面有个main函数,这里是项目开启入口6.Startup.cs文件主要是初始化设置的地方7.program和startup关联的,首先程序进入program里面的main函数,在WebHostBuilder运行run之前会通过UseStartup 进入到startup文件的各个方法中,顺序是:Startup(构造器初始化加载一些配置文件)-》ConfigureServices(添加各个服务的依赖关系)-》Configure 3.使用命令dontnet run让浏览器可以访问项目首先,在vs中右键项目-》在资源管理器中打开文件-》点击src路径文件夹-》找到对应的项目文件夹-》按住键盘Shift+鼠标右键项目文件夹-》选择在此处打开命令窗口,这样就进入了cmd界面路径是项目文件夹路径(其实也可以直接cmd-》盘符:-》cd 项目文件夹路径和刚才说的效果一样);然后,在cmd中录入:dotnet run,这里cmd窗体会显示一些信息如图:截图上面显示了一个5000端口,没错您即可在浏览器中输入localhost:5000访问您的项目,先来看下我们运行起来的截图:这5000是默认的开启监听端口,下面会在第6步奏讲到怎么监听其他端口 4.连接本地数据库操作首先,在Models文件夹中创建一个子文件夹AiticleModels,其中再增加一个类文件Article类;然后,在Controllers文件夹中创建一个ArticleController,创建Controller时选择MVC Controller with views, using Entity Framework,并且在下一步的时候选择之前创建的Article类作为模型类,数据库上下文选择自动下拉的ApplicationDbContext,如图:点击“确定”按钮后,会在试图View文件夹和Controller文件夹中分别生成一些文件,这里有点问题的地方是鼠标在Controller中Action方法上右键不会出现跳转至试图的选项了,不知道是本来就没有还是那个没找到,知道的朋友请分享告知下;上面除了会在Views,Controllers文件夹中增加一些文件外,会自动再Data文件夹下面的ApplicationDbContext.cs文件中新增如下代码:public DbSet Article { get; set; }好了咋们生成下项目看编译是否通过,应该是没问题的生成成功;进行到下一步,和上面第3点将的差不多,在vs中右键项目-》在资源管理器中打开文件-》点击src路径文件夹-》找到对应的项目文件夹-》按住键盘Shift+鼠标右键项目文件夹-》选择在此处打开命令窗口,然后分别输入如下命令:dotnet ef migrations add Initialdotnet ef database update当执行第一条命令时候,Data文件夹下面Migrations文件夹中会自动增加一个.cs文件,名称格式如:时间+_Initial.cs,打开看一下吧,感觉有点复杂的样子哈哈,但是从中可以了解到是创建表结构,和删除表的方法;好了在执行第二条命令;命令截图如下:效果是除了Migrations文件夹中增加了cs文件,还有咋们可以在vs中点击试图-》Sql Server对象管理器-》点击LocalDB-》数据库-》aspnet-Text.Core-2c3af9e6-9257-4859-9cea-dcc21968bf8b 能看到增加了个本地数据库,再打开表Article,能看到字段是咋们刚才在Article类中对应的属性,值得注意的时候这里直接默认了ID为咋们的主键,这里应该是默认第一个属性字段为主键再来,生成下确定没问题,咱们执行下dotnet run命令开启监听,在浏览器中输入http://localhost:5000/Articles,看到的结果是table框里面空白的页面,想一想数据库没有数据啊,那么添加几条吧,点击页面上的“Create New”,随便输入个时间和标题,保存后返回到列表页面,能看到此时已经增加了一条数据,好了看下数据库也有数据了;截图如下:5.分析Startup.cs文件的代码上面说了那么多,终于来到了第5节点了;代码简单分析还是通过代码中写备注的方式来说明吧,截图不怎么友好,希望各位朋友看下代码:using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;usingMicrosoft.AspNetCore.Builder;usingMicrosoft.AspNetCore.Hosting;usingMicrosoft.AspNetCore.Identity.EntityFrameworkCore;using Microsoft.EntityFrameworkCore;usingMicrosoft.Extensions.Configuration;usingMicrosoft.Extensions.DependencyInjection;using Microsoft.Extensions.Logging;using Text.Core.Data;using Text.Core.Models;using Text.Core.Services;namespace Text.Core{ public class Startup {/// /// Startup文件中执行方法的步骤使用A,B,C,D表示/// /// /// 步骤A IHostingEnvironment获取环境变量信息,没错就是获取环境变量public Startup(IHostingEnvironment env) { //这里创建ConfigurationBuilder,其作用就是加载Congfig等配置文件var builder = new ConfigurationBuilder()//env.ContentRootPath:获取当前项目的跟路径.SetBasePath(env.ContentRootPath)//使用AddJsonFile方法把项目中的appsettings.json配置文件加载进来,后面的reloadOnChange顾名思义就是文件如果改动就重新加载.AddJsonFile('appsettings.json', optional:true, reloadOnChange: true) //这里关注的是$'{param}'的这种写法,有点类似于string.Format() .AddJsonFile($'appsettings.{ env.EnvironmentName}.json', optional: true);if (env.IsDevelopment()){ //待研究builder.AddUserSecrets();//待研究builder.AddApplicationInsightsSettings(developerMode: true); }builder.AddEnvironmentVariables();//这返回一个配置文件跟节点:IConfigurationRoot Configuration = builder.Build(); }/// /// 通过构造器获取配置文件等信息(个人眉脚:这里是不是可以把这个节点开放到整个项目都是用,因为有些配置信息需要在实际的代码类中使用到,这样就不用再单独再获取一次了吧)///public IConfigurationRoot Configuration { get; }/// /// 步骤B 各种服务依赖注册的地方,netcore还是配置依赖注入方式为主////// public void ConfigureServices(IServiceCollection services) { //待验证功能services.AddApplicationInsightsTelemetry(Configuration);//这里是注入了数据库上下文,如果没有这里,刚才的Controller获取出来根本就获取不到数据信息//Configuration.GetConnectionString('DefaultConnection')获取了配置文件appsettings.json中的DefaultConnection节点数据//注:因为ConfigurationBuilder的作用,咋们以后获取json 配置文件时候可以使用如appsettings.json文件中的:Configuration.GetSection('Logging:LogLevel:Microsoft'); 方法,获取json层级关系的属性值services.AddDbContext(options =>eSqlServer(Configuration.GetConnectionString('Defa ultConnection')));//注入Indentity,目前这个IdentityRole在这里暂时没用到services.AddIdentity() .AddEntityFramewor kStores() .AddDefaultTokenProviders();//添加mvc服务,没有这个mvc运行不起services.AddMvc();//注入netcore自带的两个服务services.AddTransient(); services.AddTransient();//这里还有其他注入方式//services.AddSingleton();//单例注入//services.AddScoped();//作用域注入//services.AddMemoryCache(); //MemoryCache缓存注入}/// /// 步骤C /// ////// /// public voidConfigure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {//添加Console输出loggerFactory.AddConsole(Configuration.GetSection('Logging') ); loggerFactory.AddDebug();//待研究eApplicationInsightsRequestTelemetry();if (env.IsDevelopment()) {//跳转到异常页面,异常错误展示eDeveloperExceptionPage();eDatabaseErrorPage();eBrowserLink(); } else { //如果错误,从定向到错误改路由eExceptionHandler('/Home/Error'); }//待研究eApplicationInsightsExceptionTelemetry();//启动静态文件eStaticFiles();//启动静态文件eIdentity();//设置mvc路由eMvc(routes => { //这里的{id?} ?号表示可以有可无routes.MapRoute( name: 'default', template:'{controller=Home}/{action=Index}/{id?}'); });} }}6.使用Program.cs文件开放多个端口使站点运行起来,首先在,Program.cs文件Main方法中增加如下代码部分public static void Main(string[] args){ var host = newWebHostBuilder() .UseKestrel()//增加处,*号表示ip .UseUrls('http://*:5001,http://*:5002').UseContentRoot(Directory.GetCurrentDirectory( )) .UseIISIntegration() .U seStartup() .Build();host.Run(); }然后,重新执行dotnet run,能看到如下情况:开启了两个端口的监听,那么在浏览器上分别访问下:才不多这次就这些了,很多要学习和交流的,不知道这是否能给大家带来帮助,如果疑问或者问题,欢迎相互交流,还请大家勿喷,谢谢。