C#和.NETCore的关系
⽬录
⼀、.NET 框架的背景
⼆、为什么选择 .NET Core(和 Xamarin)
三、.NET Core 的⽬标
四、多平台⽀持
五、快速发展和升级
六、程序占⽤空间⼩、部署简单、版本问题少
七、开源社区⽀持
⼋、改进的应⽤程序性能
⼗⼀、.NET 框架的未来
⼗⼆、Xamarin 的适⽤之处
⼀、.NET 框架的背景
.NET 框架最初是在 2002 年发布的。从编程框架的⾓度来说,它已经很“成熟”了,⼏乎包含了所有重要的、⼈们想要的、在主流编程语⾔中⽬前可⽤的功能。但是,认为 .NET 已经步⼊了“⽼年阶段”是错误的,“中年”可能是更恰当的描述。毕竟,C 和 C++ 的存在时间远远超过了 C#。
虽然 .NET 框架仍然是开发它设计之初⽤来创建的应⽤程序类型的绝佳选择,但在过去的 15 年中,计算机领域已经发⽣了很⼤的变化,我们将在下⼀节中进⾏描述。
⼆、为什么选择 .NET Core(和 Xamarin)
.NET 框架主要⽤于为运⾏ Windows 操作系统的计算机(包括服务器和客户端⼯作站)开发应⽤程序。在.NET 被引⼊时,微软在个⼈电脑操作系统中占据主导地位,智能⼿机还需要数年时间才会诞⽣。然⽽,随着时间的推移,Unix 和 Apple 都成功地削减了微软在计算机领域的市场份额。此外,⼀个更为重要的发展是向移动设备的巨⼤转移,⽽微软在移动领域的份额(⽆论是硬件还是软件)甚⾄可以忽略不计。第三个主要趋势是基于 Web 的应⽤程序(⽽⾮基于桌⾯的应⽤程序)的份额增加。
这三种趋势降低了 Windws 桌⾯应⽤程序的重要性,⽽有利于 Web 和移动应⽤程序以及在 Windows
以外的操作系统上运⾏的桌⾯应⽤程序的发展。这绝不意味着 Windows 桌⾯应⽤程序很快就会消失,只是⼤多数⼈认为未来最⼤的增长将来⾃ Web 应⽤和移动应⽤。
基于此,微软得出结论,它可以⽤ .NET 框架的⼀个基于云的、跨平台的、开源衍⽣产品,更好地解决 Web 开发以及 Linux 或 macOS 计算机的开发。它将这个新框架称为 .NET Core。⼤约在同⼀时间,微软收购了Xamarin 以解决 Android 和 IOS 等移动平台的开发问题。
你需要知道的是,⽆论是开发完整的 .NET 框架应⽤程序、.NET Core 应⽤程序还是 Xamarin 应⽤程序,你都可以使⽤ C# 语⾔。
源代码下载开源社区
三、.NET Core 的⽬标
以下列表总结了 .NET Core 的主要⽬标:
多平台⽀持
快速开发和升级
更⼩的应⽤程序占⽤空间
更简单的部署
更少的版本问题
开源社区⽀持
改进的应⽤程序性能
全新的开始
四、多平台⽀持
⾃计算机时代开始以来,编程框架的圣杯⼀直是“次编写,到处运⾏”。尽管⼤多数新的努⼒似乎让我们更接近这个⽬标,但是即便是现在,这个⽬标仍然令⼈难以企及。.NET Core 允许开发⼈员创建在 Windows 上运⾏的应⽤程序,并且只需进⾏少量的修改就可在 Linux 和 macOS 上运⾏。在撰写本⽂时,有⼀些测试版的 .NET Core 能够在 ARM 处理器(例如 Raspberry Pi)上运⾏。
多平台⽀持还包括在 Windows 以外的操作系统上进⾏开发。Visual Studio Code 是微软创建的⼀个新的集成开发环境,可以在 Linux、macOS 和 Windows 上运⾏。
五、快速发展和升级
过去,软件通常每两到三年就会升级⼀次主版本。例如,Windows 95 之后是 Windows 98,然后是Windows 2000。同样,Microsoft Office 2010 之后是 Microsoft Office 2013 和 Microsoft ffice 2016。在主版本之间,通常是⼀个或多个包含错误修复和⼩改进的服务包。
如今,⽤户希望能够加快改进速度。例如,电动汽车制造商特斯拉经常并且频繁地为其车辆中的软件提供在线升级。
.NET 框架的初始版本⼤部分是通过光盘进⾏分发的,再往前⼏年,主要的软件发布还需要使⽤⼤量的软盘。当互联⽹⾸次进⼈公众视野时,拨号速度通常为每秒 14.4 或 28.8 千⽐特。相⽐之下,今天,
⼤多数软件都是通过互联⽹分发的,速度⽐之前快⼏百甚⾄⼏千倍。应⽤程序加⼊了检查服务器是否有可⽤更新的功能,
并根据⽤户的偏好⾃动安装或提⽰⽤户选择安装时间。
应⽤程序通常以模块化⽅式设计,以便可以独⽴升级不同的组件,⽽⽆须更换整个应⽤程序。在这⽅
⾯,.NET Core 是⾼度模块化的,可以通过 NuGet 包⾃动升级,如下⼀节所述。
六、程序占⽤空间⼩、部署简单、版本问题少
.NET Core 基于 NuGet 包进⾏分发。包包是提供某些功能单元的代码库。包存储在 NuGet Galley上,可以根据需要从中下载。开发⼈员可以决定他们创建的包的模块化程度。
相⽐之下,.NET 框架现在包含 20000 多个类,在任何开发⼯作站和每个应⽤程序⽤户的计算机上都必须完整安装。通过仅指定相关的包,.NET Core 应⽤程序的总占⽤空间可以⽐完整的 .NET 框架应⽤程序⼩得多。不可否认,每个客户端⼯作站(每个版本)只需安装⼀次 .NET 框架,但相⽐之下,该安装过程是相当漫长的。
此外,要求运⾏ .NET 框架应⽤程序的所有⽬标计算机必须与开发应⽤程序的计算机具有相同的 .NET
版本,但是如果出于某种原因,⽆法在⽬标计算机上升级 .NET 框架,则可能会出现问题。这可能是由权限、公司政策或其他因素造成的,就需要为特定⽤户或者使⽤早期 .NET 版本的⽤户重新编译该应⽤程序。
相⽐之下,.NET Core 应⽤程序不会受到同样的约束。.NET Core 框架可以与应⽤程序代码并⾏发布,因此永远不会发⽣版本冲突。在⽬标计算机上已存在 .NET Core 框架(版本也合适)的情况下,应⽤程序可以选择使⽤现有代码,从⽽进⼀步减少应⽤程序的安装占⽤空间。
此外,由于每个应⽤程序都可以拥有⾃⼰的 .NET Core 库副本,因此可以在同⼀台计算机上使⽤不同版本的.NET Core 来并⾏运⾏多个 .NET Core 应⽤程序。这将允许在不同时间升级不同的应⽤程序,⽽⽆须同时升级所有的应⽤程序。
七、开源社区⽀持
⼀般认为开源软件的好处是成本更低、灵活性更⾼(包括可定制化)、⾃由度更⼤、安全性更⾼和责任性更强。
私有软件的源代码通常是⼀个严格保守的秘密。如果该软件包含错误或极端情况下的异常⾏为,那么该软件的⽤户⽆法知道软件内部是如何⼯作的。相⽐之下,任何拥有适当⼯具的⼈都可以看到开源软
件(的源代码),以便了解可能导致错误或异常⾏为的原因。有了这些知识,开发⼈员可以修复错误或修改⾃⼰的与这部分代码交互的代码,从⽽避免不良后果。
当有数百甚⾄数千名开发⼈员可以在错误发现的第⼀时间就进⾏修复时,这些修复就可能会⽐私有软件更快。⾄少在理论上,这可以产⽣更安全和更稳定的代码。
开发⼈员也可以⾃由地修改或扩展开源软件。与私有软件相⽐,这给⽤户提供了更⼤的灵活性。此外,如果将这些修改或扩展反过来提供给项⽬,则其他⽤户也可以从中受益。
⼋、改进的应⽤程序性能
通过基于现有 .NET 框架创建⼀个新的框架,但⼜不放弃完整的 .NET 框架,微软能够解耦过时和遗留的东西,同时实现⼀个更适合当今环境的新框架结构。
.NET Core 1.0 于 2016 年 6 ⽉发布,随后版本 1.1 于 2017 年 3 ⽉发布,增加了对⼏个新的操作系统发⾏版的⽀持,增加了⼀些新的 API,还修复了⼀些错误。
版本 2.0 于 2017 年 8 ⽉发布。此版本显著增加了 API 的数量,性能也有很⼤的改进。此版本还包括对Visual Basic .NET 的⽀持。如你所见,.NET Core 的改进速度⽐ .NET框架快得多。
⼗⼀、.NET 框架的未来
虽然你刚刚阅读了这些内容,但没有必要担⼼ .NET 框架的命运。微软承诺 .NET 框架将继续发展,并将继续在 Windows 操作系统的当前和未来版本中得到⽀持。因此,它将继续在 Windows桌⾯应⽤程序的开发中发挥关键作⽤,特别是在企业领域。如前所述,.NET Core 的优势使其成为 Web (ASP.NET Core)和通⽤Windows 平台应⽤程序开发的⾸选平台。同时,.NET Core 通常也是开发旨在 Linux 或 macOS 上运⾏的应⽤程序的最佳选择。
⼗⼆、Xamarin 的适⽤之处
Xamarin 是⼀个允许使⽤ C# 和 .NET 库开发原⽣ Android、IOS 和 Windows 应⽤程序的平台。在 PC
上,Xamarin 的开发是在 Visual Studio 上进⾏的(在启⽤附加功能之后)。在 Mac 上,开发是在 Xamarin Studio 的继任者 Visual Studio for Mac 上进⾏的。不管是什么 IDE,也不管⽬标平台是 Android、iOS 还是Windows,开发语⾔都是 C#。因此,Xamarin 扩展了可将 C# ⽤作开发语⾔的范围。
2016 年,Xamarin 被微软收购,随后 Xamarin 和 Visual Studio 捆绑在了⼀起。连 Visual Studio 的社区(免费)版也包括了 Xamarin。Xamarin SDK 现在已经是开源的了。微软将 Xamarin 称为“.NET 跨平台移动开发”。虽然从技术上讲,Xamarin 的功能远不⽌如此,但这超出了本⽂的范围。
原⽂链接:简单介绍 C# 和 .NET Core 的关系
(完)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。