设为首页 收藏本站
查看: 712|回复: 0

[经验分享] 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介

[复制链接]

尚未签到

发表于 2017-2-24 08:28:53 | 显示全部楼层 |阅读模式
ASP.NET 5简介
  ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦。为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一个.NET Core的东西。 在.NET Core里一切都是可配置的,包括Session、MVC等功能,而一切可配置的功能都是可以在Nuget上进行下载。
  目前ASP.NET 5依旧兼容老的.NET Framwrok,但要在进行跨平台的部署,还是只能使用新改版的.NET Core CLR。
  目前的ASP.NET 5包括6个子项目DependencyInjection、EntityFramework、Identity、KRuntime、MVC、SignalR Server,具体每个项目的介绍如下:


  • DependencyInjection - 基本的依赖注入管理并拥有默认实现
  • EntityFramework - 数据访问ORM框架
  • Identity - 用户认证系统
  • KRuntime - 核心运行时、项目系统,加载器
  • MVC - MVC框架,整合了MVC、Web API、Web Pages功能
  • SignalR-Server - 实时交互式服务
  ASP.NET 5所有子项目的开源代码都可以在https://github.com/aspnet/上找到。

ASP.NET 版本号解释

5
  新版的ASP.NET称为ASP.NET 5,是一个使用MVC架构开发web应用程序的框架,它还提供了开发RESTful服务的功能。另外,在下个版本里,该框架还可以使用SignalR构建实时应用程序。注意,ASP.NET 5不再包含Web Form开发框架了。
  5也是.NET framework的新版本的版本号,称之为Core50,也叫.NET Core。.NET Core是.NET的重构版本,只保留原有框架中的最小化的功能集,对于其它的特性和功能,可以通过nuget下载以插件的形式运行。这就意味着,我们可以将其用于各种云环境进行独立部署。另外,微软还会提供一个跨平台的.NET Core,以便可以让ASP.NET程序部署到Mac和Unix/Liunx服务器上。另外.NET Core框架还可以和程序一起进行打包部署,从而可以实现在同一台服务器上使用不同版本的.NET Core。
  另外,还要注意,.NET Core不包括Web Form、Windows Form、WPF、WCF、Silverlight、System.Drawing、Datatable等功能。也就是说,如果你的程序需要使用System.Drawing进行缩略图制作的话,那就没办法使用了。类似的工具集只能通过Nuget包进行下载了。可以通过工具查找当前程序和.NET Core的兼容性工具集。

4.5.2
  4.5.2是当前.NET framework全功能版的版本号。你可以使用该版本的.NET来运行ASP.NET 5,甚至是4.5.1版本,使用该版本,可以使用整个.NET体系的所有功能,只不过就不能跨平台了。

4.6
  4.6是.NET framework全功能版下一版的版本号,也是.NET Core的下一个版本号。你可以将ASP.NET 5应用程序运行在.NET 4.6上,但运行在.NET 4.6上的ASP.NET程序可能不兼容.NET Core。下一个版本的ASP.NET Web Forms也是4.6,其将包括一些增强功能,如异步模型绑定、HTTP2、并开始使用Roselyn编译器。现有的ASP.NET程序(Web Forms、MVC5和之前的版本、Web Pages)不需要任何修改都可以运行在.NET 4.6上。

6
  ASP.NET 5中的MVC、Web API、Web Pages三个框架会合并成一个框架,统称为MVC6。该合并工作将删除三个框架中重复的功能,比如MVC和Web API中的两种Controller只保留一种。但是传统MVC的功能都会保留,比如模型绑定。不过,据说Web Pages在RTM的时候不会发布,而是会在RTM之后的第一次更新中进行发布。
  MVC6会引入一些新功能,最引人注目的功能就是Tag Helpers和View Components。Tag Helpers是Html Helpers的一种替换,而View Components则引入里类似Web Forms中的WebControl的概念。
  比如,原来的视图模型定义是这样的:
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))  
{
  @Html.AntiForgeryToken()
  <h4>Create a new account.</h4>
  <hr />
  @Html.ValidationSummary(true, &quot;&quot;, new { @class = &quot;text-danger&quot; })

  <div>  @Html.LabelFor(m => m.UserName, new { @class = &quot;col-md-2 control-label&quot; })
  <div>  @Html.TextBoxFor(m => m.UserName, new { @class = &quot;form-control&quot; })
  </div>
  </div>
  在新版MVC6中,我们可以使用Tag Helper进行定义:
<form asp-controller=&quot;Account&quot; asp-action=&quot;Register&quot; method=&quot;post&quot;><h4>Create a new account.</h4>
  <hr />

  <div asp-validation-summary=&quot;ValidationSummary.ModelOnly&quot;>
  <div>
  <label asp-for=&quot;UserName&quot;>
  <div>
  <input asp-for=&quot;UserName&quot;>  <span asp-validation-for=&quot;UserName&quot;>  </div>
  </div>
  这样的话,就极大地方便了前端开发人员了,因为可以看到正常的HTML结构了。
  View Components则解决了Child Action的问题,比如很多时候,我们都是通过Html.Action来实现菜单、标签功能。如下是一个View Component的示例:
  

    public>{
  public IViewComponentResult Invoke()
  {
  var greeting = &quot;Good Morning!&quot;;
  if (DateTime.Now.Hour > 12)
  {
  greeting = &quot;Good Afternoon!&quot;;
  }
  if (DateTime.Now.Hour > 17)
  {
  greeting = &quot;Good Evening!&quot;;
  }
  return View(&quot;Index&quot;, greeting);
  }
  }
  

  该视图组件(view component)也需要响应的视图文件,示例如下:
@model string  
<h3>@Model</h3>
  调用代码则需要使用权限的Component.Invoke方法,示例如下:
<div>  @Component.Invoke(&quot;Greeting&quot;)
  
</div>
  另外还有一个Component.InvokeAsync方法,可以用于异步调用。关于视图组件的详细用法,请参考视图组件一章。

7
  7是Entity Framework的下一个版本,虽然不属于ASP.NET 5的一部分,但有很大关系。EF7将和ASP.NET 5的RTM版本一起发布,虽然可能延期,但至少在那个时候会有一个可以在.NET Core上运行的基本ORM包,其不包括延迟加载、继承映射、并且只适应于SQL Server。如果不在跨平台上运行MVC6程序的话,你可以在.NET 4.5.2或4.6中继续使用EF6,

ASP.NET5和MVC6中的10大新变化
  在新版ASP.NET5和MVC6中,有很多变化,有些是彻底的变化,比如在最底层支持依赖注入技术,为了方便了解,我们这里列出了最重要的10大变化,以便进行学习,具体如下:


  • ASP.NET 5现在已经是跨平台了,可以在Mac和Linux上运行。
  • 不再有Web Forms框架了。
  • 只支持C#,不在支持VB.NET了。(貌似最近又听说最终版VB.NET又要支持了)
  • 新的Tag语法,@Html.LabelFor或Html.TextBoxFor替换成新语法<label asp-for=&quot;Name&quot;>或<input asp-for=&quot;Name&quot; />,以便进行模型绑定。
  • 新增视图组件(View Component),可以将局部内容定义为一个单独的组件进行调用,和Web Forms里的WebControl非常像。
  • 拥抱前端技术,内置了Nodejs、NPM、Grunt、Bower技术。
  • 模型整合,将MVC和WebAPI整合成一个框架。
  • 支持AngularJS,帮内置了AngularJS的module、controller、directive、以及factory模板。
  • 支持依赖注入技术,拥有原生的DI框架,并且也支持第三方容器。
  • 支持xUnit.net,并抛弃了Visual Studio Unit Testing框架。
IDE
  VS2015:VS2015就不用说了,依然高大上,目前不仅支持Nodejs、Python开发,还支持Android和iOS开发。
  
Visual Studio Code:为了能够在Mac或Linux操作系统上也能编写C#程序,微软又发布了一个 Visual Studio Code轻量级编辑器可以使用上述操作系统,依然是高大上啊,新功能和特性瞬间秒杀Sublime Text和Brackets,详细地址请访问:https://code.visualstudio.com/ 。

  参考:http://stephenwalther.com/archive/2015/02/24/top-10-changes-in-asp-net-5-and-mvc-6


同步与推荐
  本文已同步至目录索引:解读ASP.NET 5 & MVC6系列

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346370-1-1.html 上篇帖子: 基于Node.js实现一个小小的爬虫 下篇帖子: 认识ASP.NET 5项目结构和项目文件xproj
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表