从Visual Studio看微软20年技术变迁
前言
这个世界从来都不缺变革,从工业革命到晶体管和集成电路,从生活电器到物联网,从简陋人机到精致体验,我们在享受技术带来的便捷的同时,也在为复杂设计而带来的挑战和生产力下降而痛并快乐着。而迫切期盼的,就是趁手的工具。曾几何时,Visual Studio 一直就是软件开发的高效的标杆,从VB的简洁语法和简单的拖拽开始,Visual Studio 不断的完善,不断的适应快速变化的,加上成熟的生态,让微软世界里的各个伙伴们活的有滋有味。
近年来,微软开始了拥抱开源,投资云技术,在开发工具领域有明显的减持,这也让很多追随者感到不安。如今 Visual Studio 2017 的发布,给了开发者几点很明确的信号:
- 移动开发前景无限,解决方案多样化
- 跨平台服务器支持和服务器轻量化
- 开发过程标准化和开发效率持续提升
- 服务优于产品
作为微软工具的受益人,我们相信这是一个好的变化,有了变化,才有提升,才能提供更好的服务。
回顾
那么,在 Visual Studio 的20年发展历程中,都经历了哪些历程和技术变革呢?
根据微软的资料,第一个使用 Visual Studio 品牌销售的是 Visual Studio 97,后续版本(VS6)成为一代经典,即使今日依然还有企业和公司在使用;之后 Visual Studio 携 .NET 而来,开创了C#时代,WinForm 替代了 VB,控件替代了 OCX,ASP.NET WebForm 开始崭露头角;随着 Windows Vista 的惨淡,同时推出的新一代图形界面技术 WPF 也发展缓慢,为了促进 WPF 发展,微软使用 WPF 重写了界面,发布了 Visual Studio 2010,由于性能低下,资源消耗严重,这一版本流传一般,随后微软快速重构,发布了高性能的 Visual Studio 2012;随后,软件开发开始强调团队集成,增强了 TFS 在 Visual Studio 的话语权,每次发布都会随着发布 TFS 的新版本。因此我划分五六个技术时期来详细解说。
199x-2003年 COM/ActiveX 时期
微软在开发 Win3.x 系列的时候公开出来的一套架构体系,目的在于根据接口运行时动态加载实现,从而降低开发耦合。这一时期,主要的开发语言是C++,但是开发效率比较低,当时的技术前沿是RAD,VB(语言)和 ActiveX(技术)刚好搭上这一班车,同时正式让控件这个细分市场也开始崭露头角。随着90年代后期 Java 和 Web 的崛起,COM/ActiveX 受到了挺大的冲击,尤其是 web 编程,ASP 过于简陋,执行引擎 VBScript 并不能将 VB 中的 RAD 概念引入,而且原生 VBScript 语言本身并不成熟,限制较多,解决方案是在 ASP 中调用 COM/ActiveX,这样整个开发变得很复杂,慢慢消失在历史中。
2002-2010年 WinForm/WebForm 时期
实际微软开发 .NET 并不是非常顺利,一开始借鉴了很多 COM 的设计理念,但是很多基础设施并没有实现出来,导致早期的 ASP.NET 并不是很稳定,很多开发者为了考虑兼容性,甚至依然延续上一代产品的架构,通过导入 COM 组件来实现底层,而 ASP.NET 仅仅是一层表现。另一面,由于 C# 语言的开速发展,结合 RAD 概念而开发出来的 Designer(设计器)迅速让 WinForm/WebForm 成为开发利器,无论效率还是成品效果都获得较高的用户认可。
2007-2013年 WPF 时期
随着.NET平台的发展和成熟,此时 WinForm 用户开发抱怨界面的精致度问题和资源利用问题,但是这些是由于 WinForm 的底层实现仅仅做了一层 Win32 API 封装导致,所以很难通过增强和修补来提升用户体验;恰好微软推出其新一代操作系统,主打功能就是用户体验,为此,在大约2005年左右开启了 WPF 技术项目,正式在 VS2008 中开始主推。但是由于性能和复杂实现,导致 WPF 认可度并不高,而同期推出的 Silverlight 更是没有坚持几年,就淹没在历史尘埃中了。
2009-2016年 ASP.NET MVC 时期
WebForm 技术虽然因为 RAD大受欢迎,但是其 ViewStates 技术让大型项目和互联网项目深受困苦,如是一部分人开始重构现有的 ASP.NET 技术,将业务和展现分离,逐渐形成了早期的 ASP.NET MVC 概念,随后微软快速跟上,并推出 Razor 技术,并彻底重写了 HTTP 底层,彻底移除了 ViewStates,从此 web 开发不仅高效,同时也能符合 HTML 最新标准。到2012年,SPA 概念开始流行起来,越来越多的公司开始尝试前后端分离,这让 ASP.NET 有了一点危机,如是开始了 ASP.NET MVC WEB API 项目,在轻量级的 MVC 架构基础上,再一次简化,让基于 RESTful API 的应用能够在 .NET 圈里采用。
2014-至今 UWP(Universal Windows Platform)时期
说真的,我不是很愿意把这个列出来作为一个独立的技术圈来说,实际上这个 UWP 并没有多少新鲜的事物,更多的是一个概念,其表现层是 WPF 的 Xaml,底层是基于 projection 的一个通用平台概念(比如PCL和WinRT),唯一能称道的是后来加入的 Xamarin,将 C# 带到全平台移动开发领域,不过,目前仍属小众,还得继续努力。
2016-至今 .NET Core 时期
自2016年正式发布以来,.NET Core 表现越来越好,借助更加强化的 OWIN 接口,很好的将 web 开发做解耦,让第三方中间件有了更多的表现机会,但总体依然年轻,大规模采用仍需时日。
总结
时间荏苒,Visual Studio 品牌已经迈进20周年,从十几年前开始做 .NET 控件开发就每天和 Visual Studio 打交道,也算是经历了和见证了它的起起落落。如今,VS2017 正式宣布发布,并为此筹备了一场盛大的20周年庆典,也借此机会,祝愿 Visual Studio 和微软技术越发展越好。
从Visual Studio看微软20年技术变迁的更多相关文章
- visual studio 打开微软MVC3示例MvcMusicStore的详细修改方法
1.官方下载地址:http://mvcmusicstore.codeplex.com/ 2.直接打开项目后,引用中会有三个dll文件报错,分别是System.Web.MVC;System.Web.He ...
- Visual Studio 2017 针对移动开发的新特性介绍
欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~ Visual Studio是世界上最好的IDE之一,如果是 .NET世界,那就没有之一了(^_^),而最近推出的Visual S ...
- Visual Studio发展历程初浅调研
名称 内部版本 发布日期 支持.NET Framework版本 核心功能 竞争对手 优缺点 Visual C++ 1.0 Visual Studio的最初原型 1992 把软件开发带入了可视化开发的时 ...
- Visual Studio 20年
这是一个暴露年龄的话题,如果一个程序员从第一个版本开始使用Visual Studio的话,现在应该是40多岁的中年大叔了.我的程序员生涯是从Visual basic 6.0 (vb6)开始的,一晃就过 ...
- 微软加速Visual Studio和Azure DevOps 云升级
在 2018 微软技术暨生态大会(Microsoft Tech Summit)上,微软宣布围绕 Visual Studio 和 Visual Studio Code 开发平台提供一系列新功能与服务,并 ...
- [Azure] 使用 Visual Studio 2013 管理中国版 Azure 订阅
比较关心微软平台技术的朋友应该都知道,微软云服务(Microsoft Azure)以下简称Azure分为全球版和中国版,由于政府法规问题中国版的服务是由二十一世纪互联运营,整体来看中国版Azure和全 ...
- 关于Visual studio 2017安装方法的若干问题
因为忙于生活,好几年没有看关于编程方面的书了,这几天闲,就准备在电脑上装上VS的最新版本,查了查,最新版是VS2017,.搜了下网上安装后大小,还真不小.下载离线安装包,完全下载居然需要25G左右,无 ...
- Visual Studio各版本区别
Visual Studio 是微软公司推出的开发环境,Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务.智能设备应用程 ...
- 1,[VS入门教程] 使用Visual Studio写c语言 入门与技巧精品文~~~~下载安装篇
Microsoft Visual Studio是微软(俗称巨硬)公司出品的强大IDE(Integrated Development Environment 集成开发环境),功能强大齐全,界面舒服之类的 ...
随机推荐
- IOS拒绝Adobe的六大理由
苹果与Adobe的关系由来已久.事实上,Adobe的创始人还在他们众所周知的小车库里时,我们就碰过面了.苹果是他们的第一个大客户.我们将他们的Postscript语言应用于当时最新的Laserwrit ...
- 如何使用Ninja快速编译LLVM和Clang
在使用Make工具编译LLVM是非常耗时的.往往需要三四个小时.但是使用goolge开源的ninja编译LLVM只需要10到20分钟. 本文以llvm3.3为例,演示在linux上编译和安装过程. 第 ...
- Flex之HTML5视频播放解决方案
Flex的video类对于视频播放在ios操作系统下表现出不兼容,采用调用ios源生播放器的思路,那么怎么调呢? 话说Html5 和Flex是竞争关系,这次利用Html5的video标签实现ios播放 ...
- Python之日期与时间处理模块(date和datetime)
本节内容 前言 相关术语的解释 时间的表现形式 time模块 datetime模块 时间格式码 总结 前言 在开发工作中,我们经常需要用到日期与时间,如: 作为日志信息的内容输出 计算某个功能的执行时 ...
- JavaScript———从setTimeout与setInterval到AJAX异步
setTimeout与setInterval执行 首先我们看一下以下代码打印结果 console.log(1); setTimeout(function() { console.log(2); },1 ...
- 【小梅哥FPGA进阶教程】第九章 基于串口猎人软件的串口示波器
九.基于串口猎人软件的串口示波器 1.实验介绍 本实验,为芯航线开发板的综合实验,该实验利用芯航线开发板上的ADC.独立按键.UART等外设,搭建了一个具备丰富功能的数据采集卡,芯航线开发板负责进行数 ...
- react构建淘票票webapp,及react与vue的简单比较。
前言 前段时间使用vue2.0构建了淘票票页面,并写了一篇相关文章vue2.0构建淘票票webapp,得到了很多童鞋的支持,因此这些天又使用react重构了下这个项目,目的无他,只为了学习和共同进步! ...
- rabbitmq.config配置文件
%% -*- mode: erlang -*-%% -------------------------------------------------------------------------- ...
- 正则表达式中的match,test,exec,search的返回值
今天突然被问到了正则表达式,因为长时间不用突然不知道怎么用了,只知道有这么个东西.然后去网上查了一下,感觉写的不少,但解释的有点模糊,今天我来浅谈一下. 1,match的用法 A,在不加全局“g”的情 ...
- 关于企业选取ERP软件的建议
笔者以前在广州的一家叫速达软件的公司从事实施维护的工作,该公司是一家专注于ERP软件的公司,主要做进销存与财务的管理软件. 期间也对于各大企业有过一些接触,看到很多公司在购买这款软件之后与这家公司发生 ...