作为一种全新的开源和跨平台的开发平台,.NET Core 历经两年多的开发,终于在于2016年6月27日针对所有主流服务器和桌面操作系统发布 1.0 RTM 版本。.NET Core 是一种通用开发平台,它包含了自动内存管理和现代化高级开发语言等重要特性,这些都能让面向多个平台开发静态类型的高质量应用程序变得轻松。.NET Core 本身采用 MIT 协议开源,因此可以免费用于各种类型的商业和闭源项目。

全新的 .NET Core

不同于内置于 Windows 系列操作系统上的 .NET 框架,.NET Core 是微软从 2013 年启动新开发的一项技术,它与此前的 .NET 框架是不能直接兼容的。此外,与此前 .NET 的框架之间更显著的不同可能是, .NET Core 的完全开源,以及跨平台的能力。

.NET Core 是开源和跨平台的

.NET Core 本身的开发工作是基于开源项目代码大本营 GitHub 网站的,.NET Core 核心的代码都采用了 MIT 授权协议,也有少数项目采用了 Apache 协议。在前不久的“开发者论坛”活动现场,针对笔者提出的 .NET Core 开源理念的询问,微软开发工具事业部副总裁潘正磊女士回答说“它一开始就被设计为开源的”,这一理念很真诚地表达了 .NET Core 开源的决心,在过去两年多时间以内,核心开发团队也以行动证实了这一点。在 GitHub 上,与 .NET Core 相关的代码库有一百来个,分布在多个账户中。来自世界各地、包括中国的大量开发者都参与了 .NET Core 的开发过程:开发团队会每周与社区跟进进度、讨论计划,随时在线上回答其他开发者的提问,合并其他开发者贡献的代码。笔者也有幸见证这一过程,并实际参与到其中几个项目的贡献中。

跨平台的说法,在各种开发技术上一直以来饱受争议。从前,人们提出“编写一次,到处运行”的理念到最后变成“编写一次,到处调试”的笑话。以至于现在一提跨平台,大家都持一种怀疑的态度。事实上,对跨平台的需求是真实存在的:我们使用 Windows 或 macOS 从事开发工作,而使用 Linux 系统作为服务器环境;我们开发一套运行在服务器上的软件产品,希望将服务器平台的选择自由留给客户……因此对于现代化的轻量级开发技术栈而言,跨平台也成为一个基本要素。典型的轻量级开发平台大多是基于动态语言的,比如 PHP、Python 或 Node.js,这类动态语言正是由于“动态语言”的特性,在一些场合显得过于灵活、难以掌控,在工程的内建质量和开发效率上取得平衡并不容易。

开源跨平台的 .NET Core

对于 .NET Core 来说,跨平台这个目标并没有多少历史包袱。在开发 .NET Core 本身的过程中,开发团队很早就使用了持续集成的实践来保障代码针对多个平台的兼容能力。在开发进程中,团队同步维护多个示例项目,例如经典的 MusicStore,及时回归核心特性、保障稳定性。从两年之前开始,就陆续有 alpha、beta 和 RC 版本发布出来,让开发者提前体验到新运行时的同时,也借助 GitHub 开源平台及早收到来自社区的监督和帮助。借助这些一系列的措施,.NET Core 跨平台的能力有着充分的事实保障。

.NET Core 是适应趋势的生产力平台

新打造的 .NET Core 有一些关键特性,颇具吸引力。例如与特定操作系统无耦合,可编译为原生平台代码,运行效率极高;完全模块化, 内置包管理器用于管理依赖项;提供完整而标准化的命令行工具集,与 Docker 等新近技术能无缝集成。它虽然是全新的开发平台,却直接使用 C# 这样的明星静态语言的最新版本作为开发语言,充分运用 .NET 平台十几年积累的设计理念,汲取过去数十年各种编程语言和开发模型中的精华,才最终锻炼成适用于下一代开发工作的新平台。

由于它是一项新兴的技术,过往的类库不能直接与它兼容。为了解决一开始应用这项技术可能存在的框架和类库缺乏的问题,在开发 .NET Core 框架的同时,微软还投入资源以开源的方式重写了大量开发框架和常用类库,比如 ASP.NET MVCEntityFramework 等。不仅如此,一套面向非 Windows 环境的生态系统工具也在同期陆续地发布了出来,包括跨平台的编辑器 Visual Studio Code,高性能 Web 服务器 Kestrel 以及持续集成编译工具 Cake 等。从这些举动可以看出,微软在 .NET Core 上投入的诚意实在真挚可见。

在国外,不少开发者已经在积极响应 .NET Core 的路线,发布基于 .NET Core 的运行时的类库,提供兼容 .NET Core 的 SDK 等。常用的 XUnit.net、Moq、Autofac、MongoDB 和 RavenDB 等流行的类库和工具已经提供了对 .NET Core 的支持,或正在积极地开发新的版本。在国内 .NET Core 在社区中的交流学习也正在稳步铺开。很多开发人员已经着手文档翻译、源码学习,以及实践分享等工作。在博客园网站上已经出现不少关于 .NET Core 的文章,而在颇受关注的公众账号“.NET 跨平台”中,也已经发布了与 .NET Core 相关的文章。这些都预示着一个重要的新平台的来临,而且 .NET Core 这项新技术的成长一定是与社区合作密不可分的。

展望

软件工程在走过了野蛮生长,到达了基于云的互联网产业形态日趋成熟的今天,开发技术的发展已经从现实中收获了不少经验。从活跃的 Web 开发技术的发展足以反映出开发者对新技术的向往了。然而在大谈了 B/S 架构十余年之后的今天向回看,服务器端的基础开发技术在过去的五年、十年乃至更久的时间之内,并没有发生大的改善。新入门的开发者,仍然走着上一代开发者的老路,一步一步摸着石头过河——在网上搜索着上一代人写下的伴随他们成长留下的严重过时、版本错乱,甚至漏洞百出的文章和贴子,似乎津津有味,却是迷惑不解。

我们都需要新技术,那种能让新一代开发者认为“属于这个时代,并且面向未来”的新技术。请相信,.NET Core 就是你期待的那个新技术。它刚刚产生,却已胸怀古今,诗与远方唾手可得!

原文链接:http://www.jianshu.com/p/bfe0b6afcc11

.NET Core:面向未来的开源跨平台开发技术的更多相关文章

  1. .NET Core 首例 Office 开源跨平台组件(NPOI Core)

    前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...

  2. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Mac OS

    除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux Distribution(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供 ...

  3. 面向未来的友好设计:Future Friendly

    一年前翻译了本文的一部分,最近终于翻译完成.虽然此设计思想的提出已经好几年了,但是还是觉得应该在国内推广一下,让大家知道“内容策略”,“移动优先”,“响应式设计”,“原子设计”等设计思想和技术的根源. ...

  4. ASP.NET Core Windows服务开发技术实战演练

    一.课程介绍 人生苦短,我用.NET Core!大家都知道如果想要程序一直运行在Windows服务器上,最好是把程序写成Windows服务程序:这样程序会随着系统的自动启动而启动,自动关闭而关闭,不需 ...

  5. 移动应用开发技术选型:WebApp>HybridApp>NativeApp

    一:概念辨析 Web App:生存在浏览器里的应用,只能运行在浏览器里,宿主是浏览器,不是操作系统.资源一般都在网络上,就是一个触屏版的网站.如:微信公众号.不需要在设备上下载安装,只需通过浏览器即可 ...

  6. TOP100summit:【分享实录-WalmartLabs】利用开源大数据技术构建WMX广告效益分析平台

    本篇文章内容来自2016年TOP100summitWalmartLabs实验室广告平台首席工程师.架构师粟迪夫的案例分享. 编辑:Cynthia 粟迪夫:WalmartLabs实验室广告平台首席工程师 ...

  7. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]

    微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...

  8. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Docker

    对于一个 .NET Core开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker.Docker是Github上最受欢迎的开源项目之一,它号称要成为所有云应用的基石,并把互联网升级 ...

  9. iOS开发请您把握现在 — 面向未来学习

    iOS开发请您把握现在 — 面向未来学习 这一篇文章,如果你是一名iOS开发正好也处于开发晋升瓶颈迷茫期,不妨停下你的脚步,花五分钟看看,兴许有你需要的!文章结尾有彩蛋 群里常见的唱哀 iOS现在到底 ...

随机推荐

  1. (原创)即使最可怕的自然力量,也不失美丽——火山喷发(摄影,欣赏)

    文中图片摘自腾讯文化:www.cal.qq.com 1.Abstract     最可怕的力量也潜含着最美丽的风景奇观,虽然不能亲眼目睹,但透过大师的视角,一样也能体会到自然力量撼动的美丽. 2.Co ...

  2. SQL Server In-Memory OLTP 无损PPT分享

    我在今年DTCC上SQL Server内存数据库分享 PPT.感兴趣的朋友可以看下,无闩锁的数据结构使得热区问题成为过去,并行很好的维护了CPU Cache的命中率,Native代码执行使得CPU流水 ...

  3. Magicodes.WeiChat——多租户的设计与实现

    概要 多租户(Multi Tenancy/Tenant)是一种软件架构,其定义是:在一台服务器上运行单个应用实例,它为多个租户提供服务. 本框架使用的是共享数据库.共享 Schema.共享数据表的数据 ...

  4. 设计模式之美:Adapter(适配器)

    索引 别名 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):简单直接的对象适配器. 实现方式(二):实现双向类适配器. 别名 包装器(Wrapper) 意图 将一个类的接口转换成客户 ...

  5. Msbuild利用cpu多核加速

    msbuild /t:Rebuild /p:Configuration=Release /m /m 自动检测cpu数量启动对应数量进程

  6. 三国杀3v3心法——总述篇

    昔日,独孤求败前辈精研剑法,将其中奥妙化为独孤九剑,破尽天下武功.其中开篇总诀式提纲挈领,从宏观的层面阐述剑道,是领悟后面八式的基石,而之后各式则深入微观,可各破一类具体的武功.笔者亦曾苦心研究三国杀 ...

  7. EntityFramework IEnumerable,IQueryable ,Include

    使用IQueryable using (var db = new CentaStaffEntities()) { IQueryable<Staff> queryablestaffs = d ...

  8. MYSQL中约束及修改数据表

    MYSQL中约束及修改数据表 28:约束约束保证数据的完整性和一致性约束分为表级约束和列级约束约束类型包括:    NOT NULL(非空约束)    PRIMARY KEY(主键约束)    UNI ...

  9. cmd命令生成android签名证书

    cmd命令生成android签名证书,有空在写一篇eclipse导出带签名的apk,这里面包括生成新的签名.现在还是讲讲在cmd怎么操作生成签名证书. 1.dos下进入JDK的bin目录 运行如下命令 ...

  10. Reorder List

    题目: Given a singly linked list L: L0→L1→-→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→- You must do ...