按:本文作者陈计节,ThoughtWorks 高级咨询师。多年的跨平台 .NET 开发者,全栈工程师,技术布道师。擅长互联网应用程序的设计、开发和运维等工作。
近年来,微软坚持为社区提供更多灵活性,并以更开放的思路重构其已有平台,一改从前封闭高冷的姿态,迅速调整战略以适应新的产业格局,向全世界展示了一个灵动敏捷,积极向社区看齐的新形象。
在最近的微软开发者大会(Build 2016)上,微软展示了其最近获得的成就,以及各个产品和平台上针对开发者的更新,还宣布了一系列让开发者们激动不已的消息,比如将在 Windows 上包含能够直接执行 Linux 程序的子系统,Xamarin 将会免费并且开源等。
开发者从 Build 2016 中获得的,不仅是微软赠予的高效的工具,更是一种求和共赢的心态,一种面向未来的胸襟。这份礼遇,与平台无关,与编程语言无关,更与 IDE 或编辑器无关。
在互联网和云的时代,由于有了新的架构方法和开发方式,语言和平台的选择显得没有那么重要,我们已经掌握了太多可以跨语言和平台完成协作的技能。在这个惜时如金的时代,我们需要的是开发效率更高的工具,是能够用于迅速构建轻量级应用程序的框架。
技术的多样化正像人与人之间的差异:有的人默默地研究、分享,有的人却会纠集一些技术之间的优劣之比、是否之争。技术之间的比较是有裨益的,有助于为设计决策提供依据。但高下之分大可没有必要,不同的技术可以用于解决不同场合的问题,在合适的时机,它们都可能成为得力的工具。
微软已经为非 .NET 开发者和非 Windows 平台提供了大量的工具和产品。
比如发布基于 Linux 操作系统的 Sql Server 数据库,在 Windows 中引入 Linux 子系统并内置 Bash 命令行终端,在 .NET Core 的开发中将跨平台作为第一要素考虑,并官方提供基于 Sublime Text 等第三方编辑器作为开发环境的示例等。对于微软来说,是不是 .NET 开发者,是不是基于 Windows 平台早就没有那么重要了。
不过,如果你想找机会尝试“微软技术”的话,我仍然乐于分享:如果听说“C# 是优雅高效的静态语言”的话,那么在 .NET Core 跨平台框架发布的时候,你只需要花几分钟就能亲自体验一把;如果你认为在 OS/X 上基于 Linux 相关开发更接近仿真环境,你也可以关注 Windows 上要引入 Linux 子系统的细节;在你觉得 Sublime Text 的价格不菲的时候,不妨考虑免费的 Visual Studio Code 在你已有经验的基础之上,可能还附送了令人欣喜的特性;在你需要在构建跨平台移动应用希望共享 80% 代码的时候,Xamarin 提供的灵活性,你值得拥有。
微软并不是恶魔,过去不是,以后也不会是。微软提供了这许多便利的工具和方法可以为你所用,多试一试总是好的。当你开始从微软提供的工具中发现价值,你也就能够切实感受到来自微软的诚意,也就能够感受到一个开放的新微软了。
对于 .NET或 Windows平台的开发者而言,无论从哪个角度来看,本次Build 大会带来的都是“全方位无死角”的利好消息。
在Build大会上展示的基于.NET的Web应用程序现在都已经换成了开源且跨平台的 ASP.NET Core示例。在即将到来的 Windows 10 更新中,我们将会看到 Linux 子系统,这将让 .NET 和 Windows 开发者更近地接触到跨平台特性,因而大大降低开发跨平台的应用程序的难度。Xamarin 的免费和跨平台,不仅让“宇宙第一 IDE”Visual Studio 默认拥有开发全平台原生(Native)应用程序的能力,同时还意味着 Mono 项目现在也由微软主导,这将使得其与 Windows 平台的 .NET 有更好的兼容性,以及更快速的同步更新能力。
不过,云的重要特性是平台无关。Visual Studio 支持的目标平台,编程语言的应用模型也越来越多。虽然 .NET 平台正在变得比以往更好,但对于目前的 .NET 开发者来说,还有一些挑战需要面对。
一直以来,.NET 平台由于其自身庞大复杂,应用框架、开发工具和操作系统各个方面的关联紧密等内在原因而备受质疑。这也使得在互联网和云的大势所趋之下,.NET 平台被不少人认为不适合新的趋势。
为了解决 .NET 平台“天生”的问题,微软采取了一系列的动作,包括重写 .NET 以使其更轻量级、提供跨平台的能力,并将其完全开源;提供免费的社区版 Visual Studio,并开发跨平台的开发工具 Visual Studio Code。几年下来,不仅解决了大量一直被人诟病的问题,还保持了 .NET 平台高效的开发效率,优雅的编程语言特性等独有的优势。
另一方面,一直被看作企业开发首选的 .NET 平台也因为开发人员素质良莠不齐、对跨平台和开源不够友好等外在原因被不少人不看好。这显然需要开发者自己去努力:刷新自己的意识,更新自己的技能。
.NET 开发者需要理解:
总会有更灵活高效的方案
社区合作是重要的技术活动
跨平台的灵活性并非没有必要
云时代,不仅在高端峰会,还在代码的字里行间
服务器上、浏览器里和终端设备都已进入新时代
如果还有开发者固守陈规,守着 Web 三层架构和 Windows 窗体应用程序模型准备吃铁饭碗的话,那么很快就会被新一代的开发者所替代,也必将会被技术本身所抛弃。一些人,他们对新出现的事物麻木无感,抱怨要学的技术太多、更新又太快。当软件有新的版本发布出来时,他们的态度往往是“新版本还不够稳定,等一阵子再说”。我希望 .NET 开发者不要成为这样的人。
不管是从这几年的开发者大会上的分享,还是线下对开源社区的参与,以及对已有产品的调整,我们都能看到微软在切实地支持开源运动的同时,其自身也比以往更开放。这个软件巨人已经认识到,继续采用过去的封闭平台、大包大揽的思维已经不适用于新的格局了。更开放的微软在向世界展示一个全新的形象:他已经使用新的思路完成了转变,他将与社区一同努力,与开发者一起建设共同的基于云的未来。
即使像微软这样一家拥有庞大产品线和历史包袱的软件企业都能华丽转身,作为开发者,我们就更能够开阔思路了。当我们好好利用微软和社区一起构建的更健康开放的生态,定能游刃有余,决胜千里。(编辑:小芹菜)