什么是ASP.NET Core 2.0?

什么是ASP.NET Core 2.0?

Learning ASP.NET Core 2.0 第一章翻译(google翻译)

ASP.NET的第一个预览版本在15年前作为.NET Framework的一部分出现了。从那以后,数以百万计的软件开发人员已经使用它来构建和运行各种伟大的Web应用程序。多年来,微软已经添加和发展了许多功能,直到2016年6月完成了ASP.NET框架的重新设计,名为ASP.NET Core。在ASP.NET Core 1.0和1.1之后,2.0版是第三个也是最新的安装ASP.NET Core。让我们看看它提供了什么,什么时候在项目中使用它是有意义的。

ASP.NET Core 2.0是一个新的开源和跨平台框架,用于构建现代的基于云的应用程序,如Web应用程序,物联网(IoT)应用程序甚至移动后端。

ASP.NET Core 2.0应用程序在.NET Core Framework以及完整的.NET Framework上运行。 ASP.NET核心框架被设计为为应用程序提供优化的开发框架,这些框架必须在云或本地部署。它由模块化组件构成,开销很小,所以在构思和实施软件解决方案时,您可以保持高度的灵活性。您可以在Windows,Linux和MacOS上开发和运行ASP.NET Core 2.0应用程序。

在下面的图中,您可以看到不同的.NET Framework版本和组件如何协同工作:

与之前的框架相比,ASP.NET Core 2.0包含了几个体系结构的变化,导致了更精简和更模块化的框架。它不再以System.Web.dll为基础,而是使用一组细粒度的,充分考虑的NuGet包。这允许较小的应用表面积的好处包括:

  • 更好的安全性
  • 减少组件之间的依赖关系
  • 改进的性能
  • 在付费用户的云消费者世界中降低优化的财务成本
  • 作为开发人员,在构建基于经典.NET Framework的应用程序时,必须在六种应用程序模型(WPF,Windows窗体,Web窗体,Web MVC,Web API和Xamarin)之间进行选择,这可能会造成混乱,而且效率不高。

随着ASP.NET Core 1.0和1.1的发布,这个版本被优化并简化为三种不同的应用程序模型,缺点是不能在它们之间共享代码。

使用ASP.NET Core 2.0,应用程序模型的数量进一步减少为两个,代码现在可共享,这意味着您现在可以重复使用超过90%的代码。对于您作为开发人员来说,这可以让您更高效,并且可以快速轻松地在应用程序模型之间切换。

在本章中,我们将介绍以下主题:

  • ASP.NET 2.0功能
  • 跨平台支持
  • 微服务架构
  • 使用Docker和容器
  • 性能和可伸缩性
  • 并行部署
  • 技术限制
  • 何时选择ASP.NET Core 2.0

ASP.NET Core 2.0功能

新的Microsoft.AspNet.Core.All软件包包含单个库中的所有ASP.NET Core 2.0功能。它包括身份验证,MVC,Razor,监控,Kestrel支持等等。这些在本书后面会有更详细的解释。

请注意,如果您想逐个添加软件包,则仍然可以手动引用它们,而不是使用包含所有软件包的单个软件包,但是您将会错过几个优点,如您在此处所看到的。

运行时存储是ASP.NET Core 2.0附带的一个重要的新组件。它包含编译的软件包,这些软件包使用本地机器语言进行编译,并且是提高性能的关键。所有使用Microsoft.AspNet.Core.All软件包的应用程序都从中受益,因为它们不再需要与所有相关软件包一起部署。一切已经在那里,所以他们的部署规模将会减少,他们的执行时间将得到优化。

ASP.NET Core 2.0允许您创建遵循模型 - 视图 - 控制器(MVC)模式的良好分解和可测试的Web应用程序。本书稍后会详细介绍这个话题。

此外,您可以使用自定义和内置格式化程序(如JSON或XML)以及RESTful服务完全支持内容协商来构建HTTP服务。

ASP.NET Core 2.0完全支持Razor,它包含一个用于创建视图的高效语言,而Tag Helper则允许服务器端代码参与在Razor文件中创建和呈现HTML元素。

模型绑定自动将数据从HTTP请求映射到操作方法参数,模型验证自动执行客户端和服务器端验证。

就客户端开发而言,ASP.NET Core 2.0旨在与各种客户端框架(包括AngularJS,KnockoutJS和Bootstrap)无缝集成。

此外,它还提供了以下基本改进:

  • ASP.NET MVC和Web API已经被合并到一个框架中
  • 现代的客户端框架和开发工作流程
  • 基于环境的配置系统准备好云主机
  • 内置的依赖注入功能
  • 新的轻量级和模块化的HTTP请求管道
  • 在IIS,自主机,Docker,Cloud甚至在您自己的进程中托管相同的应用程序
  • 承载应用程序或组件的多个版本并排
  • 作为NuGet包完全发货
  • 新的工具,简化了现代Web开发
  • 简化的csproj文件,使得使用Visual Studio以外的开发环境更容易(例如在Linux和MacOS上)
  • Program.cs类已经扩展到完全自动化的Kestrel的集成,ContentRootPath的设置,加载配置文件
  • 初始化日志记录中间件和其他步骤,只调用一个单一的方法
    通过将日志记录和配置移动到WebHost构建器初始化中,可以简化Startup.cs

跨平台支持

如前所述,从一开始就构建了ASP.NET Core 2.0框架,并提供了跨平台支持。它支持各种操作系统和技术,如Windows,Linux,MacOS,Docker,Azure等。

ASP.NET Core 2.0目前支持以下Linux发行版:

  • Ubuntu 14,16
  • Linux Mint 17,18
  • Debian 8
  • Fedora
  • CentOS 7.1和Oracle 7.1
  • SUSE Enterprise Server 64位
  • OpenSuse 64位
    关于macOS,目前只支持(其他版本可能稍后添加):

  • macOS 10.11

  • macOS 10.12
    对于应用程序开发,您可以使用Visual Studio或Visual Studio Code在Windows上开发,然后将ASP.NET Core 2.0应用程序部署到目标系统。

请注意,目标系统可以使用完全不同的底层操作系统。例如,您可以在Windows上进行开发和测试,然后将您的应用程序部署到Linux服务器,以实现性能,稳定性或成本降低的原因。

如果你这样选择的话,你当然可以直接在Linux和macOS上开发,使用几个系统特定的源代码编辑器。在Linux上,您可以使用Visual Studio Code,VIM / VI,Sublime或Emacs。在macOS上,您可以使用Visual Studio for Mac,Visual Studio Code或任何其他Mac特定的文本编辑器。

尽管Visual Studio 2017或Visual Studio Code开发人员环境将是首选,因为它们提供了一切必要的高效工作,并且能够调试和理解代码以及在其中轻松导航。这就是为什么我们要在本书的其余部分使用这些IDE。

在构建应用程序之后,可以使用多个Web服务器来运行它。这里有些例子:

  • Apache
  • IIS
  • Kestrel self-host
  • Nginx

微服务架构

微服务也被称为微服务体系结构,是一种将应用程序构建为一系列松散耦合服务(实现业务功能)的体系结构布局。它可以用来建立电子商务系统,业务应用程序和物联网。

当你想拥抱这个系统架构时,ASP.NET Core 2.0是最好的选择。 ASP.NET Core 2.0框架是轻量级的,它的API表面可以最小化到特定的微服务的范围。微服务体系结构还允许您跨服务边界混合使用技术,从而逐渐过渡到ASP.NET Core。

请注意,使用ASP.NET Core 2.0构建的微服务可以与使用其他技术(如完整的经典.NET Framework,Java,Ruby,甚至其他更多的传统技术)的服务一起使用。当您需要逐步将单片应用程序转换为更多(微)面向服务的应用程序时,这是一个很大的优势。

您不必绑定到特定的底层基础架构,相反,您有广泛的选择,因为ASP.NET Core 2.0几乎支持您今天所能想到的所有技术。此外,您可以根据需要修改基础架构,因此对于基于此开发的应用程序没有技术锁定。

用C#编写和管理微服务的主要选择是高效,高规模,本地和云环境,这应该是Microsoft Service Fabric。它正是为此而设计的,Microsoft已经使用了多年的Azure服务(SQL数据库等)。

微服务的Docker容器方法也可能适合你的需求,我们将在下一段中解释它的用例。总而言之,ASP.NET Core 2.0是在任何类型的技术环境中实现和托管您的微服务的理想选择。

使用Docker和容器

Docker和容器现在无处不在。每个人都在谈论他们,有很多用例似乎是非常合适的。它们提供了一种高效,轻量且自包含的方法,用于在重新使用底层操作系统文件和资源的同时打包具有依赖关系的应用程序。

它们非常适合微服务体系结构,但也可以用于其他任何应用程序原型。它们与ASP.NET Core 2.0应用程序非常好地结合在一起,因为它们都是以模块化,性能,可伸缩性,轻量级特性和效率为基础构思的。

请注意,包含ASP.NET Core 2.0应用程序的Docker容器图像比使用传统ASP.NET应用程序的图像小得多,这意味着它们部署和启动的速度更快。

Docker容器和ASP.NET Core 2.0框架都提供了完整的跨平台支持(Windows,Linux和macOS)。此外,您可以将本地容器托管在本地和云中。例如,您可以通过IAAS部署或通过Azure容器服务使用Azure,这些服务还允许混合和匹配不同的操作系统和技术。

性能和可伸缩性

如果您需要尽可能好的性能并支持高扩展性方案,那么您需要绝对使用ASP.NET Core 2.0和底层的.NET Core Framework。 ASP.NET Core 2.0已经基于高性能和高可伸缩性的情况而构建。 它真的在这些领域发光,它可以被认为是最好的选择。

它比传统的ASP.NET快十倍,你甚至可以认为它是目前可用的.NET世界中最快的Web应用程序运行时!

此外,它还为微服务架构提供了最佳解决方案,其中性能和可伸缩性非常重要。 在消耗如此低的系统资源的同时,没有其他技术是高效的,这也降低了基础设施和云托管成本。

并行部署

如果您希望能够在不同版本的.NET Framework上安装依赖的应用程序,那么您应该考虑使用ASP.NET Core 2.0框架,因为它提供了100%的并行部署功能。

不同的.NET Core和ASP.NET Core版本的并行部署允许在同一台服务器上有多个服务和应用程序。 他们每个人都可以使用各自框架的专用版本,从而在进行应用程序升级和共同IT操作时消除风险并节省资金。

技术限制

请仔细看看本节所示的技术。如果您在当前的应用程序中使用技术或框架(这里已列出,但尚未支持),则可能发现迁移到ASP.NET Core 2.0是很困难的,甚至是不可能的。

并不是所有当前的.NET Framework技术都可以在ASP.NET Core 2.0中使用,有些可能永远不会被移植,因为它们不符合新的.NET Core特定的范例和模式。

以下列表显示了在ASP.NET Core和.NET Core中没有直接找到的最常见的技术,知道有些技术可以通过多目标功能使用:

ASP.NET Web窗体应用程序:传统的Web窗体技术只能使用完整的传统.NET Framework,不能将ASP.NET Core和.NET Core用于这些类型的应用程序。
ASP.NET Web Pages应用程序:它们不包含在ASP.NET Core 2.0中,但可以使用Razor网页引擎来提供相同的功能。
ASP.NET SignalR应用程序:当前,ASP.NET SignalR不适用于ASP.NET Core。但是,您可以在相应的服务器端和客户端库GitHub存储库中找到第一个预览版本,所以它们应该包含在下一个版本中。
WCF服务:ASP.NET Core 2.0包含用于访问WCF服务的WCF客户端,但不支持创建WCF服务。尽管这个功能可能会在未来的版本中添加。
工作流服务:Windows Workflow Foundation,Workflow Services和WCF数据服务不受支持,将来也没有将其添加到ASP.NET Core的计划。
WPF和Windows窗体应用程序:Windows Presentation Foundation和Windows Forms不能与ASP.NET Core一起构建,它将违背跨平台的范例。但是,您可以用XAML2 Universal标准提供的UWP应用程序替换您的WPF应用程序。
ASP.NET Core 2.0目前不支持所有.NET语言。例如,F#没有任何工具支持。最新版本的Visual Studio 2017中添加了Visual Basic支持。将会支持越来越多的语言。

除了官方的ASP.NET Core路线图之外,还有其他的框架和技术,计划在未来几个月内移植到.NET Core上。要获得关于什么将被移植的内容以及哪些不移植的信息,请转到.NET Core Libraries(https://github.com/dotnet/corefx)的GitHub存储库。

对于那些有计划的人来说,不能保证他们真的会被移植过来。但是,您会发现在下一个版本的ASP.NET Core中可以期待什么。请注意,在某些情况下,您可以使用ASP.NET Core 2.0的多目标功能来调用目前不受ASP.NET Core 2.0直接支持的框架。

如果您关心项目中需要的特定框架或组件,请考虑参与关于GitHub的讨论。 也许其他人会有相同的要求,微软决定优先考虑他们的.NET Core迁移。

某些Microsoft服务甚至某些第三方平台不支持ASP.NET Core。 例如,某些Azure服务(如服务结构状态可靠服务和服务结构可靠演员)需要完整的传统.NET Framework。

此外,有时ASP.NET Core SDK不提供或不可用。 同时,您可以始终使用等效的REST API而不是客户端SDK,然后再替换它们。 请放心,所有Azure服务将在未来支持ASP.NET Core,如可在相应的产品路线图中看到的那样。

何时选择ASP.NET Core 2.0

在看到ASP.NET Core 2.0提供的各种功能之后,您可以问问自己是否将在未来取代完整的经典.NET Framework。确实,ASP.NET Core 2.0和底层的.NET Core Framework提供了一些主要的增强和性能改进,但是仍然存在一些特定的情况,那些新的应用程序模式不适用,以及完整的.NET Framework将成为最好的,有时甚至是唯一的选择。

将您现有的所有应用程序从头开始迁移到ASP.NET Core可能很难甚至无法完成。您应该考虑如何逐步改变您的应用程序,以降低失败或过度复杂化的风险,并让您有时间真正了解新的模式和范例。

例如,只有使用ASP.NET Core 2.0才能开始所有新的开发,然后看看如何在以后迁移旧版代码,有时甚至不必迁移它,因为迁移它不会有实际的好处。如果您对迁移主题非常感兴趣,请考虑附录,因为我们有一整章专门讨论这个重要主题。

ASP.NET Core和.NET Core Framework每天都获得越来越多的框架和客户端库支持。微软,工具和框架供应商以及不同的开发人员社区都在努力提供一系列功能,以允许功能丰富和高性能的Web应用程序。每个人都希望通过这种有前途的技术来开发可持续发展的未来技术。

在使用.NET标准2.0的同时,可以同时使用.NET Core和.NET Framework库,从而扩展了可能性,并为开发人员提供了一个临时解决方案,直到每个重要功能和每个主要框架都可以在.NET Core中使用。

回顾本章所讨论的内容,您应该在以下情况下为您的服务器应用程序使用ASP.NET Core 2.0:

  • 你有跨平台的需求
  • 你专门针对微服务
  • 你想使用Docker容器
  • 你需要高性能和高度可扩展的应用程序
  • 你需要并排放置多个不同.NET版本的应用程序
  • 提出的技术限制不适用于你的应用程序要求

概要

在本章中,您已经了解了ASP.NET Core 2.0框架及其功能。 您已经看到,它包含了在跨平台环境中使用微服务体系结构和容器技术(如Docker)所需的一切工作。

此外,您已经了解到,它为您的Web应用程序提供了非常好的性能和卓越的可扩展性,甚至支持并行部署。

最后,我们讨论了技术限制,以及何时建议使用ASP.NET Core 2.0框架。

在下一章中,我们将讨论如何设置开发环境,包括Visual Studio 2017或Visual Studio Code作为集成开发环境。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值