Visual Studio 20周年软件趋势随想

从2002年开始,.net让开发人员能快速构建和部署应用程序,便捷的开发windows和web服务器应用,同时著名的hacker Miguel de Icaza ,Miguel 为了GNOME项目启动了另一存志高远的项目:Mono,一个Microsoft .NET Framework的自由GNU/Linux实现,我是循着Miguel的指引踏上了.net开发之路,一路陪伴Visual Studio 走过15年的软件开发历程,在这Visual Studio 20周年之际,有感而发写下这些感想,期待将来的3年时间是验证这些感想。

.NET开发目前在中国大陆地区很艰难,经常耳闻一些公司转Java,不妨有很多成功案例,比如京东,京东转的非常成功,它是一个有理想的互联网公司,.Net的在京东企业中发展中扮演的角色是快枪手,在企业刚起步时候选择易上手的.Net无非是最好的选择之一,但是因为.Net的高度封装,让.Net高级人才在市场上十分稀少,而且企业在创立之初应用.net的时候也不会考虑架构之类的问题。可是随着业务越来越复杂,.Net开发人员无法解决和满足市场的需求和项目中出现的技术难题,技术债随之产生,解决不了问题随之一些程序员便让.Net背锅,再加上.Net的新技术推陈出新,当年的.NET的老爸微软偏偏让.NET偏居于Windows一脚,虽然有Mono也是跨平台,但是那时候的Mono远没有现在这么成熟,甚至于.NET开源社区受到了微软的打压,在这个互联网开放开源的时代,微软逆势而为,它也付出了重大的代价,错过了整个互联网高速发展的时代,2014年之后微软换了CEO,全面拥抱Linux,.NET Core开源,收购Xamarin,构建起了全新的生态,微软的重心转移到了Azure,微软算是抓住了云计算时代,微软市值已经增长到了5000亿美金,才次达到他的顶峰,.NET Core也经过了2年的迭代,5月份发布.NET Core 2 Preview,也就会补齐各类API,再一次进入主流开发平台,这就是趋势,验证一句老话:顺势者昌,逆势者亡,下面这张图非常好的注释了微软的走向。

     上面这张股票走势图很形象的表明了微软的技术方向的趋势走势,Steve Ballmer是个销售出身的CEO,缺少了科技公司CEO应有的科技趋势洞察力,基于商业的考虑让着跨平台基因的.NET困死在Windows之上,互联网浪潮的到来,微软却还守在卖license,导致和互联网浪潮插身而过,在中国市场更是一败涂地,导致这么好的.NET技术无人问津,很多国内社区对.NET技术呲之以鼻,但是俗话说“三十年河东、三十年河西”。 .NET 技术在国外像微软的股价一样已经崛起,国内现在正是.NET技术的最低谷,但是我们看到的是.NET技术崛起的趋势,纵观国内技术社区的动向也在表明这个趋势正在转向,Visual Studio 2017上线发布,国内主要的开发者社区也表达庆贺,并将与微软中国携手展开多项活动,加速推动国内开发者的升级转型。拥有超过4,500万会员、国内最大的开发者社区CSDN创始人蒋涛先生表示:“诚挚祝贺VISUAL STUDIO 2017新版本的发布,祝贺VISUAL STUDIO 20岁生日快乐!CSDN创建于1999年,这18年来社区发展壮大的历程,与中国VISUAL STUDIO程序员的成长紧密相随,他们在CSDN上不断学习、解惑、交流和成长,这些一路走来的朋友们,如今大多已成长为各行业中IT技术势力的骨干力量。与微软中国一路走来、并肩奋斗,我们感到非常荣幸。”对于微软近三年在开发技术领域,坚决走向开放、开源与跨平台的战略方向,蒋涛很是赞同,他相信这个方向对于推动中国传统企业与开发者的数字转型会更有帮助。基于此,CSDN将与微软中国继续携手合作,为国内VISUAL STUDIO开发者们,打造一条推动个人转型并助力企业转型的康庄大道。“我们希望让专注于网页开发的.NET程序员,能够借助VISUAL STUDIO所提供的新价值,快速转型成为安卓和iOS的移动APP开发者”,蒋涛说:“在技术培训外,我们更希望藉由大规模行业转型成功案例的征集,快速积累一批由开发者领头的数字转型行业先驱,进而影响更多的传统行业,通过运用来自互联网大潮的新科技与新模式,让传统行业升级换代。这个过程中,程序员自身能力的转型会是关键因素,同时微软对VISUAL STUDIO工具的创新也将起到重要推动力量。”

      闻名于国内架构师与研发经理人社区的极客邦科技和微软战略合作,Visual Studio2017上线!极客邦科技和微软中国达成战略合作。创始人兼CEO霍泰稳先生,也为Visual Studio 2017的发布致上祝贺:“微软公司在开发技术与开发工具方面,几十年来一直倾注大量的心力。一个开发工具能够流行20年,历久弥新,持续受到欢迎,是很不容易的事情,对这次新版本的发布送上我的衷心祝贺。”长期与国内互联网技术圈子互动频繁的霍泰稳,特别关注到微软开发模式转变的成功实践,正好切合当前行业对于 DevOps 技术的关注。DevOps 已经被普遍认为是企业开发团队要实现互联网转型所必须采用的开发方法。霍泰稳认为,微软在这么短的时间内,就能够实现开放、开源与跨平台的颠覆性技术创新,这与其 Visual Studio 开发团队在 DevOps 开发方法转型上的成功是分不开的。对于互联网技术如何助力中国企业新一轮的产业升级,霍泰稳强调说:“传统企业与互联网行业在开发方法的转型上,虽然可以有相互借鉴之处,但肯定有完全不同的考虑。观察微软 DevOps 方法在国内大型企业的推动实践,我认为微软的DevOps方法相当适合于传统企业必须稳中求变、兼顾管理与速度、最大化程序员生产力的要求。极客邦科技的斯达克学院已经与微软中国展开深入的合作,以咨询化培训的方式,帮助实体行业的开发团队加速DevOps的旅程,让国内更多的企业受益于微软的宝贵经验,共同完成互联网化转型。”

     2014年微软发布了跨平台的开源版本的.NET Framework:.NET Core,现在它显然已经成为了.NET未来的发展方向。 微软当年已经感受到了来自Java的威胁(当时Sun还未被Oracle收购),因为与C和C++相比Java有着跨平台和简单易学的特性。微软推出的C#语言虽然没能完成其消灭Java的任务但在商业应用开发上的成就是有目共睹的,国内现在一样是承受着Java的威胁,.NET Core和Visual Studio 2017的发布让我们可以很好的应对来自于Java的威胁,.NET Core赋予.NET应用以跨平台性能也符合今日软件开发的新趋势:应用的容器化和微服务化。在微软新推出的Nano微服务器中运行的就是.NET Core,这也是微软为DevOps和应用的持续交付自动化所做出的努力。对于跨平台产品来说,将其开源是最可行的吸引新用户构建生态系统的方法,但对于微软来说这无异于自动放弃一部分收入。基于.NET Core的应用可以运行在非Windows系统之上必然会降低消费者购买Windows授权的意愿。失之东隅,收之桑榆,微软希望在云平台Azure上的收入可以弥补甚至超过Windows版权上的损失。Azure同时支持Linux和Windows所以只要往Azure上面部署哪怕用的是Linux系统微软也能挣到钱。

    随着.NET Core生态的逐步完善,相信未来.NET 重新引来发展的的机会,这是趋势,我想奉劝那些听到一些人的忽悠就抛弃.NET的公司,静下心来好好的评估下转换一门技术的成本和代价,是否有转的必要。听到很多人说转的一个理由是Java的解决方案多,再多的解决方案也是搬别人的,.NET相关的方案现在也不少,最典型的就是游戏领域,腾讯和网易我不详细说了,这里有个现任MVP的创业故事可以给你一点启发《微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)》,这几百万买来的教训,希望你不要重蹈这样的错误。顺便提下早在2013年中国互联网惨遭Struts2高危漏洞摧残,最近几天又在发威。

我们要成为一家科技公司的话,我们要对技术有投入,无论是个人还是公司,都可以采用开源模式链接全世界的程序员来建设.NET 生态,最近我加入了一个API Gateway项目Ocelot,项目的功能参考https://github.com/TomPallister/Ocelot/projects/1 ,大部分基础特性已经完成,接下来就是要不断的重构打磨,这个项目有非常完善的单元测试,验收测试来保障我们的重构工作,保证我们的代码质量。

相关文章:

  • .NET 十五岁,谈谈我眼中的.NET

  • 微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)

  • Visual Studio 2017发布会:黄金时代的家族聚会

原文链接:http://www.cnblogs.com/shanyou/p/6523919.html


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

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

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

相关文章

普里姆算法(修路问题)+图解

图解 代码实现 package com.atguigu.prim;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/4/5* 描述*/ public class PrimAlgorithm {public static void main(String[] args) {//测试看看图是否创建OKchar[] data {A, B, C, D, E, F, G};int verxs data.length;/…

ssm使用全注解实现增删改查案例——DeptServiceImpl

/** * Title: DeptServiceImpl.java * Package org.service.impl * Description: TODO该方法的主要作用: * author A18ccms A18ccms_gmail_com * date 2018-3-12 上午11:04:09 * version V1.0 */ package org.service.impl;import java.util.List;import org.…

MySQL存储引擎中MyISAM和InnoDB区别

转载自 MySQL存储引擎中MyISAM和InnoDB区别 MyISAM 和InnoDB 讲解   InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而Inn…

excel如何生成mysql的sql语句_excel 批量生成SQL语句

文章来源:https://www.cnblogs.com/allen0118/p/3726455.html我们经常会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始…

Visual Studio 2017 已知问题 Qamp;amp;A

已知问题 以下是有关此版本中的已知问题和可用解决方法的说明。M姐会给大家进行详细的解答 安装问题编辑器和 IDE 问题NuGet 问题实时单元测试问题测试工具问题轻量级解决方案加载问题Web 工具已知问题.NET Core 工具问题“打开文件夹”问题扩展性问题Application Insights 问题…

2017蓝桥杯省赛---java---B---8(包子凑数)

题目描述 标题:包子凑数小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包…

ssm使用全注解实现增删改查案例——EmpServiceImpl

package org.service.impl;import java.util.List;import org.dao.IEmpMapper; import org.entity.Emp; import org.service.IEmpService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;//注入事务 Compo…

InnoDB 的辅助索引叶子节点为什么不直接保存的记录地址而要存主键键值

转载自 InnoDB 的辅助索引叶子节点为什么不直接保存的记录地址而要存主键键值 RT,最近看书关于innodb的 InnoDB是索引组织表,所以完整的数据记录都存在聚集索引的叶子节点上 辅助索引的叶子节点保存的是对应的主键键值,而另外一种存储引擎m…

java 配置mybatis_java mybatis框架的配置

一个框架的使用,必然离不开其中的组件支持。我们在下载完mybatis框架后,因为大部分的内部结构还没有启动,就要手动的对其进行配置。在之前有提到,mybatis框架的作用就有数据库方面的,所以本篇文章带来了数据库和sql方面…

2017蓝桥杯省赛---java---B---9(分巧克力)

题目描述 标题: 分巧克力儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的…

C#7.0之ref locals and returns (局部变量和引用返回)

首先我们知道 ref关键字是将值传递变为引用传递 那么我们先来看看ref locals(ref局部变量) 列子代码如下: static void Main(string[] args) { int x 3; ref int x1 ref x; //注意这里,我们通过ref关键字 把x赋给了x1 x1 2; Console.WriteLine($"改变后的变量 {nameo…

ssm使用全注解实现增删改查案例——applicationContext-servlet.xml

<?xml version"1.0" encoding"UTF-8"?> <beansxmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:p"http://www.springframework.org/schema/p"xm…

insert ... on duplicate key update产生death lock死锁原理

转载自 insert ... on duplicate key update产生death lock死锁原理 前言 编辑 我们在实际业务场景中&#xff0c;经常会有一个这样的需求&#xff0c;插入某条记录&#xff0c;如果已经存在了则更新它如果更新日期或者某些列上的累加操作等&#xff0c;我们肯定会想到使用I…

java notify 指定_java的notify/notifyAll:如何notify指定的线程?

我尝试用ArrayList做生产者-消费者问题&#xff0c;有多个生产者&#xff0c;多个消费者&#xff0c;用wait、noitify、notifyAll做并发控制。当生产者生产完毕后&#xff0c;如何只notify消费者呢&#xff1f;你确保只有消费者在wait&#xff0c;这样notify就只会通知消费者了…

2018蓝桥杯省赛---java---B---4(测试次数)

题目描述 思路分析 最佳策略、最坏运气 打表法 代码实现 package com.atguigu.TEST;class Main{public static void main(String[] args) {int[][] d new int[1001][4];//有j个手机测试i层楼需要扔几次for (int i 1; i < 1000; i) {d[i][1]i;//1个手机扔i次可以测试i层…

ssm使用全注解实现增删改查案例——applicationContext.xml

<?xml version"1.0" encoding"UTF-8"?> <beansxmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:p"http://www.springframework.org/schema/p"xm…

[干货来袭]C#7.0新特性(VS2017可用)

前言 微软昨天发布了新的VS 2017 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下其实2016年12月就已经公布了的C#7.0的新特性吧,虽然很早就出来了,但咱这IDE不支持啊.. 不过在昨天的VS2017中已经完美可以支持使用了. E文好的,…

java version 和javac版本不一致_解决linux下javac -version和java -version版本显示不一致...

[javascript] view plaincopy[rootlocalhost usr]# $JAVA_HOME/bin/java -versionbash: /bin/java: 没有那个文件或目录[rootlocalhost java]# . /etc/profile[rootlocalhost java]# . /etc/profile[rootlocalhost java]# $JAVA_HOME/bin/java -versionjava version "1.6.…

在MySQL的InnoDB存储引擎中count(*)函数的优化

转载自 在MySQL的InnoDB存储引擎中count(*)函数的优化 写这篇文章之前已经看过了很多数据库方面的优化内容&#xff0c;大部分都是加索引、使用事务、要什么select什么等等。然而&#xff0c;只是停留在阅读的层面上&#xff0c;很少有实践&#xff0c;因为没有遇到真实的项目…

2018蓝桥杯省赛---java---B---6(递增三元组)

题目描述 标题&#xff1a;递增三元组给定三个整数数组 A [A1, A2, ... AN], B [B1, B2, ... BN], C [C1, C2, ... CN]&#xff0c; 请你统计有多少个三元组(i, j, k) 满足&#xff1a;1. 1 < i, j, k < N 2. Ai < Bj < Ck 【输入格式】 第一行包含一个整…