NetCore本身是平台,支持多种语言但是实际上绝多数开发者都是使用C#语法开发,大部分情况用NetCore也就是在说C#语言。
语法优秀
C#的版本迭代非常的快,更新速度在所有语言当中算是比较有效率,全因来自爸爸(这里指微软)的溺爱,每次版本迭代都会出一些新奇好玩的新特性。
C#2.0泛型
C#3.0,集合初始化,Lambda表达式,var类型,linq查询
C#4.0Dynamic类型,Params关键字
C#5.0Asyn异步编程
C#6.0,C#7.0,C#8.0,C#9.0等都有一堆新的语法糖语法优秀是一件好事,写起来很优雅,看着舒服,语法糖还是甜的(甜过初恋),C#因此博得最优雅的编程语言称号(PHP你先坐下),类似法语,连骂人都是优雅的。
迭代过快也出现一些问题,最为明显的就是影响社区成长,社区成长是难慢的,因为靠爱发电。
当你使用微软最新版开发的时候,你会发现一些框架居然还留在上几代的版本,开发者居然不更新了,弃坑了。说好的白头到老却你移情别恋,不是说好的爱的力量是无限大的吗?
很多人一边吐槽一边用,因为JAVA己经变成了吃饭的家伙,只能边爱边恨,有些人骂骂咧咧就算了,有些人恨到入骨就发明了Scala语言(一种类似C#不断提供特性的语言)扬言要干掉JAVA,现在还是不瘟不火(现在知道“行路难”了吧)。
你会发现语法优秀是一件好事的时候,也是双刃剑,语法没有想象中的重要,现实是骨感的,做人嘛,还是现实点好,管用,所以我得告诉你,初恋一般都分手,法语骂人会被揍。
生产工具优秀
VS系列的生产工具作为宇宙第一IDE,用过都说好,理论上这并不是一个免费的工具,实际上因为C#语法的不瘟不火以及中国市场以来的盗版情况,微软基本上都是一只眼开,一只眼闭,网上到处都是免费的密钥。
软件功能较多涵盖方方面面,测试,开发,团队合作,代码分析,生成,测试,性能调查,还有各种各式的扩展功能,自定义主题色,软件一直在不断更新版本,每个版本都有实用性的功能提升。
值得一提的就是VS这个工具本身就是一个复杂的软件,微软每次都是基于当前的版本作为开发工具开发下一代VS版本,基本上VS本身就是在实践中杀出来的,的确优秀。
生态缺乏
生态资源当然就是讨论架构上的东西,Windows平台基本上就是没啥好讨论的,使用Windows平台基本都是全家桶系列,理由如下:
微软全身桶包涵方方面面,基本应该有的都有,没有的基本没有。
微软平台的框架第三方基本收费,开源甚少,可供选择方案少。
微软全家系统各个环节兼容性较好,中规中矩,与全家桶系列结合,也许无法性能最大化,一定可以系统稳定最大化。
使用微软全家桶可以避免风险,出现问题可以问责微软工程师且对方无法反驳,因为全都是你自家的东西。
整体打包费用较高但是省心,世界五百强首选
Linux平台的方案则较多,多且乱,可以多个组合成性能最优的方案,整体系统构架的稳定性,安全性取决的架构师的经验,更为重要的一点开源且免费。
以三个问题是开源世界较为受欢迎的原因
费用问题作为中小企业在版权费用和维护上服务器并不占用并不多,但是面对大型互联网企业版权费用是高得吓人的,甚至可以高达几千万。大型互联网公司都是高薪招聘相关专业人员,在开源方案进行改造使用。而更多中小企业则依整生态进行白嫖,以最小的成本搭建生产环境。
方案较多开源社区提供各种各样的方案,有些方案只有开源社区有
方案开源方案开源对于大多数互联网公司来说,并没有任何意义,但是对于大型互联网公司说是优化和提升性能,定制开发的关键。即使是大型互联网,很多也只是具备优化的能力。较为明显的一个例子就是MYSQL,国内就有很多大厂自身招专业的数据库开发人员定制优化MYSQL供内部使用。
NetCore的优势之一就是在于跨平台,打通Linux平台使用架构方案明显多样化,作用一个大型的互联网架构,并不是全部都是C#语言或者JAVA语言。良好的架构都是组件式搭配,讲究集群分布式,开发语言无论是C#或者JAVA都是只占其中一小部分,常规来说就是开发业务代码。
分布式上面我们常见的,负载均衡,应用高可用,日志同步,灰度发布,代码版本管理,分布式文件系统,分布试缓存,分布式队列,分发式计算
集群监控上面常见,例如操作系统资源监控,应用监控,服务器健康检查,故障警告/转移。
数据库上面常规,就是关系型/非关系型数据库,其中非关系型数据库的内容较多又可以详细分为文档型,KV型,图形,列型等等
编程语言上面常见各种IOC,ORM,日志组件,AOP组件之类。
整体上基于Linux的方案较大,所以大多数互联网公司都会选择基于Linux平台开发,理论上NetCore跨平台,的确追平一局。
在众多的方案中,我们可以在简而划分一下
有些是脱离开发语言,也就是说无论你使用什么开发语言都可以集成到构架上面去,例如:各种监控
有些是脱离开发语言,但是需要跟业务代码对接,这种情况需要看对方支持开发语言例如:各种MQ
有些是和开发语言深度结合的,例如:微服务架构
其实第一种情况跟随操系统无编程语言无关,第二种和第三种情况则是JAVA居多。这也就是开发语言自身的生态溃乏。
工作政治
其实这些很容易理解,基本选择JAVA的公司基本上都是JAVA,选择了NET的公司基本都是NET,少数公司会混合这两种语言一起(除非在转型中)。
因为之前NET并不开源,大多数互联网公司选择了JAVA,也并不是因为NETCORE开源跨平台之后就会选择回NET,原因很简单:没有必要性。
在所有的这些条件当中,生态是最重要的,就简单比如一下:你有两家公司一个是工资高,一个是福利多,好无疑问大多数会选择工资高,因为这是实实在在摸得着的东西,生态好就相当于工资高,其它的东西也是有加分,结合项目需要根据自己和公司的环境选择就可以,你可以重新选择,不可以强行推动,在拥有绝对的话事权和非不得己的情况下可以尝试一下,否则容易墙倒众人推。