微软程序员最好的时代来了

每过一段时间就有人跳出来讲微软不行了,.NET不行了,而后就去舔Java, 可是一直让我以为比较奇怪的是,几年之后那些人还在用.NET,并且继续喷着.NET, 舔着JAVA, 在我看来,这些人和那些每天喷本身的公司,却依然在那个公司,每天喷中国,却依然在中国的那些人是同样的。前端

语言只是工具

由于我不是很是熟习JAVA, 因此我不知道JAVA擅长作什么,可是我以为.NET能作的事,基本上JAVA应该都能作,就像我认为JAVA能作的事.NET基本也都能作同样。可是奇怪的是我常常看到的是.NET人员喷.NET, 不多听到JAVA人员喷.NET, 不过我估计不少JAVA人员应该也忙着去喷JAVA吧。这个其实和语言不要紧,只是和人的心理有关系,由于人总以为“碗里的没锅里的好”。java

语言之争已经持续不少年了,其实这个你们都知道没什么意义,网上不是流传一个语言的鄙视链吗?我以为你们把他当个玩笑罢了,千万别当真,由于无论怎么鄙视,咱们毕竟要吃饭的。程序员

原本我也以为写这篇文章没什么意义,可是看到那些喷.NET文章,基本上句句说的都没理,可是却可能对初入行的人带来很大的误解,就像骗子很容易骗小孩,由于小孩涉世未深。web

我作开发已经10多年了,学过不少语言,可是真正用来吃饭的最主要的语言实际上是Visual Basic和.NET, 固然还有"汉语". 当初也学过Java, JSP, SSH. 可是最后选择了.NET,为何,一是由于.NET技术真的入门很快,当年入门快的好处之一就是你立马就有必定的生产力,也就是你能很快开始干活,这样就有公司愿意给你付薪水了,也就意味着你能够更早从父母那里断奶了,另一个缘由就是当时面试的要.NET比要JAVA的多呀。面试

C# 语言

我学习过C, Java,Visual Basic, Ruby,Node.js等,可是我仍是以为C#是生产力很是高的一门语言,好比一些很是优秀的语言特性,你刚刚才能从其它语言里看到一点点,好比自动属性,LINQ, Lamda表达式,Action等,另外C#对多线程的封装让咱们在多线程编程时极其方便,好比TPL. 还有令你们头疼的异步回调的问题,C#用很是优雅的Async, Await来解决,咱们看到ES7里面已经开始实现相似的东西,是否是借鉴了C#呢?数据库

多语言混用

对一个稍微复杂一点的程序来讲,咱们为何必定要只使用一个语言呢?好比咱们前端可使用ASP.NET MVC, 后端可使用Java 甚至是别的任何一个语言,服务咱们可使用WCF, 搜索咱们可使用Solr等等,咱们甚至是WEB层,业务层都是用.NET, 而数据库可使用MySQL或者MongoDB.编程

.NET或者JAVA只是系统的一部分

咱们知道一个WEB程序,除了后端之外,不少其它的东西好比HTML, CSS,JavaScript,数据库这些无论你作Java仍是.NET都是同样须要的。也就是前端技术都是相同,另外HTTP协议,TCP/IP这些也不分语言吧。无论你是JAVA仍是.NET, AngularJS, ReactJS, HTML5, Bootstrap, Bower, Grunt, Gulp这些东西对你都是同样的吧?后端

微软技术能作什么

我没有作过JAVA程序,可是我使用微软技术10多年了,我就说一说微软技术能作什么。api

桌面程序

Visual Basic

当年我毕业没多久,就加入一家马来西亚在中国的软件公司,这个公司主要是作门票系统,当时咱们选择了Visual Basic, 作过VB的人都知道VB是多么的强大,除了极其方便的可见即所得的Form外,并且有几乎一切你想要的组件,另外咱们都知道Windows是桌面系统中当之无愧的的霸主, 我不知道JAVA在这方面的优点是什么,若是有些人说要跨平台,可是我作了这么多年的企业软件,没有几个企业软件是须要跨平台的。当时在这个公司里作了售票系统,还有闸机系统,POS系统,我估计不少人不知道闸机系统原来用Visual Basic也能够作。广州,北京最大的游乐园都是咱们当年作的,而当年整个乐园的信息系统都是使用的微软的技术。缓存

WPF

微软推出的WPF, 我以为是对桌面开发程序的极大的进步,几乎全部的桌面程序的展现均可以使用WPF来呈现,而经过WPF可让咱们很是方便快速的作出很是炫的桌面程序,WPF的XAML方式给了咱们很是方便的写桌面窗体。 同时模板,动画等在WPF都是极其容易实现,另外MVVM在WPF的应用里很是盛行,WPF但是比Angular早出现了不少年。

UWP

不久前,微软推出了Windows 10, 这使一套系统能够运行在桌面,平板以及手机上,而咱们可使用XAML,甚至是JavaScript来开发一套程序就能够运行在多个终端,这个对我的用户可能没有什么,可是对企业用户过重要了,具体的细节我以为你们能够去看一下MSDN或者Channel9

WEB

ASP.NET WEB Forms

我以为不少人对微软的误解可能主要是这一部分,当年的ASP.NET WEB Forms因为是快速拖控件,致使界面生成不少难以认识的代码,大量的ViewState等,可是这并不能说ASP.NET WEB Forms很差,第一咱们可使用ASP.NET WEB Forms快速完成一些小型的WEB程序,加上有大量的第三方控件,是开发一些常规的程序快如闪电。第二咱们能够尽可能使用客户端的控件好比Repeater等,如今仍然有不少网站都是ASP.NET WEB Forms作的,难道这些网站都没有用户?!

ASP.NET WEB MVC

因为不少人对ASP.NET WEB Forms充满抱怨,并且WEB开发技术不断地革新,微软也顺应潮流及时的推出了ASP.NET MVC, 使用MVC能够写出很是清爽的代码,咱们团队从ASP.NET MVC1.0 beta就开始使用,因为我也学习过Ruby On Rails,基本上这两个框架很是类似,极其方便的路由管理,View, Controller, Model的分层,使咱们能够很好的使用强类型类开发,咱们已经使用ASP.NET MVC成功提交过不少项目,还历来没有遇到过问题是出自.NET自己的。

WEB 服务

WCF

使用统一的模型,让咱们开发WEB服务极其方便,大部分状况下咱们只须要定义一个接口,配置相关的Binding和EndPoint就能够了,能够很方便的使用Http, TCP, Https,能够很是方便的使用各类安全策略,而这些就只须要简简单单的几行配置而已,WCF极大的简化了WEB服务的开发。

ASP.NET WEB API

除了WCF, 微软又推出了ASP.NET WEB API, 使得咱们开发轻量级的WEB 服务极其容易,使用ASP.NET WEB API 咱们能够很是容易实现服务的Restful. 而使用OWIN咱们能够以任何方式来部署咱们的API。

Azure 微软云

微软的云很是的强大,使用过微软云的都知道,微软云几乎能够知足咱们一切对程序的要求,咱们可使用Azure web apps很方便的建立一个WEB, Webjob, 咱们可使用Azure SQL, 使用Azure storage, 能够极其方便的使用云的Queue, Bus等等,并且云集成了不少优秀的第三方程序,好比咱们可使用Redis做为Cache. 另外微软的Cloud Services让咱们能够极其方便的管理咱们的部署。这让咱们不少程序员从一个程序员能够快速成为能够运维企业整套系统的人,而你只须要学习一些Azure的管理知识,好比自动扩展等等,而这些在云里面均可以快速简单的配置。咱们几乎一半客户的系统都运行在Azure里面,并且咱们能够一键部署,若是有问题,咱们甚至可使用Visual Studio来直接Debug云里面的网站。

移动开发

因为Mono,如今可使用.NET来开发移动的应用程序,使用Xamarin可使用C#开发出和原生性能如出一辙的iOS和Android程序,我也熟悉Objective-C, 并且用Objective-C开发过程序,虽说Objective-C 在某些方面很优秀,可是开发效率实在不敢恭维,否则Apple也不会推出Swift来革本身的命,另外当你既须要iOS,又须要Android的时候,你至少须要一个熟悉Objective-C的,又须要一个熟悉Java. 而一样地东西须要作两遍。而使用Xamarin作企业级APP,大量的业务逻辑能够共享,更别说能够直接使用效率很是的C#语言了,咱们已经成功提交了好几个基于Xamarin的程序。

另外,Xamarin推出的Xamarin.Forms可使用XAML及C#用一套代码来开发iOS, Android以及Windows Phone的程序,并且性能和原生的如出一辙,咱们也顺利开发过基于Xamarin.Forms的程序。

游戏开发

如今已经有不少程序基于Unity开发,而你能够选择C#来做为基于Unity的游戏的主要语言。能够搜索一下,已经有大量的上架游戏是使用.NET开发的。

小结

固然,以上只是我使用的微软相关技术,目前来讲,除了客户明确选择其它语言之外,还真的没有多少是Java能作而.NET作不了的。

桌面,WEB, 移动开发 均可以使用.NET,简单点说,就是你均可以使用一门语言,那就是C#来开发

开发工具

Visual Studio

作.NET开发,配套的开发工具是Visual Studio, 我以为Visual Studio是最好的IDE之一,你几乎可使用作任何语言的开发,这个使用过的人都很是清楚,虽说Vim是编辑器之神,而Emacs是神的编辑器,可是显示世界能有多少个神?

Resharper

Resharper是每一个.NET程序员的必备工具之一,基本上可让咱们的开发效率提升三分之一,设个谁用过谁知道。

领域驱动设计

若是我没有记错的话,虽然Eric Evans较早写了领域驱动设计一书,但真正推进领域驱动设计的是有不少作.NET开发的,好比Greg Young, 咱们能够看看NServicebus. 能够看看 NServicebus

咱们已经使用领域驱动设计提交了一个很是大型的项目,这个项目是一个世界500强的主要系统。而这个系统就是使用的.NET C#,使用了CQRS, NServicebus, ASP.NET MVC, ASP.NET WEB API,SQL Server等等,系统已经运行了好几年了,尚未发现什么问题。

有兴趣的能够关注一下个人领域驱动系列。

长尾理论

不少人说大型的一些系统都没有用.NET, 好比BAT, 好比新浪微博,他们是否是一点都没有用.NET我不知道。我想说的第一那些系统都比较庞大,使用JAVA或者PHP不少时候是基于历史的选择,另外这些系统就那么几个,并且并非全部的软件都是电商,都是微博?

我在这里想说的长尾,就是第一中小企业几乎占据全部的企业的80%, 而这些企业须要各类各样的系统,而这些企业不管是国内仍是国外,都是Windows占大部分。虽然我也很是喜欢苹果的产品,可是企业是须要赚钱的。 也就是说80%的企业都不会像BAT那么大,那么至少这80%的系统使用.NET开发没有任何问题,再加上.NET有着很高的开发效率,咱们有什么理由不选择呢?

使用.NET应该是企业或者客户项目的第一选择

若是只作WEB系统,或者只作电商之类,那么使用其它任何语言都没问题,可是一旦作企业系统,每每.NET是一开始很是安全的选择,为何? 由于不少企业使用的系统是Windows, 使用的办公软件是Office, 使用的服务器是Windows Server,使用的是AD, 使用的邮件系统是Exchang Server, 我不知道大家使用JAVA和PHP和这些系统集成时是否方便,可是使用.NET是很是方便的。目前来看,.NET几乎能够知足企业应用的全部的现有的需求以及潜在的需求。

关于开源,关于免费

如今.NET不少东西都开源了,.NET CORE 和 ASP.NET VNext已经能够跑在Mac和Linux上了,我相信会愈来愈多的.NET程序未来会跑在Linux服务器上,另外大部分程序根本就用不了那么多服务器,若是咱们真的须要那么多服务,证实公司已经颇有钱了,还买不起几个Windows?并且若是真的须要那么多服务器,咱们可使用Microsoft Azure, 买几个Windows总比要请几个Linux运维工程师要便宜不少吧。

最后,没有人限制你只会.NET

没有谁能限制.NET程序员学习其余的语言,.NET程序员能够学习Java, Ruby, Node.js, 能够学习Event Driven, Message Queue, Solr, 学习MongoDB, Redis, 学习分布式缓存,学习任何其它语言须要学习的东西。

关于薪水

我不相信一我的学两个月JAVA, 不学习其它东西就能够立马成为一个优秀的程序员,就能够拿到很高的薪水,由于在我看来,要成为一个优秀的.NET程序员,须要学习大量的知识,我相信JAVA程序员也是同样。若是说.NET程序员年薪几百万我没见过,可是把.NET学好能够拿到相对不错的薪水仍是没有问题的。

咱们就是使用.NET的技术,并且目前咱们公司.NET程序员的平均薪水已经在10K以上了(这在西安当地已经算不错了),若是你以为你.NET技术还能够而没有地方发挥的,欢迎联系我 wangdeshui@outlook.com

相关文章
相关标签/搜索