回顾build 2016:你好,这是微软迄今最好的Windows开发平台

按:本文作者陈计节,ThoughtWorks 高级咨询师。多年的跨平台 .NET 开发者,全栈工程师,技术布道师。擅长互联网应用程序的设计、开发和运维等工作。

在最近的开发者大会(Build 2016)上,微软面向开发者分享了一系列更新。对于一名开发者来说,整个三天的内容,可以说是惊喜连连,令人激动不已。可贵的是,微软的开发者大会现在一再强调的是“任何平台”、“免费”这些满怀社区精神的特性。在了解完开发者大会的内容之后,我最直接的反应就是,Windows 平台将会成为比以往任何时候都更好的开发者的平台,同时 Windows 和 Office 等平台还有大量新兴的、珍贵的机会出现。

如果看一遍视频时间太久的话,那本文可以帮你了解其中特别值得关注的方面,请尽情分享这份开发者的盛宴吧。

Windows 里内置的 Ubuntu

Windows 10 年度更新中将会推送一个重要功能,即 Windows subsystem for Linux,它使得我们能够直接在 Windows 10 上运行用户态 Linux 程序。互联网企业多用 Linux 系列作为服务器操作系统,但我们开发人员日常的开发和工作环境却常常是 Windows。我们不得不一次次从“操作系统兼容性”的深坑里收拾好心情继续上路。实际上,Windows 将内置的是一个 Ubuntu 系统的核心部分,有了它内置在 Windows 中,开发工作一下子“跨过山和大海”了,不用切换环境就直接在 Windows 里完成开发工作。

Windows subsystem for Linux 的原理是通过在操作系统直接实现 Linux 系统调用来工作的,并不是虚拟机,所以启动飞快,性能也有保障。这样一来,Windows 就变成了一个结合体:既拥有 Windows 原本的使用体验,又拥有了工程师所需的 Linux 环境和工具。这基本上意味着在 Windows 上直接完成整个开发工作——不再像以前一样在 Windows 上开发,再跑到 Linux 上跑测试;或者忍受 Linux 糟糕的 GUI 和网页字体的开发体验了。

一边开着 Vim 撸 Python,一边还能不时瞟一眼 b 站的神吐槽,是不是有点小激动?

| Xamarin 与移动开发 DevOps

Build 大会第二天,红衣教主Scott 宣布Xamarin 将集成进 Visual Studio,并提供免费版。Xamarin 是先进的跨平台移动应用开发工具,能够使用统一的编程模型开发 iOS、Android 和 Windows UWP 应用程序。此前它一直是收费的,还挺贵的——二月刚被微软收购,在本次 Build 大会上,即宣布会集成进 Visual Studio,包括免费的社区版本。

Visual Studio 2015 中已经支持了基于 Apache Cordova 开发 Hybrid 移动应用。但这两年,经过了著名的 Facebook 将 HTML5 应用程序向原生应用的改写这样的不成功案例之后,社区越来越对 Hybrid 应用程序的兼容性、性能和安全性等方面存在一些疑虑,所以Hybrid 应用方案往往只在一些局部会适当加以运用。

Xamarin 则是完全不同的工具,它是已被大量案例证明是可行的原生移动应用开发方式。运用 Xamarin 能够开发直接调用设备 API 的原生应用程序,它还提供了完整的界面设计器(包括故事板),并且这次还将带来运行在 Windows 上的 iOS 模拟器,这样就能做到完全就不用 Mac 就能开发 iOS 应用了。目前 Xamarin 在国内还没有受到大量的关注和运用,但随着其集成进免费的 Visual Studio 社区版,Xamarin 一定会成为移动开发的重要工具。

另外,Xamarin 线上还提供了云测试服务,其中包含上千种机型的测试环境可用于运行自动化测试。而且这套线上服务将会与免费的 Visual Studio Online 服务集成,那样整个移动开发的 DevOps 也就齐活儿了。

| 应用程序新方向:.NET Core 和 UWP 应用程序平台

.NET Core 要火,相信我。因为 .NET Core 是个新兴事物,它是微软新开发出来的新项目,它从一开始就是开源、跨平台的,它完全是基于社区协同开发的,代码就托管在 Github 上。具体来说,它是一个轻量级、模块化、向面云的新平台;与以往完整的 .NET 运行时不能直接兼容;直接使用最新版本的 C# 语言和工具链;汲取了完整的 .NET 运行上一些有名框架的重要特性,剔除了那些过时的、过度抽象的、与特定操作系统和软件绑定的特性。可以说,.NET Core是一个“脱胎换骨,重新做人”的新事物

社区中支持 .NET Core 的各种第三方工具也在快速地增长,已经有支持它的 Docker 镜像和 Yeoman生成器等工具,我们可以直接使用 Sublime Text 这样的编辑器来开发 .NET Core 应用程序,而且JetBrains 已经在为它开发跨平台IDE 了。

.NET Core 应用程序的结构与 Node.js 等典型的轻量级应用很类似,都是运行时+应用程序+第三方程序包 的形式,它的运行时只有 10 M 大小。本次 Build 2016 大会期间,微软在展示各种 Web 应用的 Demo 时都已经默认采用 .NET Core 了。

在 Windows 平台上,微软展示了他们持续打造“通用应用平台”(UWP)的动作,比如将提供从 Win32 应用程序向 UWP 应用的转换工具。开发 Windows 应用一直以来都有五花八门的技术,但现在 Windows 平台的终端除了 PC,其他类型的设备也多了起来。于是微软开始推介这样一个新的概念,希望开发者能够“一次开发,到处运行”,兼容性的部分交给 Windows 来解决。同样,微软现在公开展示的应用程序也尽量地改为了 UWP 应用程序,连上面提到的 Ubuntu 子系统中的 Bash 终端都以 UWP 应用程序的形式提供。

.NET Core 这个没有历史包袱的新平台,加上 C# 这样优秀的编程语言,想不火都难;而 UWP 作为微软主推的应用程序模型,对于面向 Windows 用户的应用程序来说,是一个明确的方向。

Office 和 Edge 浏览器插件开发中的新机会

我已经很长一段时间没有关注 Office 开发了,但这次 Build 2016 中分享的关于跨平台的 Office 插件开发的消息还是令我耳目一新。总体来说,我认为 Office 插件是一个潜力无限,市场广阔的方向

以往我们可以使用 VBA 和 Interop 等技术来开展 Office 相关的开发,但那些开发工作对开发人员的门槛较高,编程语言运行时方面的限制更让这些定制化应用很难跨平台。于是过去我们往往只在一些企业内部的需求中会考虑一些定制的 Office 开发。新的 Office 插件平台现在允许开发人员使用熟悉的 Web 开发技术来实现、并提供了跨平台的开发、调试与发布能力——就像开发一个浏览器插件一样简单!另外,新的 Office 插件所跨的平台不光包括各种操作系统,还包括在线的 Office 365 和 iPad 等非桌面环境。

 

Office 在全球有十几亿安装量,其深度用户大多都是各类企业用户,对信息打磨、数据处理的需求十分丰富,而 Office 这套新的插件平台直接将所有 Office 用户与开发者分享。对开发者而言,这其中的机会将是不可斗量的。

上面提到浏览器插件,其实以往开发 IE 的插件并不是一件简单的事,倒是 Chrome 浏览器的插件开发令人轻松了不少。是的,Office 的插件开发就像开发一个 Chrome 插件那样简单;还不止如此,Edge 浏览器最近也添加了对插件的支持,而 Edge 插件的开发机制不光与 Chrome 插件的开发一样简单,甚至大量 API 都能与 Chrome 浏览器 API兼容。Edge 作为 Windows 10 操作系统中的默认浏览器,其用户量也会稳步上升,因此它必然也是一个不可小觑的平台。

除了上面的各个方面,微软还分享了一些其他工具和服务,例如用于构建智能对话机器人的 Bot 框架和智能识别的 Cognitive 服务等。这些工具切实地解决了很多难题, 提高了开发人员的效率。另外,我们看到微软在运用新的思路来打造已有平台、持续改善其产品的同时,也在努力降低开发应用程序的难度,同时给开发者创造了更多机会。

微软在其 Visual Studio 网站上展示的服务思路是 “为任何开发者的任何应用程序打造的工具”,从本次开发者大会分享的内容来看,着实诚意满满,各位开发者不应该错过!

相关文章: 

  • 3分钟看完Build2016 Day 1 Keynote

  • 微软Build 2016开发者大会--兑换承诺

  • Microsoft Build 2016 Day 1 记录

  • 3分钟看完 Day2 Keynote

  • Microsoft Build 2016 Day 2 记录

  • Build 2016,你可能忽视的几个细节

  • 图片中的Build 2016

  • 复盘Build 2016:不要错过微软给.NET开发者的这些福利

  • 微软CEO纳德拉恢弘计划:让开发者始终忘不了微软

原文地址:http://www.leiphone.com/news/201604/WuXXqoN6GuJXCOvj.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解多线程(二)—— Java的对象模型

转载自 深入理解多线程(二)—— Java的对象模型上一篇文章中简单介绍过synchronized关键字的方式,其中,同步代码块使用monitorenter和monitorexit两个指令实现,同步方法使用ACC_SYNCHRONIZED标记符实现。后面几篇文章会…

8.1-CPU结构(学习笔记)

【README】 本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐; 【1】CPU结构 Cpu的首要功能就是解释指令;功能列表如下: 1) 取指令:从内存中读取…

生物信息 python 书籍_用python做生物信息数据分析(1-环境准备)

写在前面四五年前,接触生物信息的时候,阴差阳错,我选择用perl。事实上,直到嫌我,我还是认为我当初的选择,完全正确!。在做一些小文本的快速处理上,perl在我看来,从来最优…

8.2-指令周期(学习笔记)

【README】 本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐; 【1】指令周期 【1.1】指令周期概述 1)指令周期:取出并执行一条指令所需的全部时间&#xff1…

深入理解多线程(三)—— Java的对象头

转载自 深入理解多线程(三)—— Java的对象头上一篇文章中我们从HotSpot的源码入手,介绍了Java的对象模型。这一篇文章在上一篇文章的基础上再来介绍一下Java的对象头。主要介绍一下对象头的作用,结构以及他和锁的关系。 Java对象…

python tkinter 背景色改变不了_python - Tkinter背景颜色问题 - 堆栈内存溢出

我有一个脚本,其中包含Tkinter模块,我想每隔3分钟更改一次背景颜色,例如绿色3分钟,然后橙色,然后红色。 我有显示绿色的代码,但无法更改它。当我在代码中创建函数时,会遇到一些不同的错误&#…

回顾微软近年来对于Linux和开源的策略

2014年十月,在旧金山举办的一场活动中,微软的CEO Satya Nadella向公众表示,微软“爱Linux”。作为昔日的竞争对手,微软对Linux的态度逐渐从敌对转变为合作。自那次发言以来,微软在开源方面频频重拳出击,似乎…

深入理解多线程(四)—— Moniter的实现原理

转载自 深入理解多线程(四)—— Moniter的实现原理本文是《深入理解多线程系列文章》的第四篇。点击查看原文,阅读该系列所有文章。 在深入理解多线程(一)——Synchronized的实现原理中介绍过关于Synchronize的实现原理…

(转)Spring Boot通过ImportBeanDefinitionRegistrar动态注入Bean

转自: Spring Boot通过ImportBeanDefinitionRegistrar动态注入Bean - 掘金在阅读SpringBoot源码时,看到SpringBoot中大量使用ImportBeanDefinitionRegistrar来实现Bean的动态注入。它是Spring中一个强大的扩展接口。本篇文章来https://juejin.cn/post/6…

通过图书编号查询python_Python图书接口调用代码实例

1.[代码][Python]代码#!/usr/bin/python# -*- coding: utf-8 -*-import json, urllibfrom urllib import urlencode#----------------------------------# 图书电商数据调用示例代码 - 聚合数据# 在线接口文档:http://www.juhe.cn/docs/50#-------------…

深入理解多线程(五)—— Java虚拟机的锁优化技术

转载自 深入理解多线程(五)—— Java虚拟机的锁优化技术本文是《深入理解多线程》的第五篇文章,前面几篇文章中我们从synchronized的实现原理开始,一直介绍到了Monitor的实现原理。这一篇在前几篇的基础上,深入介绍一下…

Visual Studio Code 1.0正式发布

Visual Studio Code 是一个运行于 OS X,Windows 和 Linux 之上的,针对于编写现代 web 和云应用的跨平台编辑器。 这标志着 Microsoft 第一次向开发者们提供了一款真正的跨平台编辑器。虽然完整版的 Visual Studio 仍然是只能运行在 Windows 之上&#xf…

springboot使用ImportBeanDefinitionRegistrar 动态注册bean

【README】 1.采用 ImportBeanDefinitionRegistrar 动态注册bean,应用场景有: 如 一个后端服务需要用到多个 rabbitmq集群客户端,kafka客户端;这时就需要手动注册多个同类型的bean,但不同beanName,并用 …

python 线性回归函数_Python实现的简单线性回归算法实例分析

本文实例讲述了Python实现的简单线性回归算法。分享给大家供大家参考,具体如下:用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果:> summary(fit)Call:lm(formula weight ~…

UWP应用模型概述

Andrew Clinick是微软的一名项目经理,在Build 2016大会上,他概括地讲述了通用Windows平台(UWP)应用模型的新特性。今年的其中一个亮点是,代号为Centennial的项目实现了桌面应用程序到UWP应用的转换。 Andrew一开始就阐…

8.3-指令流水(学习笔记)

【README】 本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐; 【1】如何提高机器速度 1 提高访存速度多体并行:对多个存储体进行交叉访问,在一个主存周期中&am…

Java虚拟机是如何执行线程同步的

转载自 [译]Java虚拟机是如何执行线程同步的想介绍下synchronized的原理,但是又不知道从何下手,在网上看到一篇老外的文章,介绍了和线程同步相关的几个基础知识点。所以想把它翻译一下给大家看看。相信看过这些基础知识之后再看我后面要写的s…

python开方运算符_Pytorch Tensor基本数学运算详解

1. 加法运算示例代码:import torch# 这两个Tensor加减乘除会对b自动进行Broadcastinga torch.rand(3, 4)b torch.rand(4)c1 a bc2 torch.add(a, b)print(c1.shape, c2.shape)print(torch.all(torch.eq(c1, c2)))输出结果:torch.Size([3, 4]) torch.…

重新审视演进式设计

演进式设计是一种理念,它曾经颠覆过传统笨拙的计划式设计,如今,它依旧焕发着生命力,但我们不能以静止的眼光去看待它,而应该尝试着引入一些新的方法、框架乃至技术。 ♦ ♦ 说起来,所谓Evolutionary Design…

9.1-微操作命令的分析(学习笔记)

【README】 本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐; 1)完成一条指令需要4个周期: 取值周期;间址周期(或有)&…