5年前学过一段的asp2.0,已经落后了好多了,现在的WPF,WCF都不懂了。。做过一点JAVA,现在在搞PHP,发现PHP语言很好上手,就是各种各样的开源框架太多了,跟不上学习的步子啊。。:(
写得不错.确实是. 不过,微软的这种改革,并不能给它带来实际收益! 在mobile 平台上已经落后很多. 其次,大公司一般是很少会去使用新的不成熟的技术. 微软这样千变万化,现在我们对Windows8的未来还没看到胜利的曙光,微软这种变化是不会给微软带来任何彻底取代java的机会. 弄不好被java咸鱼翻身.
另外,相比之下微软已经算不上“千变万化”了,只是微软自己在做框架,几年才一变,变得最多的只是版本而已。而java/php使用的是开源的框架,论变化、论选择,他们才称得上五花八门。写得不错.确实是. 不过,微软的这种改革,并不能给它带来实际收益! 在mobile 平台上已经落后很多. 其次,大公司一般是很少会去使用新的不成熟的技术. 微软这样千变万化,现在我们对Windows8的未来还没看到胜利的曙光,微软这种变化是不会给微软带来任何彻底取代java的机会. 弄不好被java咸鱼翻身.
不过对于目前最主流的java,php来说框架虽然多,但是其实大同小异,掌握一个新框架其实还是很快,不过要精通就是很麻烦了,关键是debug时候的陷阱比较恶心,毕竟这些框架其实也有自己的问题。如今,无论是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什么的实在不行看看框架源码也就搞定了。
你这个案例应该是设计和框架的问题,与是否使用“asp.net web form” 没有关系。在维护系统的时候,最关键的是程序规范化;否则的话,时间长了,系统超级复杂,五花八门的。过去的技术如何经典,都只能说是过去了,现在涌现的诸多framework,目的都是解决以前难以避免的可重用性、可测试性、可维护性以及开发效率等方面存在的种种问题,从而使整个应用系统开发成本、维护成本的降低,这正是众多软件公司最为关注的所在。例如我如今所在公司的系统(美国某个州政府一个庞大的asp.net web form应用系统),就是使用ado.net,从而无可避免地使用了数以千计、且纠结复杂的stored procedure(而且不断在膨胀), 从而业务逻辑不可避免地分布到后端的数据库、中间的业务逻辑层、甚至UI上(当然分布在UI这点跟ado.net关系不大,是系统设计的问题),而这样的体系,系统的业务逻辑根本无法实现单元测试, 从而系统众多模块层层叠叠、分界不明、相互耦合,维护困难;各种bug不断涌现,此起彼伏,连绵不绝。公司也不得不养着数量众多的DBA和QA,天天忙于应对。仅此一例,足以看到这些过时技术所带来的弊端。如果依然守着这些,跟别的使用新技术新手段的公司作竞争,光是开发过程中的人员成本方面就足以落败。
不好意思,请看清楚,我这里是针对fieldmarshal兄盛赞早期版本的ado.net, 而举的例子,说的是早期的"ado.net"导致业务逻辑过于依赖数据库,从而业务逻辑同时分布在后台和中间层,使得单元测试困难(如果你有对这几千个布满复杂逻辑的stored procedure做单元测试的办法,请告之,不胜感激),因而系统可靠性低、开发维护成本高的问题,不是在说"asp.net web form"架构本身。当然除了这个,系统难以理顺、难以维护,跟你上述列举的原因也密切相关。如果是我表述得不够清楚,请原谅。你这个案例应该是设计和框架的问题,与是否使用“asp.net web form” 没有关系。在维护系统的时候,最关键的是程序规范化;否则的话,时间长了,系统超级复杂,五花八门的。
“多模块层层叠叠、分界不明”要么是设计不好、或者是项目维护交接不成功、或者维护队伍不规范。
微软在这方面确实在不断进步,逐步消除了以往狂妄自大、自成体系的做派,引进吸收了许多有益、成熟的技术和产品,例如直接引进了jquery,废弃了倾注了多年努力的asp.net ajax框架; 如今mvvm逐步流行,微软也毫不犹豫地把优秀的 knockoutjs 引进过来,不再玩自搞一套的把戏。微软的这种开放姿态,也令有实力的各大软件开发商、开源框架乐于推出支持微软体系的产品和版本,从而微软得以不断吸收整合各种优秀的理念、技术、框架,融入到自己的体系中来,确实让应用系统的设计、开发过程省心不少。先说我是个做JAVA多年的人,近期JOB AGENT要我学,说加拿大多数是用微软平台的,于是一直学习和获取认证。从我看来,ASP.NET MVC开发WEB实在是省心了,首先从集成开发环境上,不需要人去各网站将开源的拿过来,整合起来,磨合磨合搭建起一个框架,还有应用WEB容器等,而visual studio可谓是方便;二是框架限定的相对严格,工具类丰富,其他各层数据交互,写法上相对固定,这样使用同一集成环境的开发出来的代码也易懂容易读,而JAVA相对太灵活;三是.NET开发速度确实是快,很容易就将WEB弄出来了,开发人员更容易专注业务。准备将公司一些应用逐步转向.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出现吧?
希望微软的Mobile平台能走得远微软在这方面确实在不断进步,逐步消除了以往狂妄自大、自成体系的做派,引进吸收了许多有益、成熟的技术和产品,例如直接引进了jquery,废弃了倾注了多年努力的asp.net ajax框架; 如今mvvm逐步流行,微软也毫不犹豫地把优秀的 knockoutjs 引进过来,不再玩自搞一套的把戏。微软的这种开放姿态,也令有实力的各大软件开发商、开源框架乐于推出支持微软体系的产品和版本,从而微软得以不断吸收整合各种优秀的理念、技术、框架,融入到自己的体系中来,确实让应用系统的设计、开发过程省心不少。
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已经落伍了
微软的技术不能垮平台,基于.NET的技术绝大多数都不开源.这两点决定了在大型项目上.NET没办法和JAVA竞争.在中小企业里.NET更加有优势.
其实这个问题我也曾经被困扰过,微软的东西都收钱,怎么能干得过免费的JAVA呢?而且我一直听说JAVA的方案其实并不比.net便宜,甚至更贵。于是我就跟做JAVA的同事探讨过。我目前的理解是:不过Java和.net成本是有差距的。
Java方面linux eclipse apache mysql都是免费的 oracle应该收费
但是.net方面呢?要给MS交不少钱吧!
其实这个问题我也曾经被困扰过,微软的东西都收钱,怎么能干得过免费的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方面的同行参与探讨并指正。
有道理,学习了
不过话说会来了,要是都免费,那些公司都吃什么。
不过Java有开源社区全世界几百万开发者的支持,有时候想做一个东西,网上一看,总有人做过。
而且比较大的项目,总希望掌握源代码,用.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程序员,都是必不可少的。
开发方面:ECLIPSE是免费的,但是一些插件有可能收费;一些产品分开发板免费,专业版收费。其实这个问题我也曾经被困扰过,微软的东西都收钱,怎么能干得过免费的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方面的同行参与探讨并指正。