微软正在Programming新一代 asp.net web 框架 vNext ,新框架很多特性都相当地吸引人!虽然以前也一直有 mono 可以使 .Net 程序集运行在 *nix 平台上,但是 asp.net web application 兼容性和性能一直让人心存疑虑,类库依赖与 webform / iis 等纠结在一起。敢于捣鼓 mono 跨平台的必是猛人,对于想多快好省完成工作的人来讲就不是那么好的选择。

asp.net 跟着.net 一起发展了这么多年,从 webform 到 mvc 到现在 mvc 都快出6了,类库庞大臃肿,结构复杂。大家有时会用 ILSpy 查看 .net framework 的代码吧。别说咱们了,恐怕 .net framework 的工作人员也未必可以厘清这些库的关系。

  1. 从零开始每一行代码都将开源,并且官方支持 window / mac / linux 系统。 想一想用 vs2013 快速Programming,布置到可靠性和安全性甚至性能更好的 linux Server上运行,太爽了!

  2. 新一代的 vNext 将会全部从零开始编写,移除对某些不必要的类库的依赖。脱离原来历史遗留问题后 web application 所需要类库大为精简,进而可以大量节省内存及提高运行效率。

  3. vNext 使用了 Roslyn 内存式动态代码编译器,在改写程序代码后不用重启程序查看结果,直接刷新就能看到新的输出。这可是动态语言的节奏啊!让 RoR/Django 们情何以堪!

  4. 可选对云托管进行优化,可以提高性能,也就是对 Azure 支持更好。对MS自家东西支持无可厚非。

  5. 去除强命名规则,去除 system.web.dll 引用,配套 mvc6 框架。这两个应该就是跨平台最得要的一步了。

  6. 重度使用 DI 容器!这个很好,不知道默认会使用哪个框架,Autofac 还是 Structuremap ?

  7. 独立进程运行,安全隔离,旧的 web app 都是运行在 “应用程序池” 里面的。估计新的 vNext 将会使用像 RoR/Tomcat/Django 这些 *nix 框架一样使用独立进程的模式,每个应用隔离开来与 web 服务程序协同工作。想必这也是为跨平台作出的重大变革。这种协同模式还是有很多好处的,首先是 web Server与 app 进程之间各自关注自己的方面,相互独立,各擅其长!像 nginx/lighty 都支持一种特性,即静态文件不存在的情况下把请求转到 fastcgi 上进行处理。貌似 asp.net 没有相应的功能?另外还有 x-sendfile 也是很棒的东西,iis 也没有。。。asp.net mvc 目前与 iis 绑定太多了,有时候弄不清楚。web.config 里面有给 web app 的,也有配置 iis 。比较混乱!

  8. vNext 将会使用 json 文件代替掉原来的 xml  配置文件。不得不说太合我胃口了,我很多时候搞不明白 xml 有什么好的,太tmd啰嗦了,配置一点东西代码那么长,就算有自动完成也看得眼花!Configuration 这些东西设计也太复杂了。完全记不住那么复杂的东西,每次要写个 configSection 得到处找例子重新理解。再说 xml 的 dom 操作方式也很啰嗦!更换为 json 后配置文件易读性必须嗖嗖上升!

  9. mvc/web api/web pages 重新整合抽象。

目前还没看到数据层特别是 EntityFramework 的相关信息,不知道 EF 会不会跟随一起支持跨平台。。。。

总而言之 vNext 看起来相当棒,汲取了很多优秀开源框架的经验模式。相信会为 asp.net 在开源界的占有率翻开决定性的一页!