.Net Core 学习

2024-06-23 17:32
文章标签 学习 core net

本文主要是介绍.Net Core 学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

1、.Net Core 环境搭建

安装.NET Core:

    .NET Core 包括.NET Core Runtime 和 .NET Core SDK:

  1. NET Core = 应用运行依赖的 .NET Core Runtime
  2. NET Core SDK = 使用.NET Core开发应用.NET Core Runtime 和 SDK+CLI(Software Development Kit/Command Line Interface) 工具

下载地址请到dotnet官方网站dot.net (dot  net),非常的好记,这个网站也是你入门学.NET Core的入口网站,记住这是个必须要去网站。.NET Core 下载的具体地址:https://www.microsoft.com/net/download#core,这里还列出了注意事项:

    a.虽然.NET Core Runtime 和基础库已经1.0 RTM,但是开发工具链(.NET Core CLI,Visual studio 和Visual Studio Code) 还是预览版,具体可以参看https://blogs.msdn.microsoft.com/dotnet/2016/05/06/net-core-rc2-improvements-schedule-and-roadmap/

     b.在Windows Servers上部署应用 ,可以单独安装ASP.NET Core Module for IIS 而不需要安装.NET Core runtime,可以通过命令行DotNetCore.1.0.0-WindowsHosting.exe OPT_INSTALL_REDIST=0

     c.Mac 系统的最低要求是macOS 10.11 (El Capitan)

     d..NET Core 在Red Hat 系列服务器上支持的要 RHEL 7 Server,包括CentOS 7 以上,具体参看 https://access.redhat.com/documentation/en/dot-net-core/

     e..NET Core 在Ubuntu上面的支持 需要 Ubuntu 14.04 LTS 和  Ubuntu 16.04 LTS

     f.如果之前安装了.NET Core的beta,rc1,rc2的版本,在安装之前需要把他们卸载掉,具体参见 stack overflow 的文章。

.NET Core 的具体安装方法可以参看文章 .Net Core 系列:1、环境搭建。

还有Core的CLI命令请参照张大大的博客:.NET Core 环境搭建和命令行CLI入门

上面一段也是摘自张大大的博客,总结的比我好太多了。

 

2.NET Core基本介绍

2.1 什么是ASP.NET Core

ASP.NET Core 是一个全新的开源、跨平台框架,可以用它来构建基于网络连接的现代云应用程序,比如:Web 应用,IoT(Internet Of Things,物联网)应用和移动后端等。ASP.NET Core可以运行在 .NET Core 或完整的 .NET Framework 之上,其架构为发布到云端或本地运行的应用提供了一个最佳的开发框架,由开销很小的模块化组件构成,这就保持了你构造解决方案的灵活性。你可以跨平台地在Windows、Mac和Linux等设备上开发和运行你的 ASP.NET Core 应用。ASP.NET Core 的源代码已经在 GitHub 上托管。

2.2 ASP.NET Core的改进

1)    在统一的方案中构建Web UI 和 Web API

2)    集成现代客户端开发框架和工作流

3)    以云就绪环境为基础的配置系统

4)    内置依赖注入

5)    全新、轻量级、模块化的HTTP请求管道

6)    在IIS或在自己托管进程中托管应用程序的能力。

7)    以.NET Core为基础,支持并行应用版本控制。

8)    完全以 NuGet 程序包方式分发

9)    一组全新的工具,简化现代Web 开发

10)  在Windows、Mac和Linux等设备上开发和运行 ASP.NET应用

11)  开放源代码和社区聚焦

2.3 ASP.NET Core 项目解读

如上图:一个ASP.NET Core应用其实就是一个简单的控制台应用程序,只是它在Main方法中创建了一个 Web 服务器而已,

using System.IO;
using Microsoft.AspNetCore.Hosting;namespace ProgrammersLiveShow
{/// <summary>/// 系统初始化信息/// </summary>/// 修改记录:public class Program{public static void Main(string[] args){var host = new WebHostBuilder().UseKestrel().UseContentRoot(Directory.GetCurrentDirectory()).UseIISIntegration().UseStartup<Startup>().Build();host.Run();}}
}

Main 使用一个遵循生成器模式的 WebHostBuilder来创建Web应用程序宿主。生成器具有定义web服务器(UseKestrel)和指定启动类(UseStartup<Startup>())的方法。 上述示例使用的是 Kestrel Web 服务器,但你可以指定其他类型的Web 服务器。在下一节中将展示更多 UseStartup 相关的信息。WebHostBuilder 提供了大量的选项方法,包括指定宿主为 IIS 和 IIS Express 服务器的 UseIISIntegration,指定内容根目录的 UseContentRoot等。其中Build 和Run方法用于构建 IWebHost的实例,它将被用来挂载应用并开始监听到来的HTTP请求。

Startup类:

WebHostBuilder上的Startup方法用来指定你的应用程序的启动类。

该类是定义请求处理管道的地方,也是配置应用需要的服务的地方。Startup类必须是public的,而且必须包含ConfigureServices(IServiceCollection services)和Configure(IApplicationBuilder app)方法。

      a)     ConfigureServices  定义应用程序中用到的服务(比如:ASP.NET MVC Core 框架,Entity Framework Core,Identity等等)

      b)     Configure     定义请求处理管道中的中间件

 

Startup 类的 执行顺序:构造 -> configureServices->configure

详情请参考:Startup 和 Middleware(中间件),总结的很不错。

 

{"dependencies": {"Microsoft.NETCore.App": {"version": "1.0.0","type": "platform"},"Microsoft.AspNetCore.Diagnostics": "1.0.0","Microsoft.AspNetCore.Server.IISIntegration": "1.0.0","Microsoft.AspNetCore.Server.Kestrel": "1.0.0","Microsoft.Extensions.Logging.Console": "1.0.0"},"tools": {"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"},"frameworks": {"netcoreapp1.0": {"dependencies": {"Pls.Service": {"target": "project"}},"imports": ["dotnet5.6","portable-net45+win8"]}},"buildOptions": {"emitEntryPoint": true,"preserveCompilationContext": true},"runtimeOptions": {"configProperties": {"System.GC.Server": true}},"publishOptions": {"include": ["wwwroot","Views","appsettings.json","web.config","Areas","nlog.config"],"exclude": [ "bin" ]}
}

 

具体的解释请看 project.json 引用(中文版的适合英语不好的人翻翻看)。我挑几个上面用到的解释解释:

  1. dependencies:依赖项,定义项目的包依赖项的一个对象,此对象的每个键是包名称,每个值包含版本信息。有关详细信息,请参阅 NuGet 文档站点上的 依赖项解析文章,类型是Object。
  2. tools:定义用作当前项目工具(而不是用作引用)的包依赖项的一个对象。 此处定义的包可用于生成过程中运行的脚本,但不可访问项目自身的代码,类型是Object。
     
  3. frameworks:框架,指定此项目支持的框架,如 .NET Framework 或通用 Windows 平台 (UWP)。 必须是有效的目标框架名字对象 (TFM)。 每个值都是一个对象,可以包含特定于此框架的信息以及以下各部分中的属性,类型是Object
  4. target:限制依赖项以仅匹配 project 或 package,类型是String
    
  5. buildOptions:其属性控制编译各个方面的一个对象。 下面列出了有效属性。 也可以按框架部分中所述目标框架进行指定,类型是Object。
  6. runtimeOptions:指定在初始化期间向运行时提供的参数,类型是Object。
  7. configProperties:包含用于配置运行时和框架的配置属性,类型是Object。
  8. System.GC.Server:若要启用服务器垃圾回收,则为 true;否则为 false。 默认值为 false
  9. emitEntryPoint:若要创建可执行文件,则为 true;否则为 false。 默认值为 false
  10. preserveCompilationContext:若要保留引用程序集和其他上下文数据以实现运行时编译,则为 true;否则为 false。 默认值为 false
  11. publishOptions:包含编译配置的属性的一个对象,类型是 Object。
  12. include:包含文件以及文件夹,类型是String 或带有通配模式的 String[]。
  13. exclude:指定要从生成中排除的文件,类型是String 或带有通配模式的 String[]。

本文参考 博客:https://www.cnblogs.com/bobo-pcb/p/6512406.html

 

 

NET Core 发展及各版本区别:

https://blog.csdn.net/qq_20936333/article/details/81218995

这篇关于.Net Core 学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1087808

相关文章

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx