.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(中间件),总结的很不错。

project.json

{
  "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[]。

初心商城:初心商城  MVC/.NET群:159227188

时间: 2024-10-05 05:00:14

.NET Core学习之路的相关文章

.Net Core学习之路(一)

前言:因为公司转型需要,特地学习.NET Core.本来在我的计划中.Net Core的学习应该没有快就被执行的.一来是我想多补一点基础和理论知识,再者就是我想攒点钱买台好点的电脑再装VS2017.计划提前,在这台用了4年多的电脑上装了VS2017效果倒也算差强人意,看来VS2017很吃配置的结论是子虚乌有的谣言罢了.我在博客园的帐号是一年多申请的,当时只是听老师讲要有自己的技术积累,最好写点博客什么的.可是一直没有要写什么的意思,直到今天我看用.NET Core生成的MVC项目之后去倒垃圾的时

osgi实战学习之路:2. maven+maven-bundle-plugin+karaf搭建osgi之HelloWorld

环境准备: jdk版本 jdk:1.7 karaf: 版本:apache-karaf-3.0.1 下载地址: http://pan.baidu.com/s/1qWM4Y1u http://karaf.apache.org/ 配置本地仓库: 参考:http://blog.csdn.net/wobendiankun/article/details/25333113 启动karaf: karaf_home/bin/karaf.bat 启动成功如下: 安装 mvn-hello-provider 到本地仓

OpenGL学习之路(四)

1 引子 上次读书笔记主要是学习了应用三维坐标变换矩阵对二维的图形进行变换,并附带介绍了GLSL语言的编译.链接相关的知识,之后介绍了GLSL中变量的修饰符,着重介绍了uniform修饰符,来向着色器程序传入输入参数. 这次读书笔记的内容相对有趣一些,主要是和园友们分享讨论三维坐标变换矩阵在三维几何体上的应用,以及介绍一下如何实现三维图形与用户操作的交互.这一次笔记在三维编程中也是非常重要的——我们最后开发的三维程序最终就是要和目标用户进行交互的. 之前一直没有在博客上放过gif格式的动画图片,

OpenGL学习之路(五)

1 引子 不知不觉我们已经进入到读书笔记(五)了,我们先对前四次读书笔记做一个总结.前四次读书笔记主要是学习了如何使用OpenGL来绘制几何图形(包括二维几何体和三维几何体),并学习了平移.旋转.缩放坐标变换矩阵的理论推导和实践应用. 这一次读书笔记,我们一起来学习OpenGL中常用的坐标系以及坐标变换.在OpenGL中有几个坐标系,初学者常常被它们搞得晕头转向:为什么需要这些坐标系?各个坐标系有什么作用?……本文就来学习一下这些OpenGL中常用坐标系. 之后来看看投影矩阵的推导,投影变换矩阵

Docker &nbsp; 学习之路(一)

Docker  学习之路(一) 一.基础环境 系统版本:CentOS Linux release 7.3.1611 (Core) 内核版本:3.10.0-514.26.2.el7.x86_64(Docker官方要求3.8以上内核版本,所以建议升级至最高内核版本) 二.YUM安装Docker # vim /etc/yum.repos.d/docker.repo 添加如下内容: [dockerrepo] name=Docker Repository baseurl=https://yum.docke

osgi实战学习之路:3. osgi分层概念及相互合作demo

源代码下载 分层: modual: 主要作用于包级管理与共享代码 lifecycle: 主要作用于运行期间的模块管理与访问osgi底层框架 service: 主要作用于多模块之间的相互通信 demo: hello-provider/pom.xml <?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.or

LTE学习之路(2)

[LTE的设计目标] 带宽灵活配置:支持1.4MHz, 3MHz, 5MHz, 10Mhz, 15Mhz, 20MHz 峰值速率(20MHz带宽):下行100Mbps,上行50Mbps 控制面延时小于100ms,用户面延时小于5ms 能为速度>350km/h的用户提供100kbps的接入服务 支持增强型MBMS(E-MBMS) 取消CS域,CS域业务在PS域实现,如VoIP 系统结构简单化,低成本建网 [名词介绍] 3GPP(3th Generation Partnership Project)

OpenGL学习之路(一)

1 引子 虽然是计算机科班出身,但从小对几何方面的东西就不太感冒,空间想象能力也较差,所以从本科到研究生,基本没接触过<计算机图形学>.为什么说基本没学过呢?因为好奇(尤其是惊叹于三维游戏的逼真,如魔兽世界.极品飞车),在研究生阶段还专门选修计算机图形学,但也只是听了几堂课,知道了有帧缓存.齐次坐标等零零散散的概念,之后读了一篇论文并上台作报告(压根没读懂).总之,当时只是觉得计算机图形学或三维渲染很牛,甚至问我什么是渲染都不知道,更不知道如何将3维几何体显示到2维屏幕上.令我现在想来非常可笑

Python学习之路—2018/7/11

Python学习之路-2018/7/10 3.功能开发 3.1 登录验证 login.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <t