阅读目录:
ASP.NET vNext 发布已经过去了一个多月的时间,发布详情请访问:振奋人心呐!关于下一代.NET——ASP.NET vNext 的更多说明,当时看这完篇新闻的第一感觉就像文章标题一样“振奋人心”,其实每个人都有自己的感受,对于我来说,ASP.NET vNext 最大的特性就是跨平台(基于 Mono 运行时),试想下:作为.NET程序员,终于不被java或C++程序员挑自己的短板,确实是蛮振奋人心的。当然,除了跨平台,使用 Roslyn 编译器动态编译(修改源代码,刷新页面即可)、云优先(Cloud First)、开源等等特性也是蛮重要的。
以下内容,只是一些个人看法,仅供参考学习,也欢迎讨论指教。
Visual Studio "14" CTP(Community Technology PReviews)是下一代 Visual Studio 的社区预览版,我个人认为 Visual Studio "14" CTP(以下简称:VS 14 CTP) 就是为 ASP.NET vNext 而量身定做的,当然也包含了其他模块,比如:Store Apps、Cloud等等,以下是关于VS 14 CTP 的版本描述:
CTPs are provided for testing and feedback purposes only. CTPs are unsupported, English-only releases. They are not subject to final validation and are not intended for use on production computers, or to create production code.Installing a CTP release will place a computer in an unsupported state. For that reason, we recommend only installing CTP releases in a virtual machine, or on a computer that is available for reformatting.Currently, Visual Studio "14" CTPs have known compatibility issues with previous releases of Visual Studio and should not be installed side-by-side on the same computer.
从版本中可以看出,VS 14 CTP 仅用于测试和反馈,只提供英文版本,而且安装VS 14 CTP 会和已有的Visual Studio 版本冲突,也就是说安装VS 14 CTP 要把电脑中Visual Studio 其他版本卸载,才能进行安装。
至于“installed side-by-side on the same computer”,因为是先安装的 VS 14 CTP,再安装的 Visual Studio 其他版本,暂时没发现异常情况。
VS 14 CTP 创建ASP.NET vNext 项目模块:
VS 14 CTP 下载地址:
ASP.NET vNext 的发布文章称其为.NET下一代,其实我个人觉得并不准确,ASP.NET vNext 就像其名字一样,应该是 ASP.NET 的下一代版本。ASP.NET vNext 代表着.NET的未来的发展方向,比如说跨平台、开源等,也就是 vNext。关于 ASP.NET vNext,园中也有几位大神写过几篇介绍的文章,以下是个人整理关于 ASP.NET vNext 的一些特性(更新时间为6月3日):
MVC、 Web API 和 Web Pages合并成一个框架,称为 MVC 6。新的框架使用一组通用的抽象为路由、 行为选择、 筛选器、 模型绑定等等。
MVC 6 并不依赖于 System.Web,是一个更精简的框架,用更快的启动时间和内存占用较低(也就是“低内存消耗”以及“高吞吐量”)。
ASP.NET vNext 应用程序可以使用云优化(Cloud-Optimized).NET Framework。大约 11 M的大小相比于 200 M的完整的框架,也是组成的 NuGet 包的集合(云优化的功劳)。
云优化框架的减少使实际部署的应用程序框架:
提供云优化 Framework 的 NuGet 包,可实现以下目标:
ASP.NET vNext 与 Host 无关。你可以承载你的应用程序在 IIS 中,或自托管在一个自定义的过程(web API 2 和 SignalR 2 已经支持自托管,ASP.NET vNext 也会给 MVC 带来同样的功能)。
支持依赖注入(也可以使用自己的 IoC 容器来注册依赖项)。
ASP.NET vNext 使用 Roslyn 编译器动态编译代码。你可以编辑一个代码文件,刷新浏览器,并看到所做的更改,并没有重建项目。除了简化开发过程,动态代码编译在现在变得可能,如在 Visual Studio Online ("Monaco") 进行代码编写,你可以选择你自己的编辑器和工具。
ASP.NET vNext 开放源代码。
ASP.NET vNext 跨平台。
.NET未来构想图,对于 ASP.NET vNext 来说,可以看出尤其侧重于云优化-Cloud Optimized,包含高吞吐量、低内存消耗、并行执行和跨平台:
ASP.NET vNext 成员图:
从上图可以更直观的看出 ASP.NET vNext 所涵盖的东西,这样的统一管理,带给编程人员好处是很多的,比如:一路由系统、 一个模型绑定系统、 一个筛选器管道等,也可以完美的从 Web Pages 过渡到 MVC。
.NET vNext 和 .NET vNext -云优化(包含模块)示意图:
ASP.NET vNext 云优化示意图:
代码到 Web 服务器示意图,”快速迭代式开发“,即修改代码刷新浏览器,接近实时,也可以实现”云编辑“功能:
ASP.NET vNext 跨平台示意图:
关于 ASP.NET vNext 的实践,MSDN 已经更新了"Music Store"(音乐商店)项目,感兴趣的朋友可以参考练习下,下面做的ASP.NET vNext 简单示例,只是个人的学习记录,方面以后自己查看,园友们可以直接略过。
首先打开 VS 14 CTP,新建 ASP.NET vNext 项目。
ASP.NET vNext 主要包含三类模板:
新建 vNextDemo 项目后,发现目录结构非常简单.
共包含两个项目文件:
在 ASP.NET vNext 中看不到我们常用的 config 文件了,取而代之的是 json(或是其他文件类型)配置文件,例如用来配置连接字符串的 config.json 文件:
1 {2 "Data": {3 "DefaultConnection": { 4 "ConnectionString": "Server=(localdb)//mssqllocaldb;Database=aspnetvnext-49333c44-d261-476e-b40a-3d9b759fc2da;Trusted_Connection=True;MultipleActiveResultSets=true"5 }6 }7 }
贴一段 project.json 示例配置:
1 { 2 "dependencies": { 3 "Helios": "0.1-alpha-build-0585", 4 "Microsoft.AspNet.Mvc": "0.1-alpha-build-1268", 5 "Microsoft.AspNet.Identity.Entity": "0.1-alpha-build-1059", 6 "Microsoft.AspNet.Identity.Security": "0.1-alpha-build-1059", 7 "Microsoft.AspNet.Security.Cookies": "0.1-alpha-build-0506", 8 "Microsoft.AspNet.Server.WebListener": "0.1-alpha-build-0520", 9 "Microsoft.AspNet.StaticFiles": "0.1-alpha-build-0443",10 "Microsoft.Data.Entity": "0.1-alpha-build-0863",11 "Microsoft.Data.Entity.SqlServer": "0.1-alpha-build-0863",12 "Microsoft.Framework.ConfigurationModel.Json": "0.1-alpha-build-0233",13 "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0-alpha"14 },15 "commands": {16 /* Change the port number when you are self hosting this application */17 "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"18 },19 "configurations": {20 "net45": {21 "dependencies": {22 "System.Data": "",23 "System.ComponentModel.DataAnnotations": ""24 }25 },26 "k10": {27 }28 }29 }
在 dependencies(依赖关系)节点,看起来有点像 NuGet 的 packages.config 配置包,但是不同之处是,以前版本中会直接添加这项项的引用,而且还取决于这些包,现在都是动态配置,比如删除一个引用,它会自动删除所依赖项,如果在 project.json 中未使用,也会动态的移除掉。
除了 dependencies,还包含 commands(命令)和 configurations(配置)节点,commands 中的”web“配置表示,应用程序默认启动地址,configurations 中的”net45“表示完整的桌面应用程序,”k10“表示云优化。
Startup.cs 是整个应用程序的启动类,有点类似于我们常用的 Global.asax,贴一段示例代码(ASP.NET vNext Web Application):
1 using System; 2 using Microsoft.AspNet.Builder; 3 using Microsoft.AspNet.Http; 4 using Microsoft.AspNet.Identity; 5 using Microsoft.AspNet.Identity.Security; 6 using Microsoft.AspNet.Routing; 7 using Microsoft.AspNet.Security.Cookies; 8 using Microsoft.Data.Entity; 9 using Microsoft.Framework.ConfigurationModel;10 using Microsoft.Framework.DependencyInjection;11 using WebApplication1.Models;12 13 namespace WebApplication114 {15 public class Startup16 {17 public void Configure(IBuilder app)18 {19 // Enable Browser Link support20 app.UseBrowserLink();21 22 // Setup configuration sources23 var configuration = new Configuration();24 configuration.AddJsonFile("config.json");25 configuration.AddEnvironmentVariables();26 27 // Set up application services28 app.UseServices(services =>29
新闻热点
疑难解答