加拿大家园论坛

对当前微软.net技术的一点浅见

原文链接:https://forum.iask.ca/threads/635066/

tech9 : 2013-03-25#1
本来这是对“.net好像不吃香了”那篇帖子回帖的,但写着写着有点跑题,所以干脆独立成贴吧。

对于“.net不吃香了”的看法,我的感觉好像刚好相反,.net 在企业应用的开发中变得越来越成熟,以前web form那套把前端、后端混在一起的开发方式已经被微软废弃,后端的框架,如ORM、Web Service,以及并行、异步等都变得越来越强壮易用,在TDD、DDD、IOC 等的支持方面也越来越丰富,一点也不比Java弱。前端开发方面,微软自从认识到web form的种种弊病,决心逐步废弃这套曾经引以为荣的开发模式,近年推出的前端开发手段,与其他的平台,如java、php 等的差异越来越模糊,同样都是侧重并充分利用html5/css3/javascript 框架进行设计,这可以从微软最新的mvc4所推荐的web api、mvvm框架、spa模板等充分感受到其前端开发的强大、简洁、清晰和丰富,远非以往的web form可比。但这一转变带来的不良后果是,大批经验丰富的asp.net程序员要花不少力气去学习以接受和适应这一新的开发模式,以前种种引以自豪的 基于server control的前端开发经验,霎时间变得几乎毫无用处,如今不再有page life cycle,不再有post back, 不再有 server control,不再有view state, 不再有 update panel, 以前被不屑一顾的javascript变成了开发的主力语言,还要学习众多的javascript应用库,等等,对传统的.net 程序员构成了不小的挑战。 总之,微软在不断求变,在我看来,确实是变得越来越强大和成熟了。

另外,微软在力推其云端平台AZURE,在企业应用方面很有潜力,而sharepoint这产品也在企业中逐渐得到广泛应用,尽管我并不喜欢这东西,但不少企业都在招sharepoint程序员,薪酬还给得相当高。

不得不提的就是,微软曾经雄心勃勃力推的silverlight,如今可以说完全没有前途了,这是由于微软当初低估了andoid和iphone的影响力, 试图在移动平台应用开发上一统天下,显然这是彻底失败了。讽刺的是,silverlight 基本上只能用于开发微软自己的win phone 7, 连windows8 移动设备也不再使用silverlight,所以silverlight程序员要考虑转向了,考虑投入到.net阵营的程序员,也别再碰silverlight 了。

WPF,只能开发桌面应用,且不能用于手机,如今web 应用大行其道的时代,显得其市场应用方面越来越狭窄。morgan stanley 这一年来四处在招WPF程序员,还老招不到,给的薪酬不少,但我一直不为所动,尽管我有点WPF的经验。

WCF,微软的web service集大成者,很好很强大,但就是太过大而全,在使用、配置上比较麻烦等,学好它需要花相当大的精力。如今微软的WCF开发团队也意识到这一点,于是在ASP.NET框架上开发出轻量级的WEB API,足以替代WCF的RESTFUL部分,且轻便易用。所以WCF,了解一下就好了,不必花太大力气去研究。

至于windows8的开发,微软提供的开发手段有两种: c#+ XAML,html5+javascript. 我目前的态度是暂且观望,目前windows8的销售仍不明朗,能否在iOS、Android设备遍天下的情况下在市场上有所突破,还难以断言,如今花力气投入到这里,似乎有点仓猝,搞不好又是另一个silverlight。

所以,以我的浅见,如果打算找.net程序员工作,或者asp.net的程序员打算增强自己的市场竞争力,我觉得学习 asp.net mvc, 是个比较好的选择,在各大招聘网站上的职位也多,尤其是mvc,据我的观察,近一年来需求越来越多,值得把精力投入进去。另外,html5,css3这些跨平台、且桌面、网络、移动应用通吃的技术,无论是.net还是java、php程序员,都是必不可少的。

Superintender : 2013-03-26#2
回复: 对当前微软.net技术的一点浅见

写得不错.确实是. 不过,微软的这种改革,并不能给它带来实际收益! 在mobile 平台上已经落后很多. 其次,大公司一般是很少会去使用新的不成熟的技术. 微软这样千变万化,现在我们对Windows8的未来还没看到胜利的曙光,微软这种变化是不会给微软带来任何彻底取代java的机会. 弄不好被java咸鱼翻身.

无风不起浪 : 2013-03-26#3
回复: 对当前微软.net技术的一点浅见

都不对,PHP才是王道:wdb6:

Aftertears : 2013-03-26#4
回复: 对当前微软.net技术的一点浅见

5年前学过一段的asp2.0,已经落后了好多了,现在的WPF,WCF都不懂了。。做过一点JAVA,现在在搞PHP,发现PHP语言很好上手,就是各种各样的开源框架太多了,跟不上学习的步子啊。。:(

chris_cc : 2013-03-27#5
回复: 对当前微软.net技术的一点浅见

还是做数据库省心啊,一个sql写n年都不用升级,有更多的精力都花在了解业务知识上了。

tech9 : 2013-03-27#6
回复: 对当前微软.net技术的一点浅见

5年前学过一段的asp2.0,已经落后了好多了,现在的WPF,WCF都不懂了。。做过一点JAVA,现在在搞PHP,发现PHP语言很好上手,就是各种各样的开源框架太多了,跟不上学习的步子啊。。:(

如今,无论是java/.net/php, 都有这个问题,各种框架、应用库纷来沓至,需要不断花时间精力去跟进、研究,微软大牛 John Papa 最新的一篇文章Why All Those JavaScript Libraries? 就讨论了程序员抱怨要学习和使用一大堆JavaScript 库的问题。

我自己是喜欢这种百花齐放的局面的,一家独大、抱残守缺、经年不变,那不是软件开发。

tech9 : 2013-03-27#7
回复: 对当前微软.net技术的一点浅见

写得不错.确实是. 不过,微软的这种改革,并不能给它带来实际收益! 在mobile 平台上已经落后很多. 其次,大公司一般是很少会去使用新的不成熟的技术. 微软这样千变万化,现在我们对Windows8的未来还没看到胜利的曙光,微软这种变化是不会给微软带来任何彻底取代java的机会. 弄不好被java咸鱼翻身.

对最后一句不敢苟同,如今java如日中天,php 依然强劲有力,同时ruby、python等环伺在侧,.net 只是在奋力争持、亦步亦趋。要彻底取代java,估计连微软自己都没有这份雄心,只需看一看android的势头就清楚,因此更没有java咸鱼翻身之说。

tech9 : 2013-03-27#8
回复: 对当前微软.net技术的一点浅见

写得不错.确实是. 不过,微软的这种改革,并不能给它带来实际收益! 在mobile 平台上已经落后很多. 其次,大公司一般是很少会去使用新的不成熟的技术. 微软这样千变万化,现在我们对Windows8的未来还没看到胜利的曙光,微软这种变化是不会给微软带来任何彻底取代java的机会. 弄不好被java咸鱼翻身.
另外,相比之下微软已经算不上“千变万化”了,只是微软自己在做框架,几年才一变,变得最多的只是版本而已。而java/php使用的是开源的框架,论变化、论选择,他们才称得上五花八门。

firecrane : 2013-03-27#9
回复: 对当前微软.net技术的一点浅见

。。。。。。。。。。

firecrane : 2013-03-27#10
回复: 对当前微软.net技术的一点浅见

。。。。。。

fieldmarshal : 2013-03-27#11
回复: 对当前微软.net技术的一点浅见

如今,无论是java/.net/php, 都有这个问题,各种框架、应用库纷来沓至,需要不断花时间精力去跟进、研究,微软大牛 John Papa 最新的一篇文章Why All Those JavaScript Libraries? 就讨论了程序员抱怨要学习和使用一大堆JavaScript 库的问题。

我自己是喜欢这种百花齐放的局面的,一家独大、抱残守缺、经年不变,那不是软件开发。
不过对于目前最主流的java,php来说框架虽然多,但是其实大同小异,掌握一个新框架其实还是很快,不过要精通就是很麻烦了,关键是debug时候的陷阱比较恶心,毕竟这些框架其实也有自己的问题。
对于dotnet发展的是越来越像java的各类模式了,个人其实还挺怀念10年前的微软的很多设计,比如说第一版ado.net。我从来不认为现在的java,php新框架比哪个时候先进,相反,我觉得当年borland、微软的那些类库才是真正的经典之作。
javascript框架互相差异就太大了,确实是对人的一种折磨,而且js类库的源码阅读和debug起来就太疼苦了,不像java什么的实在不行看看框架源码也就搞定了。

tech9 : 2013-03-27#12
回复: 对当前微软.net技术的一点浅见

不过对于目前最主流的java,php来说框架虽然多,但是其实大同小异,掌握一个新框架其实还是很快,不过要精通就是很麻烦了,关键是debug时候的陷阱比较恶心,毕竟这些框架其实也有自己的问题。
对于dotnet发展的是越来越像java的各类模式了,个人其实还挺怀念10年前的微软的很多设计,比如说第一版ado.net。我从来不认为现在的java,php新框架比哪个时候先进,相反,我觉得当年borland、微软的那些类库才是真正的经典之作。
javascript框架互相差异就太大了,确实是对人的一种折磨,而且js类库的源码阅读和debug起来就太疼苦了,不像java什么的实在不行看看框架源码也就搞定了。

过去的技术如何经典,都只能说是过去了,现在涌现的诸多framework,目的都是解决以前难以避免的可重用性、可测试性、可维护性以及开发效率等方面存在的种种问题,从而使整个应用系统开发成本、维护成本的降低,这正是众多软件公司最为关注的所在。例如我如今所在公司的系统(美国某个州政府一个庞大的asp.net web form应用系统),就是使用ado.net,从而无可避免地使用了数以千计、且纠结复杂的stored procedure(而且不断在膨胀), 从而业务逻辑不可避免地分布到后端的数据库、中间的业务逻辑层、甚至UI上(当然分布在UI这点跟ado.net关系不大,是系统设计的问题),而这样的体系,系统的业务逻辑根本无法实现单元测试, 从而系统众多模块层层叠叠、分界不明、相互耦合,维护困难;各种bug不断涌现,此起彼伏,连绵不绝。公司也不得不养着数量众多的DBA和QA,天天忙于应对。仅此一例,足以看到这些过时技术所带来的弊端。如果依然守着这些,跟别的使用新技术新手段的公司作竞争,光是开发过程中的人员成本方面就足以落败。

温哥华地产 Helen Ye 叶俐 : 2013-03-28#13
回复: 对当前微软.net技术的一点浅见

都不对,PHP才是王道:wdb6:

别误人子弟呀

温哥华地产 Helen Ye 叶俐 : 2013-03-28#14
回复: 对当前微软.net技术的一点浅见

过去的技术如何经典,都只能说是过去了,现在涌现的诸多framework,目的都是解决以前难以避免的可重用性、可测试性、可维护性以及开发效率等方面存在的种种问题,从而使整个应用系统开发成本、维护成本的降低,这正是众多软件公司最为关注的所在。例如我如今所在公司的系统(美国某个州政府一个庞大的asp.net web form应用系统),就是使用ado.net,从而无可避免地使用了数以千计、且纠结复杂的stored procedure(而且不断在膨胀), 从而业务逻辑不可避免地分布到后端的数据库、中间的业务逻辑层、甚至UI上(当然分布在UI这点跟ado.net关系不大,是系统设计的问题),而这样的体系,系统的业务逻辑根本无法实现单元测试, 从而系统众多模块层层叠叠、分界不明、相互耦合,维护困难;各种bug不断涌现,此起彼伏,连绵不绝。公司也不得不养着数量众多的DBA和QA,天天忙于应对。仅此一例,足以看到这些过时技术所带来的弊端。如果依然守着这些,跟别的使用新技术新手段的公司作竞争,光是开发过程中的人员成本方面就足以落败。
你这个案例应该是设计和框架的问题,与是否使用“asp.net web form” 没有关系。在维护系统的时候,最关键的是程序规范化;否则的话,时间长了,系统超级复杂,五花八门的。
“多模块层层叠叠、分界不明”要么是设计不好、或者是项目维护交接不成功、或者维护队伍不规范。

温哥华地产 Helen Ye 叶俐 : 2013-03-28#15
回复: 对当前微软.net技术的一点浅见

还是做数据库省心啊,一个sql写n年都不用升级,有更多的精力都花在了解业务知识上了。

业务知识不是技术能力呀

lucc : 2013-03-28#16
回复: 对当前微软.net技术的一点浅见

mark

tech9 : 2013-03-28#17
回复: 对当前微软.net技术的一点浅见

你这个案例应该是设计和框架的问题,与是否使用“asp.net web form” 没有关系。在维护系统的时候,最关键的是程序规范化;否则的话,时间长了,系统超级复杂,五花八门的。
“多模块层层叠叠、分界不明”要么是设计不好、或者是项目维护交接不成功、或者维护队伍不规范。
不好意思,请看清楚,我这里是针对fieldmarshal兄盛赞早期版本的ado.net, 而举的例子,说的是早期的"ado.net"导致业务逻辑过于依赖数据库,从而业务逻辑同时分布在后台和中间层,使得单元测试困难(如果你有对这几千个布满复杂逻辑的stored procedure做单元测试的办法,请告之,不胜感激),因而系统可靠性低、开发维护成本高的问题,不是在说"asp.net web form"架构本身。当然除了这个,系统难以理顺、难以维护,跟你上述列举的原因也密切相关。如果是我表述得不够清楚,请原谅。

tech9 : 2013-03-28#18
回复: 对当前微软.net技术的一点浅见

业务知识不是技术能力呀
这一点同意

kakalin : 2013-03-28#19
回复: 对当前微软.net技术的一点浅见

先说我是个做JAVA多年的人,近期JOB AGENT要我学,说加拿大多数是用微软平台的,于是一直学习和获取认证。从我看来,ASP.NET MVC开发WEB实在是省心了,首先从集成开发环境上,不需要人去各网站将开源的拿过来,整合起来,磨合磨合搭建起一个框架,还有应用WEB容器等,而visual studio可谓是方便;二是框架限定的相对严格,工具类丰富,其他各层数据交互,写法上相对固定,这样使用同一集成环境的开发出来的代码也易懂容易读,而JAVA相对太灵活;三是.NET开发速度确实是快,很容易就将WEB弄出来了,开发人员更容易专注业务。准备将公司一些应用逐步转向.NET。

tech9 : 2013-03-28#20
回复: 对当前微软.net技术的一点浅见

先说我是个做JAVA多年的人,近期JOB AGENT要我学,说加拿大多数是用微软平台的,于是一直学习和获取认证。从我看来,ASP.NET MVC开发WEB实在是省心了,首先从集成开发环境上,不需要人去各网站将开源的拿过来,整合起来,磨合磨合搭建起一个框架,还有应用WEB容器等,而visual studio可谓是方便;二是框架限定的相对严格,工具类丰富,其他各层数据交互,写法上相对固定,这样使用同一集成环境的开发出来的代码也易懂容易读,而JAVA相对太灵活;三是.NET开发速度确实是快,很容易就将WEB弄出来了,开发人员更容易专注业务。准备将公司一些应用逐步转向.NET。
微软在这方面确实在不断进步,逐步消除了以往狂妄自大、自成体系的做派,引进吸收了许多有益、成熟的技术和产品,例如直接引进了jquery,废弃了倾注了多年努力的asp.net ajax框架; 如今mvvm逐步流行,微软也毫不犹豫地把优秀的 knockoutjs 引进过来,不再玩自搞一套的把戏。微软的这种开放姿态,也令有实力的各大软件开发商、开源框架乐于推出支持微软体系的产品和版本,从而微软得以不断吸收整合各种优秀的理念、技术、框架,融入到自己的体系中来,确实让应用系统的设计、开发过程省心不少。

tech9 : 2013-03-28#21
回复: 对当前微软.net技术的一点浅见

很容易就将WEB弄出来了,开发人员更容易专注业务。
:wdb10:

rujiangw : 2013-03-30#22
回复: 对当前微软.net技术的一点浅见

这才是高手

魏狂晋颠 : 2013-04-02#23
回复: 对当前微软.net技术的一点浅见

请教下楼主及各位,用.Net MVC,如果UI相对比较丰富,用什么来开发View比较合适?Silverlight,Jquery?
本人是从传统的destop app下来的老土程序员了,觉得webform比较亲切,呵呵,
请楼主或者各位指点下迷津,多谢了!
对了,现在我们做UI用Flex,数据交换用WCF,问下在加拿大流行这个吗?前景如何?

tech9 : 2013-04-02#24
回复: 对当前微软.net技术的一点浅见

silverlight 是个自成体系的网页plugin,不能与asp.net mvc 协作。jQuery 是javascript 库,它是编写 MVC View 的必要手段,UI目前是html5+css3为主。

WCF 应该有不少公司在用,而单纯使用Flex做UI的应该很少。

WebForm 与 Desktop WinForm(同类型的包括VB, Delphi,Powerbuilder等) 的开发方式类似,但由于其Stateless的特性,因而机制更复杂。 WebForm 确实已经落伍,微软最新的Visual Studio2012认证已经不再包括 Asp.net WebForm 的内容了。

魏狂晋颠 : 2013-04-03#25
回复: 对当前微软.net技术的一点浅见

silverlight 是个自成体系的网页plugin,不能与asp.net mvc 协作。jQuery 是javascript 库,它是编写 MVC View 的必要手段,UI目前是html5+css3为主。

WCF 应该有不少公司在用,而单纯使用Flex做UI的应该很少。

WebForm 与 Desktop WinForm(同类型的包括VB, Delphi,Powerbuilder等) 的开发方式类似,但由于其Stateless的特性,因而机制更复杂。 WebForm 确实已经落伍,微软最新的Visual Studio2012认证已经不再包括 Asp.net WebForm 的内容了。

多谢回复,Flex在中国好像很多人用啊,也是个plugin;

不太习惯这种没有太多控件支持的UI开发,每次看到敲代码来做View就觉得很痛苦。

楼主,现在html5+css3在北美有大型的应用吗?好像还没有有影响力的IDE出现吧?

tech9 : 2013-04-06#26
回复: 对当前微软.net技术的一点浅见

多谢回复,Flex在中国好像很多人用啊,也是个plugin;

不太习惯这种没有太多控件支持的UI开发,每次看到敲代码来做View就觉得很痛苦。

楼主,现在html5+css3在北美有大型的应用吗?好像还没有有影响力的IDE出现吧?

我前面就说过,习惯在webform里拖放控件做UI、不习惯写UI代码 的程序员会有个痛苦的转变过程。:wdb23:
IDE? visual studio 做html5+css3很好很强大啊,当然我不是指 drag and drop “html5+css3 controls”.
做网页UI, Dreamweaver也很好,如今支持html5+css3了。

温哥华地产 Helen Ye 叶俐 : 2013-04-10#27
回复: 对当前微软.net技术的一点浅见

微软在这方面确实在不断进步,逐步消除了以往狂妄自大、自成体系的做派,引进吸收了许多有益、成熟的技术和产品,例如直接引进了jquery,废弃了倾注了多年努力的asp.net ajax框架; 如今mvvm逐步流行,微软也毫不犹豫地把优秀的 knockoutjs 引进过来,不再玩自搞一套的把戏。微软的这种开放姿态,也令有实力的各大软件开发商、开源框架乐于推出支持微软体系的产品和版本,从而微软得以不断吸收整合各种优秀的理念、技术、框架,融入到自己的体系中来,确实让应用系统的设计、开发过程省心不少。
希望微软的Mobile平台能走得远

温哥华地产 Helen Ye 叶俐 : 2013-04-10#28
回复: 对当前微软.net技术的一点浅见

silverlight 是个自成体系的网页plugin,不能与asp.net mvc 协作。jQuery 是javascript 库,它是编写 MVC View 的必要手段,UI目前是html5+css3为主。

WCF 应该有不少公司在用,而单纯使用Flex做UI的应该很少。

WebForm 与 Desktop WinForm(同类型的包括VB, Delphi,Powerbuilder等) 的开发方式类似,但由于其Stateless的特性,因而机制更复杂。 WebForm 确实已经落伍,微软最新的Visual Studio2012认证已经不再包括 Asp.net WebForm 的内容了。

这个我也很赞同.微软很看好HTML5和云计算
Asp.net WebForm已经落伍了

chris_cc : 2013-04-10#29
回复: 对当前微软.net技术的一点浅见

关键是,今天你外包了没有?

魏狂晋颠 : 2013-04-10#30
回复: 对当前微软.net技术的一点浅见

这个我也很赞同.微软很看好HTML5和云计算
Asp.net WebForm已经落伍了

我到觉得微软是被迫的,在手机上太弱势了;另外从利益的角度讲,HTML5做好了,微软的window就挂了,可能是想把HTML5引偏吧,呵呵,

魏狂晋颠 : 2013-04-10#31
回复: 对当前微软.net技术的一点浅见

我前面就说过,习惯在webform里拖放控件做UI、不习惯写UI代码 的程序员会有个痛苦的转变过程。:wdb23:
IDE? visual studio 做html5+css3很好很强大啊,当然我不是指 drag and drop “html5+css3 controls”.
做网页UI, Dreamweaver也很好,如今支持html5+css3了。

在UI上花费太大力气没多少意义,不太看好目前的html5.

xpotato : 2013-04-11#32
回复: 对当前微软.net技术的一点浅见

微软的技术不能垮平台,基于.NET的技术绝大多数都不开源.这两点决定了在大型项目上.NET没办法和JAVA竞争.在中小企业里.NET更加有优势.

tech9 : 2013-04-11#33
回复: 对当前微软.net技术的一点浅见

微软的技术不能垮平台,基于.NET的技术绝大多数都不开源.这两点决定了在大型项目上.NET没办法和JAVA竞争.在中小企业里.NET更加有优势.

首先,是否开源,跟项目的大小并无相关,例如FBI、CIA的内部情报系统项目够庞大了吧,应该是巨型系统,但凭我的想象它们不会是开源的。我实际参与过的系统中,也有跨国的大系统,用户数是百万级的,数万级的在线流量,采用.NET技术并无问题。我上一个项目,美国某个州的政府大型系统,也是.NET。 .NET 只适合中小项目这种说法,被近五、六年的众多实例证明是失实的,至少是过时的。

其次,跨平台问题。所谓.net不能跨平台,现在主要说的是其服务端不能运行在非Windows系统的服务器上,例如不能安装在Solaris上。而Java的服务端既能运行在Unix服务器,也能运行在Windows服务器上(其实真正的系统方案中极少采用JAVA+Windows的),区别就在于此,但这个区别并不就等于说明.NET就不能应用于大型系统,Windows服务器支撑大型系统的例子比比皆是。

再者,或许 “ .net 不能跨平台” 这种说法导致一种容易望文生义的理解,认为.net开发的系统只能由运行windows的电脑才能运行,苹果、安卓等机器就不能访问了。如今的Web时代早已打破了这个藩篱,绝大部分应用都能通过客户端的浏览器访问,完全不需要考虑该应用的服务端是用.NET还是JAVA平台或者别的。所以“ .net 不能跨平台” 这种提法对于现在的Web时代来说已经意义不大,除非你要开发一个非Web的Desktop软件,而这软件必须要安装到客户的电脑上,而且这些电脑并不都是windows系统的,这时候.net才会难以胜任。例如我常用来下载视频的软件FreeRapid,就是这么个东西,用Java写的,能在装有java runtime 的所有客户端电脑上运行。

sallay : 2013-04-13#34
回复: 对当前微软.net技术的一点浅见

不过Java和.net成本是有差距的。
Java方面linux eclipse apache mysql都是免费的 oracle应该收费
但是.net方面呢?要给MS交不少钱吧!:wdb23:

tech9 : 2013-04-14#35
回复: 对当前微软.net技术的一点浅见

不过Java和.net成本是有差距的。
Java方面linux eclipse apache mysql都是免费的 oracle应该收费
但是.net方面呢?要给MS交不少钱吧!:wdb23:
其实这个问题我也曾经被困扰过,微软的东西都收钱,怎么能干得过免费的JAVA呢?而且我一直听说JAVA的方案其实并不比.net便宜,甚至更贵。于是我就跟做JAVA的同事探讨过。我目前的理解是:

1.其实免费是相对的,操作系统选用Linux的话,如果是大、中型的商业软件,例如银行、电信系统,就绝不会下载个免费的社区版Linux就了事,那当然会选用稳定的、有足够服务支持的商业Linux服务器产品,如RedHat(CentOs),Ubuntu Server等, 这些都卖钱,而且服务费并不便宜(其实这些基于免费Linux内核的商业版本主要都靠卖服务、买License赚钱)。如果想用更稳定、性能更好的Unix,那通常就更贵了,如Solaris等,其价钱,包括安装、培训、售后服务等比微软的Windows Sever贵得多。而且一旦采用高性能的 Unix 系统,则通常要搭载与之匹配的服务器,例如选用了 Oracle-Solaris,就要用Sparc服务器,选用 IBM-AIX,就要用Power服务器,等等,这些硬件通常要比微软 .NET 方案的基于Intel的服务器要昂贵不是一点点。

2.数据库服务器,也是类似,例如MySql, 自己下载个无需售后服务的社区版来玩玩当然免费,但用于商业机构,那需要使用商业版,每年每台服务器要交$2000到$10000不等的license费用。DB2、Oracle这些的总体费用就更贵了,绝非微软的SQL Server可比。

3.开发工具方面,微软用的是Visual Studio,卖钱(express版免费)。JAVA用的是开源的Eclipse, 免费。但同样有这个问题,如果是专业的软件公司,想用功能完备、性能稳定、服务齐全的商用Eclipse软件,例如 MyEclipse,也要掏钱买的(但比Visual Studio便宜一半左右)。

4.Apache是免费的,但.net的IIS是操作系统的一部分,不要额外收费( 当然可以认为是费用包含在内了)。

因此,对于商业系统来说,JAVA方案并不比.NET方案便宜,有时甚至会更贵。如果是普通系统、个人网站,不打算要任何售后服务,对可靠性稳定性没多大要求,可以采用全免费的JAVA方案: Linux + Mysql + Java + Apache + Eclipse, 相对地,微软也有个较便宜的.NET方案: Windows Server(包含 IIS) + SQL Server Express(免费) + Visual Studio Express(免费)+ ,主要区别就是后者要花钱购买 Windows Serve(却有了支持服务)。

这只是我的一点浅见,希望有JAVA方面的同行参与探讨并指正。

sallay : 2013-04-14#36
回复: 对当前微软.net技术的一点浅见

其实这个问题我也曾经被困扰过,微软的东西都收钱,怎么能干得过免费的JAVA呢?而且我一直听说JAVA的方案其实并不比.net便宜,甚至更贵。于是我就跟做JAVA的同事探讨过。我目前的理解是:

1.其实免费是相对的,操作系统选用Linux的话,如果是大、中型的商业软件,例如银行、电信系统,就绝不会下载个免费的社区版Linux就了事,那当然会选用稳定的、有足够服务支持的商业Linux服务器产品,如RedHat(CentOs),Ubuntu Server等, 这些都卖钱,而且服务费并不便宜(其实这些基于免费Linux内核的商业版本主要都靠卖服务、买License赚钱)。如果想用更稳定、性能更好的Unix,那通常就更贵了,如Solaris等,其价钱,包括安装、培训、售后服务等比微软的Windows Sever贵得多。而且一旦采用高性能的 Unix 系统,则通常要搭载与之匹配的服务器,例如选用了 Oracle-Solaris,就要用Sparc服务器,选用 IBM-AIX,就要用Power服务器,等等,这些硬件通常要比微软 .NET 方案的基于Intel的服务器要昂贵不是一点点。

2.数据库服务器,也是类似,例如MySql, 自己下载个无需售后服务的社区版来玩玩当然免费,但用于商业机构,那需要使用商业版,每年每台服务器要交$2000到$10000不等的license费用。DB2、Oracle这些的总体费用就更贵了,绝非微软的SQL Server可比。

3.开发工具方面,微软用的是Visual Studio,卖钱(express版免费)。JAVA用的是开源的Eclipse, 免费。但同样有这个问题,如果是专业的软件公司,想用功能完备、性能稳定、服务齐全的商用Eclipse软件,例如 MyEclipse,也要掏钱买的(但比Visual Studio便宜一半左右)。

4.Apache是免费的,但.net的IIS是操作系统的一部分,不要额外收费( 当然可以认为是费用包含在内了)。

因此,对于商业系统来说,JAVA方案并不比.NET方案便宜,有时甚至会更贵。如果是普通系统、个人网站,不打算要任何售后服务,对可靠性稳定性没多大要求,可以采用全免费的JAVA方案: Linux + Mysql + Java + Apache + Eclipse, 相对地,微软也有个较便宜的.NET方案: Windows Server(包含 IIS) + SQL Server Express(免费) + Visual Studio Express(免费)+ ,主要区别就是后者要花钱购买 Windows Serve(却有了支持服务)。

这只是我的一点浅见,希望有JAVA方面的同行参与探讨并指正。

有道理,学习了:wdb45:
不过话说会来了,要是都免费,那些公司都吃什么。

不过Java有开源社区全世界几百万开发者的支持,有时候想做一个东西,网上一看,总有人做过。
而且比较大的项目,总希望掌握源代码,用.net就有困难了。

魏狂晋颠 : 2013-04-17#37
回复: 对当前微软.net技术的一点浅见

研究了下HTML5,是个好东西,FLEX够用,确实过时了,希望HTML5能真正火起来。

tech9 : 2013-04-17#38
回复: 对当前微软.net技术的一点浅见

有道理,学习了:wdb45:
不过话说会来了,要是都免费,那些公司都吃什么。

不过Java有开源社区全世界几百万开发者的支持,有时候想做一个东西,网上一看,总有人做过。
而且比较大的项目,总希望掌握源代码,用.net就有困难了。

不明白为何较大的项目就要希望掌握源代码,大项目里使用非开源的Oracle多的是,难道他们都会因为读不到Oracle的源代码而感到困扰?就算是大项目里使用开源的Linux和MySQL,都是使用其编译后的产品,除非闲得DT,否则谁会去读它的源码捏?

另外提到Java开源社区,其实微软在这方面已经走得很远了,如果近一两年做过比较新的.NET项目,或者比较关注.NET技术走向的话,相信会深有体会。可以说,Java世界里有的技术,.Net 里也会有其相对或相类的,甚至许多Java世界里有影响力的开源产品,也有其.Net版本或直接支持.Net体系。上NuGet、Github、StackOverflow、Channel9、CodeProject、Pluralsight 这些网站看看,能感受到当下.Net的世界有多开放、蓬勃和精彩。

freestan : 2013-04-21#39
回复: 对当前微软.net技术的一点浅见

学习过asp.net MVC, 的确是个好东西。
我也是一直做windows平台的东西,呵呵。最近刚登陆,在找工作;发现相对于国内而言,多伦多这边windows平台上的工作机会反而多一些。

sharepoint是个好东西,公司内部交流很好用。

另外著名的stackoverflow.com就是建在.net平台上的


本来这是对“.net好像不吃香了”那篇帖子回帖的,但写着写着有点跑题,所以干脆独立成贴吧。

对于“.net不吃香了”的看法,我的感觉好像刚好相反,.net 在企业应用的开发中变得越来越成熟,以前web form那套把前端、后端混在一起的开发方式已经被微软废弃,后端的框架,如ORM、Web Service,以及并行、异步等都变得越来越强壮易用,在TDD、DDD、IOC 等的支持方面也越来越丰富,一点也不比Java弱。前端开发方面,微软自从认识到web form的种种弊病,决心逐步废弃这套曾经引以为荣的开发模式,近年推出的前端开发手段,与其他的平台,如java、php 等的差异越来越模糊,同样都是侧重并充分利用html5/css3/javascript 框架进行设计,这可以从微软最新的mvc4所推荐的web api、mvvm框架、spa模板等充分感受到其前端开发的强大、简洁、清晰和丰富,远非以往的web form可比。但这一转变带来的不良后果是,大批经验丰富的asp.net程序员要花不少力气去学习以接受和适应这一新的开发模式,以前种种引以自豪的 基于server control的前端开发经验,霎时间变得几乎毫无用处,如今不再有page life cycle,不再有post back, 不再有 server control,不再有view state, 不再有 update panel, 以前被不屑一顾的javascript变成了开发的主力语言,还要学习众多的javascript应用库,等等,对传统的.net 程序员构成了不小的挑战。 总之,微软在不断求变,在我看来,确实是变得越来越强大和成熟了。

另外,微软在力推其云端平台AZURE,在企业应用方面很有潜力,而sharepoint这产品也在企业中逐渐得到广泛应用,尽管我并不喜欢这东西,但不少企业都在招sharepoint程序员,薪酬还给得相当高。

不得不提的就是,微软曾经雄心勃勃力推的silverlight,如今可以说完全没有前途了,这是由于微软当初低估了andoid和iphone的影响力, 试图在移动平台应用开发上一统天下,显然这是彻底失败了。讽刺的是,silverlight 基本上只能用于开发微软自己的win phone 7, 连windows8 移动设备也不再使用silverlight,所以silverlight程序员要考虑转向了,考虑投入到.net阵营的程序员,也别再碰silverlight 了。

WPF,只能开发桌面应用,且不能用于手机,如今web 应用大行其道的时代,显得其市场应用方面越来越狭窄。morgan stanley 这一年来四处在招WPF程序员,还老招不到,给的薪酬不少,但我一直不为所动,尽管我有点WPF的经验。

WCF,微软的web service集大成者,很好很强大,但就是太过大而全,在使用、配置上比较麻烦等,学好它需要花相当大的精力。如今微软的WCF开发团队也意识到这一点,于是在ASP.NET框架上开发出轻量级的WEB API,足以替代WCF的RESTFUL部分,且轻便易用。所以WCF,了解一下就好了,不必花太大力气去研究。

至于windows8的开发,微软提供的开发手段有两种: c#+ XAML,html5+javascript. 我目前的态度是暂且观望,目前windows8的销售仍不明朗,能否在iOS、Android设备遍天下的情况下在市场上有所突破,还难以断言,如今花力气投入到这里,似乎有点仓猝,搞不好又是另一个silverlight。

所以,以我的浅见,如果打算找.net程序员工作,或者asp.net的程序员打算增强自己的市场竞争力,我觉得学习 asp.net mvc, 是个比较好的选择,在各大招聘网站上的职位也多,尤其是mvc,据我的观察,近一年来需求越来越多,值得把精力投入进去。另外,html5,css3这些跨平台、且桌面、网络、移动应用通吃的技术,无论是.net还是java、php程序员,都是必不可少的。

tech9 : 2013-05-22#40
回复: 对当前微软.net技术的一点浅见

大牛 Scott Allen 近期的一篇关于 .net 走向的文章
Where Is .NET Headed?

文章中,他的态度是:
1. Azure 很好很强大
2. 随着Windows 8 的推出, 当前和未来桌面应用到底该采用哪种技术和框架?XAML 到底有没有前途?这些都是让人困惑的问题,微软也未能作出有益的指引。微软在Windows 8应用开发方面比较让人捉摸不定:它既想继续保持以往的自成体系,但又难以抗拒日渐红火的前端开发模式带来的冲击。
3. .net如今已经相当成熟和强大,开发人员有大量的可选技术和框架来满足他们的开发需要,同时越来越多的开源框架项目融入到微软.net中来。
4. 前端开发技术正在蓬勃发展,也显得越来越重要。
5. 开发人员如果不想落伍,就不能仅仅着眼于微软本身的技术,必须涉猎、跟踪和掌握当前最前沿的开发技术和动向。

popiston : 2013-05-25#41
回复: 对当前微软.net技术的一点浅见

谢谢楼主介绍。

我有一次笔试的时候问考官:你们的网站多少比例用了MVC,他说很少,要说比例也就是1%吧。这是号称业界第一企业。但是还是很多招聘启事里提到要会MVC。

kakalin : 2013-06-18#42
回复: 对当前微软.net技术的一点浅见

其实这个问题我也曾经被困扰过,微软的东西都收钱,怎么能干得过免费的JAVA呢?而且我一直听说JAVA的方案其实并不比.net便宜,甚至更贵。于是我就跟做JAVA的同事探讨过。我目前的理解是:

1.其实免费是相对的,操作系统选用Linux的话,如果是大、中型的商业软件,例如银行、电信系统,就绝不会下载个免费的社区版Linux就了事,那当然会选用稳定的、有足够服务支持的商业Linux服务器产品,如RedHat(CentOs),Ubuntu Server等, 这些都卖钱,而且服务费并不便宜(其实这些基于免费Linux内核的商业版本主要都靠卖服务、买License赚钱)。如果想用更稳定、性能更好的Unix,那通常就更贵了,如Solaris等,其价钱,包括安装、培训、售后服务等比微软的Windows Sever贵得多。而且一旦采用高性能的 Unix 系统,则通常要搭载与之匹配的服务器,例如选用了 Oracle-Solaris,就要用Sparc服务器,选用 IBM-AIX,就要用Power服务器,等等,这些硬件通常要比微软 .NET 方案的基于Intel的服务器要昂贵不是一点点。

2.数据库服务器,也是类似,例如MySql, 自己下载个无需售后服务的社区版来玩玩当然免费,但用于商业机构,那需要使用商业版,每年每台服务器要交$2000到$10000不等的license费用。DB2、Oracle这些的总体费用就更贵了,绝非微软的SQL Server可比。

3.开发工具方面,微软用的是Visual Studio,卖钱(express版免费)。JAVA用的是开源的Eclipse, 免费。但同样有这个问题,如果是专业的软件公司,想用功能完备、性能稳定、服务齐全的商用Eclipse软件,例如 MyEclipse,也要掏钱买的(但比Visual Studio便宜一半左右)。

4.Apache是免费的,但.net的IIS是操作系统的一部分,不要额外收费( 当然可以认为是费用包含在内了)。

因此,对于商业系统来说,JAVA方案并不比.NET方案便宜,有时甚至会更贵。如果是普通系统、个人网站,不打算要任何售后服务,对可靠性稳定性没多大要求,可以采用全免费的JAVA方案: Linux + Mysql + Java + Apache + Eclipse, 相对地,微软也有个较便宜的.NET方案: Windows Server(包含 IIS) + SQL Server Express(免费) + Visual Studio Express(免费)+ ,主要区别就是后者要花钱购买 Windows Serve(却有了支持服务)。

这只是我的一点浅见,希望有JAVA方面的同行参与探讨并指正。
开发方面:ECLIPSE是免费的,但是一些插件有可能收费;一些产品分开发板免费,专业版收费。
运行方面:大企业或政府企业,不能一个TOMCAT就行吧,不能一个没有保障的MYSQL就行吧,花钱买容器,买服务。JAVA里的,贵的好多,多事甲骨文的,IBM的,HP的。

RayOctopus : 2013-06-29#43
回复: 对当前微软.net技术的一点浅见

无心插柳柳成荫,是.net技术让微软继风靡的asp之后重新成为软件大鳄。

blucc : 2013-07-20#44
回复: 对当前微软.net技术的一点浅见

PHP其实已经在语言方面显示到局限,但是Facebook发展到现在阶段,还坚持使用PHP,宁愿研究僻径来改善PHP性能,可见其还有潜力。个人感觉加拿大公司还是比较喜欢用微软的产品。

blucc : 2013-07-20#45
回复: 对当前微软.net技术的一点浅见

JAVA的诞生有点怪,其目的是为了“一次编写,到处运行”,其实这必然牺牲性能。我记得以前好像有个波兰人创造了一种人工语言,叫世界语,吸收了各种语言的优点,另外又精确又简单易学,当年中国也有不少人学习世界语,但是它最终没有代替英文。但最后JAVA变成了一种网络编程语言。被Oracle收购以后,个人觉得它发展不及以前。