ASP.NET vNext总结:CLR

1.前言

1.1感慨

2015年来了,园子里多了一些《年总结》类的帖子,颇有感触。俺没啥文化,出来打工10年了,人生能有几个10年?命长的话,活个70岁古来稀就知足了。期间换三个职业,N家单位吧,如今真正选择做一名程序员,也有一年时间了。我也不想提及为何成了苦逼的程序员?反正我必须承认这些年来混得挺失败的。

不管是工作上写过年终结,职业规划,就连人生也写过感悟,生活理想。可事实上,写过又能怎样?人的成长是不断变化的,过去的想法,在下一时期,可能又不认同了。还有计划跟不上变化的,这看似是在为没有实现的愿望找借口。可是每一个努力过的人,也不一定成功!这找谁说理去?这么说,不是说写总结,做计划没有必要。不打无准备的仗,吃一堑长一智。甭管有没有用,写了,想了,总结了,做了,万一实现呢?

每一个人都不可能把所有想学的知识都装在脑袋里,何况还会有记忆力衰退遗忘发生,所以我们学习技术,一样也要善于总结。过去人常说好记性不如烂笔头,说的也是这个道理。再说写写帖子,也能锻炼自己文字表达能力。

1.2技术趋势

2014年微软出了ASP.NET vNext技术,vNext直译”下一代(开发/应用)技术“,正式版可能叫ASP.NET 5 ,但vNext已经成为术语了。它是微软又变个啥花样呢?我的看法,确实颠覆很大吧。首先产品市场策略上来说,微软终于开放了一些源码(开源),也重视了跨平台,更以移动和云服务为先战略。再从技术的角度来说,一是顾及和优化原有的开发技术,又要适应新的应用技术。

我这一年来,成为微软技术的粉丝,直接学习vNext新技术是不是过于超前了?答案怎么说呢?反正以前的东东也没有深入了解,无从比较。至于VS2015正式版什么时候出?一是应该很快吧;二是现在就了解它,等它硬火起来了,正好走在一些人前面了。作为销售或管理者,他们一般认为技术选哪种,是否新技术并不重要,而作为苦逼的程序员就不要和他们争论的技术选择重要性。职业角色不同吧,每人专注掌握自己的领域即可。

2.项目创建及关注点

2.1项目创建

为了介绍和演示,先创建一个项目。打开VS2015:文件-》新建-》项目-》模板-》Visual C#-》Web:ASP.NET Web应用程序-》ASP.NET 5 Empty。 项目”名称“:vNext.WebEmptyTemplate;解决方案名称:vNext。

2.2References目录

注:看到ASP.NET 5.0和ASP.NET Core 5.0区别没?

2.3项目依赖配置

打开project.json看依赖配置:

2.4KRE

右键项目”属性“-》Application:

注: KRE是可以通过KVM(后面系列文章会介绍它的)命令来安装更多的版本,在系统用户文件下也可以找到安装过的KRE,如:

3.CLR版本

3.1概述

为了优化和云平台,甚至跨平台,DotNetFramework版本进行了重新设计,划分了多个版本,在应用程序中它们可以共存,你也可以单一使用某一个版本。

3.2CLR

公共语言运行库(Common Language Runtime),它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。CLR也可翻译成公共语言运行时。

3.3完整CLR

它是在 VS创建项目的默认运行时。提供了整个 API 集,保持了向后兼容性。

3.4核心CLR

它 是 ASP.NET 5 项目精简和分成模块化的运行时。通过重新分解为单独的组件运行时,也便于单独更新或加载某一个模块。

它大约 11 兆字节而不是完整的CLR 大约 200 兆字节。核心 CLR 对云优化特别易用又性能最好。

3.5跨平台CLR

微软还将完善发布一些跨平台运行时为 Linux 和 Mac OS X。此运行时将使您能够开发和运行.NET 应用程序在 Mac 和 Linux 的设备上。

4.实例演示

4.1修改Startup.cs代码

using System;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http;

namespace vNext.WebEmptyTemplate
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.Run(async context => {
                await context.Response.WriteAsync(DateTime.Now.ToString());
            });
        }
    }
}

程序运行结果:

4.2安装NodaTime

打开VS,工具-》Nuget程序包管理器-》管理解决方案的Nuget程序包:

查看References目录:

project.json配置也自动修改了:

4.3使用NodaTime

把Startup.cs代码改为

此时运行程序会错,显然NodaTime这个dll不是aspnetcore50版本,我们把它在ASP.NET Core 5.0依赖中去掉,修改project.json(注释掉即可):

然后再看References:

另外它又只能是完整版CLR运行(和project.json配置有关系):

此时再运行程序结果:

注:和前面获取的时间格式不同。

4.4多版本CLR共存

难道不能多个DotNetFramework版本Debug同时共存吗?显然是可以的。

修改Startup.cs代码:

using System;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http;

namespace vNext.WebEmptyTemplate
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.Run(async context =>
            {
#if ASPNET50
                var time = NodaTime.SystemClock.Instance.Now.ToString();
#elif ASPNETCORE50
                var time = DateTime.Now.ToString();
#endif
                await context.Response.WriteAsync(time);
            });
        }
    }
}

修改proiect.json配置:

这时References文件夹:

5.运行程序

5.1选择完整CLR:

运行程序结果:

5.2选择完整CLR:

运行程序结果:

6.小结

本章内容是介绍CLR的,别的总结,请留意本系列! 下一章介绍vs2015集成Bower工具使用。

时间: 2024-08-10 17:06:04

ASP.NET vNext总结:CLR的相关文章

ASP.NET vNext 微笔记

关心 ASP.NET vNext 的人可能已经读过相关文章,例如:ASP.NET vNext @ 2014.那么,你可能已经知道,ASP.NET vNext 摆脱了 System.Web.DLL,把 Web API 合并至 MVC 框架,而且更全面地采用 task-based 异步程序模型.因此,我们应该可以期待,采用 vNext 应用程序将会更模块化.有更好的性能.更容易编写异步程序(搭配 C# 的 async/await 语法),而且更容易延展(scale). 此外,同样重要的是知道 ASP

Asp.net vnext的IIS部署

微软前段时间推出asp.net vnext,自个也尝试了一把,也写了几篇关于vnext特性的博客,如下. 但一直有个困扰的问题,asp.net vnext如何在iis部署,因为整个目录结构跟之前有了很大的不同,用f5直接运行启动iis express很方便查看结果,但如果部署到线上,就要用到iis,之前一直没找到合适的方案,很是郁闷,终于在昨天搞到深夜将这个问题解决了,那本文就是讲解如何通过vs2015部署vnext web项目. 大致的方案是通过http://codedbeard.com/as

兼容Mono的下一代云环境Web开发框架ASP.NET vNext

微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cloud-first)的新战略思想.Scott Hanselman发布博客对ASP.NET vNext进行了简要介绍.而且ASP.NET入驻Github 下一代ASP.NET将全部开源,写下本文记录下这个时刻. 微软在今年的Build大会上成立.NET开源基金会和以下这些产品的发布: .NET Nat

[译]Introducing ASP.NET vNext and MVC 6

原文:http://www.infoq.com/news/2014/05/ASP.NET-vNext?utm_source=tuicool Part of the ASP.NET vNext initiative, ASP.NET MVC 6 represents a fundamental change to how Microsoft constructs and deploys web frameworks. The goal is to create a host agnostic fr

下一代的 .NET - ASP.NET vNext

在今天举行的微软北美技术大会(TechEd North America)上,我们对外宣布了一些将会应用到下一代.NET上的技术创新点.这其中最重要的就是ASP.NET vNext——针对云开发环境优化过的ASP.NET.我们一直在对.NET的一些核心技术进行优化,尤其是在上个月举行的Build大会上发布的 .NET Native 预编译器和 .NET Next Generation JIT (“RyuJIT”).都有新的发布版本供你试用.我们还有一些小的宣布要与大家分享. 在上个月的Build大

POCO Controller 你这么厉害,ASP.NET vNext 知道吗?

写在前面 阅读目录: POCO 是什么? 为什么会有 POJO? POJO 的意义 POJO 与 PO.VO 的区别 POJO 的扩展 POCO VS DTO Controller 是什么? 关于 POCO Controller POCO Controller 应用 识别 POCO Controller 简单 POCO Controller IActionResultHelper IModelMetadataProvider.ViewDataDictionary IActionDiscovery

ASP.NET vNext or .NET vNext?

ASP.NET vNext or .NET vNext? 从概念和基础开始 vNext在曝光以来绝大多数以ASP.NET vNext这样的的字眼出现,为什么这边会提及.NET vNext?原因是我认为ASP.NET只是其中的一种开发框架而已,其中真正核心重要的乃是底层的支撑层,至于底层还有些什么内容,下面会进行一次分析. .NET Framework.Mono..NET Core都是什么鬼? 相信有不少人对这一次vNext新诞生的名词抱有许多疑惑,它们到底是做什么的?负责什么内容?扮演者什么样的

Introduction to ASP.NET vNext

Introduction to ASP.NET vNext In the next version of ASP.NET we are working with multiple teams around Microsoft to create a lean, composable .NET stack that provides a familiar and modern framework for web and cloud scenarios. This new stack will co

ASP.NET vNext 概述

兼容Mono的下一代云环境Web开发框架ASP.NET vNext 我们知道了ASP.NET vNext是一个全新的框架,是一个与时俱进的框架.这篇文章将深入讨论在整体架构更多的细节,内容主要参照文章 http://davidfowl.com/asp-net-vnext-architecture/. github库之间的依赖关系可以看下面这个图 : 这个图不是所有的依赖关系,从这里可以看出ASP.NET vNext的一个架构: KRuntime - 包括SDK和运行时 (kvm, kpm和kre