在6月27日的红帽DevNation峰会上,微软正式发布了.NET Core 1.0、ASP.NET 1.0和Entity Framework Core 1.0,这些产品将全部支持Windows、OS X和Linux三种操作系统。其中.NET Core最受瞩目,这是一款跨平台、开源且模块化的.NET平台,可以用来搭建web应用、微服务、创立应用库和控制台。
本次发布的包括.NET Core Runtime、框架库及相关工具,和ASP.NET Core库。
.NET Core开源的由来
早在2004年,Xamarin公司的前身,Novell就开始研发如何实现.NET的跨平台化研发。Mono Project开源项目应运而生,陆续实现了在大部分Linux版本、Android甚至一些游戏开发平台上运行.NET应用。.NET Framework作为专利产品,Mono Project在一定程度上触犯了微软;这种做法因此也曾一度引起开源社区的广泛争议。
2014年,微软改变了.NET技术的发展策略,在connect();大会上发布开源.NET Core,称.NET Core的愿景是成为所有平台的单一代码库。2016年3月,微软正式收购Xamarin公司,其所有的Mono Project采用 MIT协议开源。
2016年6月27日,微软正式发布.NET Core 1.0。经过微软与红帽一年的合作,Linux企业版已支持.NET Core 1.0的全部特性;微软终于用实际行动证明了其打破Windows封闭局面的决心。
.NET Core的技术细节
.NET Core由以下组成:
- .NET runtime:提供运行环境,汇编码加载,垃圾回收等基础服务。
- 框架库:完全整合传统的.NET标准库。提供基础数据类型和不同类型应用的基础组件等。
- .NET Core SDK:相关系列的SDK工具和语言编译器
- .NET Core应用的命令行工具集。
而.NET Core的开发工具及平台,除了传统开发工具集的Visual Studio,开发人员还可使用红帽公司OpenShift的PaaS平台和微软的跨平台Visual Studio Code编辑器,后者可以运行于Linux、OS X和Windows系统。需要说明的一点是.NET Core 1.0目前仅支持红帽的企业版Linux。
.NET Core被视为.NET Framework的新一代版本。与现有的.NET Framework在使用上的区别是:.NET Framework采用大包式安装的方式,而.NET Core则是采用套件化(Packages)的管理方式,写应用程序只需要调用所需组件即可。
给开发人员和企业带来的好处
对开发者而言,这意味着更多的开发自由度:开发人员可以通过使用.NET Core快速搭建跨平台的应用。同时,还可以充分发挥.NET发展十四年来沉淀下来的特有优势。
微软在GitHub上面公布了与同类语言工具的对比检测结果,称使用.NET Core构建的应用运行速度是Node.js的八倍,Go的三倍,将会缩短响应时间、减少系统资源消耗。
此外,还可以使用C#支持的LINQ语言集成查询,少量代码即可实现对数据源执行复杂的筛选、排序和分组操作。以查询数据库的方式操作内存数据,使用基本查询表达式模式进行查询和转换 SQL 数据库、ADO.NET 数据集、XML 文档和流以及 .NET 集合中的数据。
对于企业而言,.NET Core跨平台意味着,在不改变架构的前提下,非Windows Server也可以运行.NET应用,.NET Core的工作流,可以被导入到Red Hat企业版Linux或者Windows Server;并且,这将为微服务构架提供更多的可能性,组件的语言开发可以是既有.NET又有Java,并运行同一个平台。
微软和红帽的初衷
对于微软而言,首先,这与微软扩张跨平台云愿景相符。微软称其重新梳理.NET,为的是顺应当今的云应用、微服务和容器技术技术趋势。其次,也可延续微软现有项目和产品,如Xamarin的微软开源项目、Windows Phone的开发、.NET Framework和ASP .NET等。
而对于红帽,这可以帮助其商业版的Linux以及OpenShift平台的推广。红帽博客上指出,只有商业版的Linux才全面支持.NET所有特性,并满足企业级别的需求。红帽认为,对那些寻求在Linux或者容器环境下使用.NET技术的企业而言,这将是一种新的平台选择。
开发社群的响应
总体上,社群的反应分为积极支持和中立观望两方。
一些已经使用过 .NET的 开发人员称开发总体感觉很好,C#具备快速、多线程、丰富标准库、泛型、支持动态静态语言等优点。Mono的使用者则认为.NET Core 1.0可以做得比Mono更好。因此这两类人群对于.NET Core持积极态度。不过,一些使用.NET Core的开发人员反应微软未能做到及时更新文档,偶尔会导致一些bug。此外,Visual Studio Code中的开发体验仍然不及Visual Studio。
对于尚未在技术栈中使用.NET的开发团队而言,大部分将持观望态度。技术栈应该不会立刻发生变化,团队不会紧随1.0最初版本开展研发工作。
未来还会有哪些变化
微软称将会继续在跨平台上努力,就硬件层面而言,除了已经完成的跨操作系统的X64和WindowsX 86平台, .NET Core正在向Arm64和ARM32平台发力。