.NET Core 1.0.0 RC2

在.NET Core 1.0.0 RC2即将正式发布之际,我也应应景,针对RC2 Preview版本编写一个史上最简单的MVC应用。由于VS 2015目前尚不支持,VS Code的智能感知尚欠火候,所以我们直接采用最原始的记事本来编写这个MVC应用。[源代码从这里下载]

目录
步骤一、安装最新的.NET Core SDK
步骤二、定义源代码和配置
        定义NuGet.xml
        定义Project.json
        定义入口程序
        定义初始化类型
        定义Controller
步骤三、运行程序
        恢复NuGet包
        编译执行程序
        向HomeController发起请求

步骤一、安装最新的.NET Core SDK

我们可以根据自身的操作系统环境从https://github.com/dotnet/cli上下载.NET Core最新的SDK,这个SDK包含.NET Core Runtime和一些有用工具(比如命令行)。如果你已经安装了老旧的版本,我个人建议你先将其卸载。

目前的版本为1.0.0-preview1-002702,我们可以执行dotnet –version命令确认是否是这个版本。

步骤二、定义源代码和配置

我们创建一个目录(假设为C:\HelloWorld)来存放MVC应用所有的源文件。下图展现了定义在这个目录下的所有文件。

定义NuGet.xml

我们在NuGet.xml文件中定义应用程序使用的NuGet包所在的站点地址(https://www.myget.org/F/aspnetvnext/api/v3/index.json)。

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <configuration>
   3:   <packageSources>
   4:     <add key="RC2" value="https://www.myget.org/F/aspnetvnext/api/v3/index.json" />
   5:   </packageSources>
   6: </configuration>

定义Project.json

定义在Project.json文件中的所有配置如下所示,我们会发现它与RC1中的Project.json不太一样。RC2中,我们可以向定义普通依赖一样来选择运行时(Microsoft.NETCore.App),或者说运行时本质已经成为了一个一般意义上的以来。除了这个针对运行时的依赖,我们还添加了两个依赖,它们分别是“Microsoft.AspNetCore.Mvc”和“Microsoft.AspNetCore.Server.Kestrel”,前者定义了ASP.NET Core MVC的核心框架,后者则提供了一个针对Kestrel的Server (ASP.NET Core管道中的Server专门负责请求的监听、接收和回复)。我们在“framework”节点添加了一个名为“netcoreapp1.0”的框架,之前的名称叫做“dnxcore50”。

   1: {
   2:   "version": "1.0.0-*",
   3:   "buildOptions": {
   4:     "emitEntryPoint": true
   5:   },
   6:   "dependencies": {
   7:     "Microsoft.NETCore.App": {
   8:       "type": "platform",
   9:       "version": "1.0.0-rc2-3002702"
  10:     },
  11:     "Microsoft.AspNetCore.Mvc":"1.0.0-rc2-final",
  12:     "Microsoft.AspNetCore.Server.Kestrel":"1.0.0-rc2-final"
  13:   },
  14:   "frameworks": {
  15:     "netcoreapp1.0": {
  16:       "imports": "dnxcore50"
  17:     }
  18:   }
  19: }

定义入口程序

启动应用的入口程序定义在Program.cs。如下面的代码片段所示,我们在这个文件中定义了一个Program类型,并在Main方法中编写了启动MVC应用的代码。具体来说,我们创建了一个WebHostBuilder对象通过调用扩展方法UseKestrel为构建的HTTP消息处理管道注册了一个Kestrel服务器。在调用UseStartup方法将Startup设置为启动类型之后,我们调用Build方法创建了一个WebHost对象。我们最终调用Run方法启动WebHost,进而启动了我们的MVC应用。

   1: using Microsoft.AspNetCore.Hosting;
   2: using Microsoft.AspNetCore.Builder;
   3:  
   4: public class Program
   5: {
   6:     public static void Main(string[] args)
   7:     {
   8:         new WebHostBuilder()
   9:         .UseKestrel()
  10:         .UseStartup<Startup>()
  11:         .Build()
  12:         .Run();
  13:     }
  14: }  

定义初始化类型

ASP.NET Core应用启动的时候会先执行一段初始化操作来构建一个完整的HTTP消息处理管道,这些初始化操作定义在Startup.cs。上面调用WebHostBuilder的UseStartup方法指定的类型Startup就定义在这个文件中。如下面的代码片段所示,我们在ConfigureServices方法中注册了与MVC相关的服务,并利用Configure方法将实现MVC框架的中间件注册到消息处理管道中。

   1: using Microsoft.AspNetCore.Builder;
   2: using Microsoft.Extensions.DependencyInjection;
   3:  
   4: public class Startup
   5: {
   6:     public void ConfigureServices(IServiceCollection services)
   7:     {
   8:         services.AddMvc();
   9:     }
  10:  
  11:     public void Configure(IApplicationBuilder app)
  12:     {
  13:         app.UseMvc();
  14:     }
  15: } 

定义Controller

我们在HomeController中定义了MVC应用中唯一的一个Controller,并按照如下的形式定义了一个唯一的Action方法。这个Action方法返回一个简单的字符串“Hello World”,并映射为应用的根地址(“/”)

   1: using Microsoft.AspNetCore.Mvc;
   2: public class HomeController : Controller
   3: {
   4:     [HttpGet("/")]
   5:     public string Index() 
   6:     {
   7:         return "Hello World";          
   8:     }
   9: }

步骤三、运行程序

RC2提供了一个非常强大的命令行(dotnet),包括恢复NuGet包以及编译执行.NET应用的相关操作都可以通过它来完成

恢复NuGet包

我们打开命令行工具并切换到应用所在的目录,执行dotnet restore命令恢复在project.json中使用的NuGet包。

编译执行程序

我们直接执行dotnet build命令对整个应用实施编译,然后执行dotnet run命令启动我们的MVC应用。

向HomeController发起请求

当程序启动后,Kestrel服务器会利用5000端口对HTTP请求实施监听。由于定义在HomeController的Action方法Index被映射为应用根地址,所以我们利用浏览器向该地址发送请求会得到这个Action方法的响应结果。

作者:蒋金楠 

.NET Core 1.0.0 RC2的更多相关文章

  1. win10与ubuntu下演示运行.net core rc2 1.0.0.3002702程序

    随着.net core rc2(1.0.0.002702)发布的同时,我们也来在本地 win10与ubuntu玩一下吧. 先简单说下.net core ,在.net core rc1中用的是dnx 工 ...

  2. .Net Core 1.0.0 RC2安装及示例教程

    前几天微软发布了.Net Core1.0.0 RC2 Preview版本,一直都想尝试下跨平台的.Net Core,一直拖到今天,也参考了下园友们的经验,闲时整理了一下安装的步骤,供大家参考. 我们要 ...

  3. ASP.NET Core 1.1.0 Release Notes

    ASP.NET Core 1.1.0 Release Notes We are pleased to announce the release of ASP.NET Core 1.1.0! Antif ...

  4. Castle Core 4.0.0 alpha001发布

    时隔一年多以后Castle 项目又开始活跃,最近刚发布了Castle Core 4.0.0 的alpha版本, https://github.com/castleproject/Core/releas ...

  5. ASP.NET Core: You must add a reference to assembly mscorlib, version=4.0.0.0

    ASP.NET Core 引用外部程序包的时候,有时会出现下面的错误: The type 'Object' is defined in an assembly that is not referenc ...

  6. CentOs7 +Jexus 5.8.2部署Asp.Net Core WebApi 1.0生产环境

    Jexus 是一款运行于 Linux 平台,以支持  ASP.NET.PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器.最新版 5.8.2 已经发布,有如下更新: 1,现在大 ...

  7. ASP.NET Core实现OAuth2.0的ResourceOwnerPassword和ClientCredentials模式

    前言 开发授权服务框架一般使用OAuth2.0授权框架,而开发Webapi的授权更应该使用OAuth2.0授权标准,OAuth2.0授权框架文档说明参考:https://tools.ietf.org/ ...

  8. [转]Could not load file or assembly 'System.Core, Version=2.0.5.0 和autofac冲突的问题

    Could not load file or assembly 'System.Core, Version=2.0.5.0 和autofac冲突的问题 来源:http://www.cnblogs.co ...

  9. Asp.net Core 1.0.1升级到Asp.net Core 1.1.0 Preview版本发布到Windows Server2008 R2 IIS中的各种坑

    Asp.net Core 1.0.1升级到Asp.net Core 1.1.0后,程序无法运行了 解决方案:在project.json中加入runtime节点 "runtimes" ...

随机推荐

  1. c# 阶段总结

    然并卵然并卵然并卵然并卵然并卵然并卵然并卵

  2. BZOJ 3163: [Heoi2013]Eden的新背包问题( 背包dp )

    从左到右, 从右到左分别dp一次, 然后就可以回答询问了. ---------------------------------------------------------- #include< ...

  3. Mixtile LOFT

    日前,国内电子原型类开发团队Mixtile(深圳致趣科技)新推出的 Mixtile LOFT套件,受到业内著名的海外科技网站CNXSoft的关注和报道. 如果要阅读相关的原文报道,可点击这里.下面摘录 ...

  4. J2EE应用服务器计数器

    常用的J2EE应用服务器包括Weblogic.WebSphere和Tomcat等,以下是以WebLogic为例给出的计数器. 类别 计数器名称 计数器描述 JVM Heap Size JVM堆大小,该 ...

  5. android 屏幕尺寸的理解

    对android设备屏幕尺寸单位的理解 一.android移动设备(手机和平板)常用的关于屏幕的一些单位: 1.px:像素点,应该是一个统一的单位,与我们国际单位米(M)应该是一回事,它应该是屏幕尺寸 ...

  6. PHP - Windows安装Pear

    1. 打开命令窗口,切换到php的安装目录,执行以下命令(你也可以添加一个php的环境变量,就不用如此麻烦的切换目录,但是我安装了多个版本的php,所以就没有添加环境变量). 2. 当出现下面这句话时 ...

  7. java环境变量配置问题

    你要配置三个环境变量JAVA_HOMECLASSPATHPath你都配置了吗? 系统变量→新建 JAVA_HOME 变量 .变量值填写jdk的安装目录(本人是 E:\Java\jdk1.7.0) 系统 ...

  8. Apache Flink

    Flink 剖析 1.概述 在如今数据爆炸的时代,企业的数据量与日俱增,大数据产品层出不穷.今天给大家分享一款产品—— Apache Flink,目前,已是 Apache 顶级项目之一.那么,接下来, ...

  9. 超详细SDK Hello World

    Windows应用程序的基本运行机制与HelloWin程序详细解 总的来说最基本的Windows应用程序的运行执行顺序总是以如下的基本顺序执行的. 顺序结构: 调用WinMain函数开始执行--à定义 ...

  10. 基于visual Studio2013解决C语言竞赛题之1024求和

          题目 解决代码及点评 /* 已知有N个无规律的正整数,请编程序求出其中的素数并打印出能被5整除的数之积. */ #include <stdio.h> # ...