关于.NET技术前途问题的讨论

我去年曾经在论坛发起过关于.NET技术前途问题这个话题的讨论,也引起了很多同行和朋友的回复,时间过去大半年,自己也有了一些新的理解。本文的目的就是将其中一些精彩的观点整理出来并谈谈自己的观点。

引子

我们都知道微软.NET技术更新速度快,很多技术还没成为主流就已经退出历史舞台。

曾经的SilverLight给了我们多少惊喜,结果微软直接支持HTML5取代它。

xna也是风靡一时,可惜微软直接抛弃了它。

虽然微软提出了“移动优先,云计算优先”的战略口号,但是目前来看WP也没多大作为,甚至有不少Windows Phone方向的微软MVP都转向了Android开发。

那么目前来说,.NET技术主要的方面就是ASP.NET(webforms、mvc、web api等)和少量的Windows桌面应用开发(主要是Winform还有少量的WPF)。虽然vs2015集成了android和ios开发,但是是收费的,而且开发者似乎也没有多大热情。

作为使用微软.NET技术的您,对.NET技术的前途这个话题有什么看法呢?欢迎讨论。

观点

  • sp1234

从windows10开始具有的UWP很可能制定将来的前端应用程序的一种工业标准,应该从现在就考虑如何用它来对自己公司的产品进行宣传。唯一的问题就在于“它的性能如何?”,现在还不好说。

微软需要自己能够在手机上跑起来几个强劲的传统桌面软件,例如把Photoshop在手机上跑起来,把Word和Excel跑起来(而且不是像office365那种web阉割版,而是完整的有深度的功能),把各大银行的桌面支付软件(而不是web版的)跑起来,能够用桌面windows的远程桌面程序去操作手机桌面(包括用鼠标直接把文件从桌面windows拖入手机的文件夹内或者放到应用界面上),在手机上直接跑windows桌面版的QQ而不需要另外再开发手机版本……

这些都能轻松实现,不再开出“空头支票”,那么“三屏一云”将能让微软雄霸下一个10年。而微软的“三屏一云”中的“云”还没有落地,还停留在推销它自家的服务商,还没有让开发人员发现可以自由架构的东西。微软还应该在.net framework中内置一套服务器集群分布式任务管理框架,哪怕性能不是最高的,哪怕比较简单,但要是最可靠的,例如实现基本的 Gearman式的功能,能够分布式地调用方分布在1000+台服务器上的 windows 服务程序。

我认为许多人都是在2006~2013年之间接触 .net 的,因此可能不很知道微软平台技术的潜力在哪里。

实际上假设我想为一个“部级”国营企业集团的几十位中层领导单独开发一个办公系统(不是那种随便弄的小OA),那么我可能就要纠结silverlight、wpf、web前端技术等等,既要考虑到对美工的(应该使用专门开发“酷炫的2d动画绘图组件”的平台),又要考虑到对程序员的要求(希望门槛不高的javascript程序员就可以开发大系统),而且希望所有的应用的服务端都有符合当今世界潮流的大数据、复杂事件处理集群技术为基础。

如果有UWP,这个选择就轻松多了,我可以把精力用在内容技术而非肤浅的技术层面上。而且不愁领导们不喜欢更换windows 
phone手机或者平板电脑,因为Android上的所有应用也可以同时在上面使用。这就是 .net程序员在2015年底、2016年初可能可以学习技术架构了。

  • github_22161131

现在 .net 就是守着传统的桌面和web开发领域,向跨平台和云端发展。

然而这对于国内的 .net 开发人员未必是好事。为了实现跨平台和云端发展,当然也因为 .net 
的核心采用开源形式开发,迭代会加速,问题会增加,文档会进一步跟不上,官方的中文资源会更少。也就是说,.net 
前沿的发展会进一步拉开与国内开发者的距离。如果把CSDN论坛的帖子作为平均水平,那可以说差距已经很大了,继续拉大的话会让更多人无所适从。

如果silverlight和xna也算技术的快速更新,那么未来的.net会更快,不过开源模式下如果微软不管了社区也可以继续发展,像F#现在就是已经完全社区化发展的。可以说大环境就是技术更新会更快,能适应这样环境的开发者会有更大的优势。

客户端技术里面,WinForms和WPF应该没什么变化,基于WinRT的技术依赖Win10应该能够扩大些市场,不过看不到能够爆炸性发展的可能。Xamarin/Mono技术依赖的是iOS和Android市场,短期内应该比较稳定。 
而在服务端,因为跨平台,应用的领域可以大大增加。 
在云端,因为跨平台,也可以增加.net的使用可能。同时可能会出现更多支持.net的paas云平台。 
IoT端,因为Win10和跨平台,也可以增加一些.net的市场。

在我看来,.net未来的发展与Win10的关系并不大,Win10能够多带来一些基于WinRT技术的市场,然而这个市场微软想扩大并不容易,可能大部分只能集中在企业领域。影响最大的是官方推动的开源和跨平台,这会让整个.net生态系统慢慢摆脱对微软和windows的依赖。与Mono相比,微软做的更为彻底,重新设计了.net,将其完全模块化,支持多clr,这是 .net 的一次质变。

  • bigbaldy

直接用linux呀,而且C#是除了C++以外调用NativeMethod最方便的语言,C#没有现成解决方案或不好实现的直接调用C++的,在加上目前mono4.0的大幅改进,用linux已经没有任何问题,其实.net真的已经非常全面,桌面、移动、web、游戏等等什么都能干,而且某些还非常精,只可惜现在xamarin不免费,u3d都有免费版,现在缺的就是开发者,抓住开发者才能抓住市场,真不知道决策层是怎么想的。

著名的漏洞挖掘工具peachfuzzer为何在3.0版时用C#全面重写,而且是全平台的,那会还是mono3.0时代,这已经说明C#在linux下的表现,官方还说,换了C#后性能大幅提升。 目前全球最大的游戏平台steam上发布的游戏,u3d的游戏已经非常多,而且有很多还是大型3D游戏,原来这可是C++独占的。 
吾爱破解论坛,.net的帖子也非常多,各种学习教程,破解逆向教程,实用小工具等。 
游戏论坛中以3dm举例,很多游戏修改器也都是.net的,毕竟C#开发效率高而且是与nativeapi交互最方便的高级语言 
再看社区活跃度,现在不论是全球的stackoverflow还是国内的csdn上,发帖量能在C#前面的只有Java

种种迹象表明.net要火,而且说句实在话,纯语法角度,还真难找出像C#这么优雅的(除了python),从基础类库来看,C#是最好用的,没有之一。

  • ajianchina

说那么多没卵用,最重要的问题在于微软的盈利模式的改变,如果这个不改,还是束手束脚,哪天android爬上了桌面也说不准,那么庞大的移动用户基础,再加上免费,呵呵,微软现在不改盈利模式,还想着吃老本,我看到时候够他受的,他的盈利模式改了,才能降低操作系统的授权费用,甚至免费,那样才会有更多企业愿意加入到windows平台,开发人员总是跟着企业需求走的,所以不要谈什么.net技术的前途,没有意义,一切需要从商业角度出发,你才能够看到什么才是有钱途的!

  • sp1234

微软的 windows 10 以及 UWP 功能,已经让 Android 和 iOS 的程序可以在桌面 windows 
上运行了。windows 10 上可以同时运行各种平台的应用窗口!windows 10 
开启了真正的开放战略(是产品战略,而不是什么“开源”之类的),允许别人家的软件跟自己的操作系统上跑,而且设备驱动的共通就一定会让不同系统的进程更方便地通讯。

微软专门设计windows系统来把 android上自己的桌面的!

  • xuanbg

.net对比java,有三大优势,其中排第一的就是效率呀。其他两项是IDE和相对统一和完整的框架,其实java最大的坑就是那些乱七八糟的框架,不用不甘心,用了全是坑。。。

  • bigbaldy

基础类库最人性化的就是.net,能够在没有任何文档的支持下让一个初学者凭着摸索写出一个像模像样的程序,其他任何语言也许照着API文档都得琢磨会,何况现在又全面开源,跨平台也得到官方大力支持,.net是除了驱动以外任何功能都能实现的,请问可以轻松开发单片机(microframework)、web(webform,MVC)、桌面(winform,WPF)、移动(Xamarin)、游戏(U3D)等各个领域的语言还有谁?shellcode可以写,键鼠钩子可以装,内存指针轻松操作,富客户端应用各种动画超炫效果信手拈来,各种官方非官方MVC框架数不胜数,android,IOS APP也可以借助xamarin大显身手,真不知道为何会有人不看好.net。

  • gentle_wolf

玻璃上的苍蝇。前途光明,没有出路。 .net确实是很好的平台,就是在中国不受待见。 
百度,阿里,京东,去哪儿,58,赶集,土豆,优酷,搜狐,网易,新浪都不用.net 只有腾讯还用一点点.net,结果还放弃uwp的开发了。 
携程,汽车之家,搜房网用的是.net,比例太小了。

  • unearth

只要Windows不倒。.NET就不会倒。除非有比Windows更好的一套生态系统。估计也就是人工智能了。

  • liveths

我看技术是没有对错的。区别是有没有用对而已。Net也好Java也好。在对的地方用对就行,没有过时不过时之分。 
我自己的个人看法是,我熟悉Net,那就用Net。然后既然android有需要去学Java就是。 
目前个人看法是Net加android是最好的。全java那个低下的开发效率。。。。。。坑啊。

总结

  1. C#比Java简洁、优雅。对比一下同样5年开发经验的Java工程师和C#工程师写的代码就知道了。

  2. .NET是跨语言(C++、C#、VB、F#等)的平台。VS2015开始内置了Python、R等大数据用到的语言和工具,并集成了Android、iOS移动应用开发。

  3. .NET是跨平台的。通过Mono可以将WinForm、ASP.NET等发布到Linux环境中运行,这块已经很成熟了。

  4. 游戏开发中的Unity3D就使用了C#进行开发。

  5. 至于说开源,微软已经开放了很多项目的源码甚至内核,有些项目甚至完全由社区来推动。


原文地址:http://blog.csdn.net/chinacsharper/article/details/50962571


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

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

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

相关文章

用枚举enum实现单例

【README】 1,effectivejava 讲到使用 枚举类实现单例的例子,非常好用;2,好处如下: 不用定义私有构造器;不用定义获取单例的方法,如 getInstance() ;通过 枚举类.INSTANCE() 就可以…

前端面试常考系列一

转载自 前端面试常考系列一 一、简述HTML5的优点和缺点? 优点: 1、网络标准统一、HTML5是由W3C推出的。 2、多设备、跨平台 ,移植性强。 3、自适应网页设计。 4、即时更新。 5、新增了几个标签,有助于开发人员定义重要的内容&…

基于轻量型Web服务器Raspkate的RESTful API的实现

在上一篇文章《Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器》中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RESTful API。 模块 首先让我们了解一下“模块”的概念。Raspkate的…

python股票自动买卖视频教程_十分钟学会用Python交易股票

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼本文通过讲述 [单股票均线策略] 在 Ricequant 量化平台的实现,熟悉平台并快速入门、创建自己的量化策略代码 。难易度:入门级.从一下几点说起;1 确定框架:[单股票均线策略] 的主要策略…

前端面试常考系列二

转载自 前端面试常考系列二 一、外部引用CSS有几种方式,有何区别 外部引用CSS的方式有两种分别是link和import。 区别如下: 1、link是XHTML标签,除了加载CSS外,还可以定义RSS等其它事务;import属于CSS范畴,…

3分钟看完Build2016 Day 1 Keynote

Build 2016 Day 1 Keynote 直播结束,M姐不得不说,没看直播的真心错过了一大波黑科技和充值我软信仰的大好时机,不过别后悔,M姐精选了干货,一次性让你补充信仰。没看的真心会被甩开八条街!! 言归…

js动态给按钮赋id_如何给SHOPIFY店铺添加“立即购买”动态结账按钮

动态结账按钮会根据店铺后台所支持的第三方快速结账付款方式和顾客设备浏览器的记录动态展示快速结帐按钮,比如PayPal Express Checkout、Apple Pay等。当然如果浏览器没有记录或者店铺后台没有支持的快速结帐付款方式,按钮则会显示为“buy it now”。Dy…

java序列化与深度拷贝

【README】 1, 为啥要序列化或序列化的意义?2,系统间调用的报文格式,大多数是Json字符串(或字节数组);接收方接收json;3,但当系统调用如RMI,客户端请求服务器…

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

微软的Build开发者大会已经成为它向我们宣布其在未来一年里的战略方向的一个最大平台。不像苹果的发布大会,微软之所以要召开这个会议并不是要发布什么产品,而是像众多业内人士所分析的那样,希望通过介绍公司的努力来说服它最重要的听众——开…

前端面试常考系列三

转载自 前端面试常考系列三 一、简述一下src与href的区别 href 表示超文本引用,在 link和a 等元素上使用。src 表示来源地址,指向外部资源所在位置,在 img、script、iframe 等元素上。src 的内容,是页面的一部分,是引入…

java内部类小结

【README】 1,本文总结了java4种内部类,包括 成员内部类:在外部类内部定义的非静态类;成员内部类不能独立存在,如 UML中类间的组合关联关系;静态内部类:在外部类内部定义的静态类;…

python内置模块有哪些_python中那些小众但有用的内置模块

今天带来的是python里一些小众但是却比较实用的python库,一起来看看吧!pprint:更清晰的打印pprint 是 pretty printer 的缩写,用来打印 Python 数据结构,与 print 相比,它打印出来的结构更加整齐&#xff0…

微软想让你跟机器人说句话就把事办了

也别猜错,微软可没有像 Google 一样打算让四只脚能跑 60 迈和两只脚能穿行森林的机器人大军占领你的家。他们家的机器人不是 Robot,而叫 Bot,可能是 chatbot 的简称,也就是聊天机器人。 具体来说,微软在自然语言处理的…

转:Spring Boot 获取 HttpServletRequest 的方法

转自: Spring Boot 获取 HttpServletRequest 的方法 - 简书本文介绍 Spring Boot 2 获取 HttpServletRequest 的方法。 目录 概述 方法Controller 方法参数属性自动注入手动方法调用借助 Mo...https://www.jianshu.com/p/b7a7d66c4ef2 本文介绍 Spring Boot 2 获取…

前端面试常考系列四

转载自 前端面试常考系列四 一、CSS盒子模型有哪些用处 css中的盒子模型是为了理解divcss模型的定位功能,它利用盒子模型这样的布局方式代替了传统的表格布局方式。盒子模型是在学习divcss布局方式中必须要学习的一个模型,通过这个模型可以明白网页中di…

python线性加权模型_局部加权之线性回归(1) - Python实现

1 #局部加权线性回归2 #交叉验证计算泛化误差最小点345 importnumpy6 from matplotlib importpyplot as plt789 #待拟合不含噪声之目标函数10 deforiFunc(x):11 y numpy.exp(-x) * numpy.sin(10*x)12 returny13 #待拟合包含噪声之目标函数14 def traFunc(x, sigma0.03):15 y …

3分钟看完 Day2 Keynote

hey~ M姐又给大家带来了满满惊喜的 Build2016 Day 2 Keynote 干货汇总了。 如果你连昨天的都还不知道,那真心就 out 了。如果说信仰在昨天充值爆棚,今天就要充值信仰到掀翻房顶的节奏了!!! 红衣主教今天妥妥变身成为新…

latex 数学公式_技能分享——LaTeX篇I

公众号文章系列二——“小袁技能分享”上线啦,第一篇推文我们聊一聊LaTeX(音译 “拉泰赫”)Question 1什么是LaTeX?要解释LaTeX是什么,我们先要了解另外一个事物:TeX。1968年,美国著名计算机科学家、现代计算机科学的先…

转:springboot servlet使用配置

转自: springboot servlet使用配置_奔跑的蜗牛的博客-CSDN博客在spring boot中添加自己的Servlet有两种方法,代码注册Servlet和注解自动注册(Filter和Listener也是如此)。 一、代码注册通过ServletRegistrationBean 获得控制。 也…

前端面试常考系列五

转载自 前端面试常考五 一、DIV元素是什么 DIV元素是用来为HTML文档内大块(block-level)的内容提供结构和背景的元素。DIV的起始标签和结束标签之间的所有内容都是用来构成这个块的,其中所包含元素的特性由DIV标签的属性来控制,或…