C#和.NET Core

一. .NET框架的背景

.NET框架最初是在2002年发布的。

从编程框架的角度来说,它已经很成熟了,几乎包含了所有重要的、人们想要的、在主流编程语言中目前可用的功能。

但是,认为.NET已经步入了”老年阶段”是错误的,”中年”可能是更恰当的描述。

毕竟C和C++的存在时间远远超过了C#。

虽然.NET框架仍然是开发它设计之初用来创建的应用程序类型的绝佳选择,但在过去的15年中,计算机领域已经发生了很大的变化。

二. 为什么选择.NET Core(和Xamarin)

.NET框架主要用于为运行Windows操作系统的计算机(包括服务器和客户端工作站)开发应用程序。

在.NET被引入时,微软在个人电脑操作系统中占据主导地位,智能手机还需要数年时间才会诞生。

然而,随着时间的推移,Unix和Apple都成功地削减了微软在计算机领域的市场份额。

此外,一个更为重要的发展是向移动设备的巨大转移,而微软在移动领域的份额(无论硬件还是软件)甚至可以忽略不计。

第三个主要趋势是基于Web的应用程序(而非基于桌面的应用程序)的份额增加。

这三种趋势降低了Windows桌面应用程序的重要性,而利于Web和移动应用程序以及在Windows以外的操作系统上运行的桌面应用程序的发展。

这绝不意味着Windows桌面应用程序很快就会消失,只是大多数人认为未来最大的增长将来自Web应用和移动应用。

基于此,微软得出结论,它可以用.NET框架的一个基于云的、跨平台的、开源衍生产品,更好地解决Web开发以及Linux或macOS计算机的开发。

它将这个新框架称为.NET Core。

大约在同一时间,微软收购了Xamarin以解决Android和IOS等移动平台的开发问题。

基于本书的学习目标,你需要记住的是,无论是开发完整的.NET框架应用程序、.NET Core应用程序还是Xamarin应用程序,你都可以使用C#语言。

三. .NET Core的目标
  • 多平台支持
  • 快速开发和升级
  • 更小的应用程序占用空间
  • 更简单的部署
  • 更少的版本问题
  • 开源社区支持
  • 改进的应用程序性能
  • 全新的开始
四. 多平台支持

自计算机时代开始以来,编程框架的圣杯一直是”一次编写,到处运行”。

尽管大多数新的努力似乎让我们更接近这个目标,但是即便是现在,这个目标仍然令人难以企及。

.NET Core允许开发人员创建在Windows上运行的应用程序,并且只需进行少量的修改就可在Linux和macOS上运行。

多平台支持还包括在Windows以外的操作系统上进行开发。

Visual Studio Code 是微软创建的一个新的集成开发环境,可以在Linux、macOS和Windows上运行。

五. 程序占用空间小、部署简单、版本问题少

.NET Core基于Nuget包进行分发。

包是提供某些功能单元的代码库。

包存储在NuGet Gallery上,可以根据需要从中下载。

开发人员可以决定他们创建的包的模块化程度。

相比之下,.NET框架现在包含2000多个类,在任何开发工作站和每个应用程序用户的计算机上都必须完整安装。

通过仅指定相关的包,.NET Core应用程序的总占用空间可以比完整的.NET框架应用程序小得多。

不可否认,每个客户端工作站(每个版本)只需安装一次.NET框架,但相比之下,该安装过程是相当漫长的。

此外,要求运行.NET框架应用程序的所有目标计算机必须与开发应用程序的计算机具有相同的.NET版本,但是如果出于某种原因,无法在目标计算机上升级.NET框架,则可能会出现问题。

这可能是由权限、公司政策或其他因素造成的,就需要为特点用户或者使用早期.NET版本的用户重新编译该应用程序。

相比之下,.NET Core应用程序不会受到同样的约束。

.NET Core框架可以与应用程序代码并行发布,因此永远不会发生版本冲突。

在目标计算机上已存在.NET Core框架(版本也合适)的情况下,应用程序可以选择使用现有代码,从而进一步减少应用程序的安装占用空间。

此外,由于每个应用程序都可以拥有自己的.NET Core库副本,因此可以在同一台计算机上使用不同版本的.NET Core来并行运行多个.NET Core应用程序。

这将允许在不同时间升级不同的应用程序,而无须同时升级所有的应用程序。

六. 开源社区支持

一般认为开源软件的好处是成本更低、灵活性更高(包括可定制化)、自由度更大、安全性更高和责任性更强。

私有软件的源代码通常是一个严格保守的秘密。

如果该软件包含错误或极端情况下的异常行为,那么该软件的用户无法知道软件内部是如何工作的。

相比之下,任何拥有适当工具的人都可以看到开源软件的源代码,以便了解可能导致错误或异常行为的原因。

有了这些知识,开发人员可以修复错误或修改自己的与这部分代码交互的代码,从而避免不良后果。

当有数百甚至数千名开发人员可以在错误发现的第一时间就进行修复时,这些修复就可能会比私有软件更快。

至少在理论上,这可以产生更安全和更稳定的代码。

开发人员也可以自由地修改或扩展开源软件。与私有软件相比,这给用户提供了更大的灵活性。

此外,如果将这些修改或扩展反过来提供给项目,则其他用户也开源从中受益。

七. 改进的应用程序性能

大多数情况下,.NET框架应用程序和.NET Core应用程序都使用即使编译器,在应用程序启动时动态地将IL代码转换为机器代码。

虽然这通常提供了可接受的性能,但.NET Core应用程序可以预编译为Windows、Linux或macOS上的本机代码。

虽然此过程的结果会因许多因素而有所不同,但在某些情况下,这确实可以显著提高应用程序的性能。

八 .全新的开始

通过基于现有.NET框架创建一个新的框架,但又不放弃完整的.NET框架,微软能够解耦过时和遗留的东西,同时实现一个更适合当今环境的新框架结构。

九. .NET Core的发展

.NET Core1.0于2016年6月发布,随后版本1.1于2017年3月发布,增加了对几个新的操作系统发行版的支持,增加了一些新的API,还修复了一些错误。

版本2.0于2017年8月发布。

此版本显著增加了API的数量,性能也有很大的改进。

此版本还包括对Visual Basic .NET的支持。

如你所见,.NET Core的改进速度比.NET框架快很多。

订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部