杭州.net培训
达内杭州.net培训中心

13732203138

热门课程

随时随地编写 .NET应用程序

  • 时间:2018-05-17 14:17
  • 发布:杭州.NET培训
  • 来源:企业笔试题

1 基本概念

为了方便本文演示,将通篇使用“.NET Core”一词,以保持一致性。不过,此名称涉及两项非常重要的技术,分别是.NET Core和.NET Standard。.NET Core是执行应用程序的跨平台运行时。.NET Standard是由编译器强制执行的一组API,这些API被用作类库的目标,因此一个库就可以在任何支持标准的运行时上运行。例如,.NET Core 2.0、.NET Framework 4.6.1和Mono 4.8都支持.NET Standard 2.0(及更低版本)类库。若要更好地理解这一概念,请参阅本期中的姊妹篇文章“揭秘.NET Core和.NET Standard”。

同样值得一提的是,.NET Core和.NET Standard 2.0支持的语言。粗略地讲,这两种技术的2.0版都支持C#、Visual Basic和F#。不过,我们对这一版Visual Basic的目标是,启用.NET Standard 2.0类库。也就是说,Visual Basic只提供类库和控制台应用程序的模板,而C#和F#则还提供ASP.NET Core 2.0应用程序模板。

2 改进了通用项目文件

处理.NET Core项目时,首先会注意到的地方之一是,它们共用高度简化的通用项目格式。也就是说,使用一种工具(例如,命令行工具)创建的项目,可以在任何支持.NET Core的平台(如Visual Studio或Visual Studio for Mac)上运行。采用全新的项目文件格式后,便不再需要使用GUID,也不再需要明确列出所含文件,这大大减少了将更新提交到版本控制系统时发生的合并冲突。下面的代码展示了新C# .NET Core控制台应用程序项目文件的全部内容:

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>

<OutputType>Exe</OutputType>

<TargetFramework>netcoreapp2.0</TargetFramework>

</PropertyGroup>

</Project>

此外,通用格式也意味着同一团队的成员可以使用自己选择的设备和平台进行工作。如果三个团队成员分别想要在Mac、Windows和Linux上工作,他们全都可以顺畅参与同一个项目。若要详细了解更新后的项目格式,请访问 aka.ms/newprojectfile。

3 命令行工具

任何开发者工具的基础都是软件开发工具包(SDK),.NET Core也不例外。.NET Core SDK不可或缺的一部分是命令行接口(CLI),支持用户使用命令行创建、生成和运行应用程序。借助CLI,可以使用常用编辑器创建应用程序,而无需安装更重量级的工具。

首先,安装免费的.NET Core SDK(可从dot.net下载)。

安装SDK后,立即打开常用命令提示符,并运行“dotnet --help”,列出所有可用命令。dotnet命令是.NET CLI的驱动程序,语法为“dotnet <谓词> [参数]”。例如,若要查看可以创建的所有项目类型模板,请键入“dotnet new”。 若要新建项目,请提供短名称作为“new”操作的参数;例如,“dotnet new razor”创建包含新.NET Core 2.0 Razor页面(若要了解这项超棒的新功能,请访问aka.ms/razorpages)的C# ASP.NET Core Web应用程序。若要运行应用程序,请键入“dotnet run”,它会生成并启动应用程序。打开浏览器后转到输出字符串中指明的URL(例如,http://localhost:5000),可以与要生成的应用程序进行交互。 由此观之,开发并不是什么难事,只需选择常用编辑器生成并运行应用程序即可。

4 单元测试

生成应用程序后,不妨在生命周期的相对早期添加单元测试支持。与预期一样,单元测试适用于IDE,但也可以直接通过.NET CLI生成并运行单元测试。 

大家可能已注意到,“dotnet new”提供了两种不同的单元测试项目类型,分别为xunit和mstest。首先,使用首选单元测试框架(如“dotnet new xunit”)创建单元测试项目,然后再在测试项目文件夹中键入“dotnet add reference <测试项目的路径>”,让CLI为大家添加对项目文件的引用。生成单元测试项目后,便可以使用“dotnet test”命令通过CLI运行测试项目。无论选择哪种项目类型,xunit和mstest项目都受到Visual Studio和Visual Studio for Mac以及CLI的支持。

5 Visual Studio Code

虽然可以自由选择使用所需的任何编辑器,但对于渴望轻量级编辑体验同时又需要结合使用.NET Core CLI的用户,Visual Studio Code提供的体验最佳。  Visual Studio Code是轻量级跨平台编辑器,内置源代码管理和调试支持。通过将.NET CLI与Visual Studio Code结合使用,可以在所选的任何平台上生成.NET应用程序。首先,需要安装.NET Core SDK,如前所述。在计算机上安装SDK后,便可以从code.visualstudio o.com下载并安装Visual Studio Code,再选择Visual Studio Code左侧的“扩展”选项卡,安装Microsoft提供的C#扩展,即适用于Visual Studio Code的C#(由OmniSharp提供技术支持)。(如果使用的是F#,不妨也安装Ionide-fsharp扩展。请注意,若要获得.NET Core生成和调式支持,必须安装C#扩展。) 现在,可以使用Visual Studio Code开发.NET Core项目了。 

借助C#扩展,Visual Studio Code可以代表用户调用CLI,从而生成并运行应用程序以供调试。创建项目后,立即打开Visual Studio Code,并选择“文件”菜单中的“打开文件夹”。打开C#文件(.cs)时会看到提示,即编辑器顶部的建议栏,建议生成必需资产以供生成和调试之用,如图1 所示。选择“是”,便会生成两个文件:支持使用Visual Studio Code进行生成的tasks.json文件,以及支持调试的launch.json文件。现在,可以直接使用Visual Studio Code进行编辑、编译和调试。

图1:Visual Studio Code建议生成必需资产以供生成和调试之用

6 Visual Studio

Visual Studio会继续支持世界一流的开发者体验,对.NET Core的工具支持也不例外。Visual Studio 2017(版本15.3)现已开始支持.NET Core 2.0。若要在Visual Studio中开始编写.NET Core 2.0应用程序,需要下载并安装.NET Core 2.0 SDK。在计算机上安装SDK后,立即重启Visual Studio,便会发现新项目可定目标到.NET Core 2.0。

我们设定的目标是,让Visual Studio 2017成为迄今为止提供的最高效的开发服务。为了提供一些亮点,我们改进了代码导航、新增了大量重构/快速修复命令,并增添了代码样式强制措施和Live Unit Testing。

导航和重构:我们知道,在用户处理代码时,务必要提供对基准代码导航的巨大支持。下面列出了Visual Studio 2017中最受欢迎的代码导航改进:

·        转到实现(Ctrl+F12):从任何基类型或基成员转到各种实现。

·        转到全部(Ctrl+T或Ctrl+,):直接转到任何文件/类型/成员/符号声明。可以使用此功能顶部的一排图标,以筛选结果列表或使用查询语法(例如,对文件使用“f searchTerm”、对类型使用“t searchTerm”等)。

·        查找所有引用(Shift+F12):现在,借助语法着色,可以综合项目、定义和路径,对“查找所有引用”结果进行自定义分组。还可以“锁定”结果,这样就可以继续查找其他引用,同时又不丢失原始结果。

·        缩进参考线:灰色的竖虚线可以在代码中起到关键点的作用,方便用户获得可视范围内的上下文。可以通过常用的Productivity Power Tools添加此类参考线。

此外,光做到基准代码导航还是不够的;我们知道,在代码中查找要更改或清理的部分时,需要使用工具进行重构。为了帮助用户进行重构,现已开始支持执行以下操作:将类型移到同名文件中、同步文件和类型名称、为参数添加null检查、添加参数、添加缺少的switch/Select case、同步方法、将方法转换为属性(反之亦然)和解决合并冲突等。 

代码样式:在Visual Studio 2017中,可以配置并强制执行团队的编码约定,通过EditorConfig提高整个存储库的一致性。EditorConfig是一种开放的文件格式,我们与其社区合作,共同在此格式内提供.NET代码样式支持。团队可以配置约定首选项,并选择如何在编辑器内强制执行它们(如通过建议、警告或错误消息的形式)。这些规则适用于包含EditorConfig文件的目录中的任意文件。如果编码约定因项目而异,只要项目位于不同的目录,就可以在不同的EditorConfig文件中定义各个项目的规则。因为归根结底EditorConfig只是文本文件,所以可以将它轻松签入源代码管理系统中,并让它与源代码并存。若要详细了解Visual Studio中的EditorConfig支持,请访问 aka.ms/editorconfig。

Live Unit Testing:生成MSTest、xUnit或NUnit测试项目后,就可以为.NET Core项目启用Live Unit Testing (LUT)。LUT是Visual Studio 2017 Enterprise版本中引入的一项新功能。启用LUT后,可以一边键入,一边在代码编辑器中看到有关单元测试覆盖率和测试通过/未通过的反馈,如图2 所示。也就是说,不再需要离开编辑器,即可运行单元测试来验证代码更改。一键入代码,就可以在编辑器中看到即时反馈,查看所有受代码更改影响的测试的结果。

图2:.NET Core项目中运行的Live Unit Testing

热衷于提升质量的团队和热爱测试驱动开发(TDD)的用户都会喜欢这项新功能。若要启用LUT,请转到Visual Studio菜单栏中的“测试”条目,再依次选择“Live Unit Testing”和“启动”。

7 Visual Studio for Mac

Visual Studio for Mac是Visual Studio系列的最新成员,适用于要在macOS上使用IDE的开发者。从Xamarin Studio起步,Visual Studio for Mac有了很大的发展和变化,现已开始支持C#和F#项目。首先,安装.NET Core 2.0 SDK(可从dot.net下载),依次选择“创建项目”和“.NET Core”类别下的“应用程序”条目,以选择所需的项目模板。 

将会看到一个功能完备的IDE,可用于在Mac上开发.NET Core应用程序,如图3 所示。我们正在努力解决的一个问题是,让Visual Studio与Visual Studio for Mac保持一致。现在,可以使用在Visual Studio中依靠的大部分功能,包括IntelliSense、代码导航、重构、单元测试和源代码管理集成。为了支持Web开发,我们为Visual Studio for Mac引入了Visual Studio HTML、CSS和JSON编辑器。大家可能会注意到,Razor文件(.cshtml)和JavaScript/TypeScript暂不受支持。不过,我们正在努力解决此问题,计划将在今后发布的更新中让Visual Studio for Mac支持它们。

图3:Visual Studio for Mac

8 工具兼顾新式云

随着技术不断发展,有一点是明确的,即越来越多的应用程序在创建之初就要在云中运行。也就是说,工具需要采用兼顾新式云的设计模式和做法,同时还要方便用户将应用程序从本地开发计算机快速转移到云中。 为了实现此目标,Visual Studio和Visual Studio for Mac均已内置支持,不仅支持直接发布到Microsoft Azure,还支持将应用程序打包为Docker容器。

直接发布到Azure:准备好将应用程序迁移到云中运行时,很可能希望尽可能轻松地在云中开始尝试执行此操作。使用Visual Studio和Visual Studio for Mac,都可以将应用程序直接从计算机发布到Azure App Service。App Service是完全托管式云环境,在其中运行应用程序,无需担心复杂的配置或基础结构管理。

具体操作真的很简单,只需右键单击项目并选择“发布”,即可使用Visual Studio或Visual Studio for Mac将应用程序从本地计算机发布到Azure App Service。系统会提示输入一些信息(如应用程序的唯一URL)。可以选择现有的应用服务计划(要为成员应用程序集合保留多少资源),也可以新建一个(如果还没有的话)。输入信息后,只需花几分钟时间,就可以在云中运行应用程序了。 

容器开发工具:关于新式云开发,我们逐渐明白的是,容器将彻底改变人们架构和生成软件的方式。使用容器,可以将应用程序及其所有依赖项(包括运行时副本)打包到一个单元中,这样能够保证对基础服务器的更改永远不会破坏应用程序。这会形成一种微服务体系结构模式。在此模式中,可以将应用程序中的每个逻辑单元都单独部署为一个容器,它们通过已定义的协议相互通信。这样一来,可以根据需要缩放应用程序的高需求部分,而无需付费缩放整个应用程序。这也意味着,修补程序只会影响正在更新的容器,而不会影响整个应用程序。

本着这种想法,我们为.NET Core设定的目标之一是,让它成为创建容器化微服务的主要运行时。Visual Studio、Visual Studio for Mac和Visual Studio Code全都支持将应用程序生成为Docker容器。(请注意,在本文撰写时,必须有Docker工具扩展,Visual Studio for Mac才提供Docker工具支持;Microsoft为Visual Studio Code提供Docker扩展,以支持创建Docker容器。)

若要生成Docker容器,需要安装适用于OS的Docker工具(可以访问docker.com了解详细信息并下载工具)。安装必需项后,只需在Visual Studio或Visual Studio for Mac中右键单击项目,再依次选择“添加”和“Docker支持”即可。这样可以向解决方案添加docker-compose项目,并将Dockerfile添加到项目中。借助这些资产,可以将项目生成到Docker容器中。然后,通过IDE运行应用程序时,就是在容器中(而不是直接在主机上)运行和调试应用程序了。令人鼓舞的是,本文介绍的发布到Azure App Service体验也支持发布Linux Docker容器。

上一篇:我想给你讲个程序员职场故事
下一篇:如何在.NETCore实现RedisClient
选择城市和中心
贵州省

广西省

海南省