当前位置:编程学习 > C#/ASP.NET >>

Visual Studio 2012 -_-|||,还推荐???这不是在炒冷饭嘛!!

不过换了点Metro图标,增设Metro程序开发功能。又没什么功能改进!

付费软件嘛除了里程碑版其他都是坑爹版。

比如:Visual Studio每年一个版本,用的最多的还是10年前的MFC向导。Photoshop每年一更新用的最多的还是10年前的图像调整功能。Windows出了这么多版本用得最多的还是10几年前的桌面和开始菜单。

每一个版本都得付钱买,年年涨价!大多数用户根本就不想用新增的功能,只是想更新一下软件界面,就得花大价钱买它的坑爹版!为啥叫坑爹版?因为它有可能会加入你不喜欢的特性!
其实不买坑爹版,用用里程碑版就够了,VB6就是最好的例子,现在还有大量的用户在用。

虽然这儿的人都不喜欢开源软件,我还是不得不说,开源软件没有上述问题,随便哪个版本免费用,升级随便升,经典功能一个不少!

对于人傻钱多的用户,根本就不会考虑付费软件升级到底值多少钱,到底和不合理,也许还能报销,但是这些钱完全可以用在更合理的地方!
对于盗版横行的市场,也许不用考虑开源软件和付费软件的选择,但是用盗版的你对得起自己的良心吗? --------------------编程问答-------------------- 反正每个坑爹版都是在炒冷饭!哈哈哈哈哈! --------------------编程问答-------------------- --------------------编程问答-------------------- metro真是丑的不得了,win8坚决不用。 --------------------编程问答-------------------- --------------------编程问答-------------------- LS今天很反常,我2天没来了,今天像往常一样就发了这1个帖子。LS就抓狂了! --------------------编程问答-------------------- 可以骂人不,不可以的话我就没什么说的了 --------------------编程问答--------------------
引用 5 楼  的回复:
LS今天很反常,我2天没来了,今天像往常一样就发了这1个帖子。LS就抓狂了!

打错了,是LZ,呵呵 --------------------编程问答-------------------- JAVA之王说的还是有道理的,要不也发个支持"xxxx"滚出.Net版的请进来签个到,我去签到。

类似于操作系统的更新,windows2000到windows7,API没有大的变化,为什么要这么多版本呢,加一些补丁就可以了,故意设置各种门槛,让早期版本不能使用新硬件设备,现在连软件也变本加厉的不能使用了,vs2012还要windows7,我服务器才windows2003,装么和我的服务器环境不一致,多出很多问题,不装么新功能又用不上,很不厚道,界面要变化的,类似于发布Plus包,愿意用新版本的就单独买,不愿意的就不买,不是很好呀。

新出来一个windows8么,还混杂传统桌面和Metro,你说你做两个系统不就好了,普通用户买metro版本,开发用户买传统版本,要不然我装了几个软件,桌面的图标是一页页数也数不清楚,一大堆毫无意义的普通快捷方式全到metro界面去了,搞得我现在只能开始运行里去找程序。 --------------------编程问答-------------------- 主要是收回成本的。vista听说。64亿美金开发成本。够月球几个返回最后还是失败了。
不过也挺一个。开发工具是真不该收费。就算是收费也不要这么贵。 --------------------编程问答-------------------- 关于版本,我觉得已经是商家违约的好工具了,不想后续服务就换新版本,这个在其他行业好像不太有这种情况吧,一般的买卖或者合约,都是针对某个版本,而版本的变更又是单方面的,这个版本的更新难道没有什么法律约束吗? --------------------编程问答--------------------
引用 7 楼  的回复:
引用 5 楼  的回复:

LS今天很反常,我2天没来了,今天像往常一样就发了这1个帖子。LS就抓狂了!

打错了,是LZ,呵呵

又弄错了,和另一帖搞混了,原来不是我打错了,是LS的回帖不见了! --------------------编程问答--------------------
引用 9 楼  的回复:
主要是收回成本的。vista听说。64亿美金开发成本。够月球几个返回最后还是失败了。
不过也挺一个。开发工具是真不该收费。就算是收费也不要这么贵。


Visual Studio Express永远免费(而且允许商用)
SQL Server Express也永远免费(而且允许商用)

Visual Studio 2012也有计划出Express版
SQL Server 2012 Express我已经用上了

Visual Studio Express的功能当然比不上Visual Studio Professional,但是比起SharpDevelop之类的工具,还是要强大很多的。

微软其实很厚道,做了个收费的工具拿来卖钱,但是不忘推出免费版本供个人开发者使用。
但是国外用Visual Studio Express稍微普遍一些,国内用得少,因为国内大部分个人开发者习惯用盗版,这样不好,还是用Express版名正言顺一些。

--------------------编程问答--------------------
引用 10 楼  的回复:
关于版本,我觉得已经是商家违约的好工具了,不想后续服务就换新版本,这个在其他行业好像不太有这种情况吧,一般的买卖或者合约,都是针对某个版本,而版本的变更又是单方面的,这个版本的更新难道没有什么法律约束吗?


其实,像微软这样的公司,是很怕人告的,只要你在法律层面站得住脚,尽管可以去告
第一,他们是大公司,告他们一旦告赢的话,可以获得很多利益上的补偿;
第二,他们又不是中石油中石化中国电信那样的央企。中石油中石化中国电信那样的企业有政府罩着,你告不赢的,微软就不一样了,他们是外企,来到中国这地头上,没有人罩着,而且美国人比较讲法律,比中国法律意识要强一些。

关键是你怎么告他,告他之前想想你自己到底有没有理。

微软推新版本不假,但从未强制你升级。
哪怕是Windows update,你自己不愿意升级,把自动升级选项一关,微软也拿你没办法。更不要说升级一个产品,从VS2008升级到VS2010,你不愿升级,微软能奈你何。

微软对产品的维护周期也比较长。有些产品,哪怕他不继续更新了,他也依然在维护。Windows XP出了快10年了,微软从发布XP的第一个版本一直到现在,一直为维护着XP,给XP发布补丁。
你们公司自己做的软件产品,或者你自己给别人做的软件,你能维护它十年吗?


--------------------编程问答--------------------
引用 13 楼  的回复:
引用 10 楼 的回复:
关于版本,我觉得已经是商家违约的好工具了,不想后续服务就换新版本,这个在其他行业好像不太有这种情况吧,一般的买卖或者合约,都是针对某个版本,而版本的变更又是单方面的,这个版本的更新难道没有什么法律约束吗?


其实,像微软这样的公司,是很怕人告的,只要你在法律层面站得住脚,尽管可以去告
第一,他们是大公司,告他们一旦告赢的话,可以获得很多利益上的补偿;
第二,……

呵呵这我就要说到说到你了,国家罩着的不是企业,你要懂,如果是江泽民的儿子去告中石油,那中石油不会好过的,如果我去告中石油,我不会好过的 --------------------编程问答--------------------
引用 13 楼  的回复:
引用 10 楼 的回复:
关于版本,我觉得已经是商家违约的好工具了,不想后续服务就换新版本,这个在其他行业好像不太有这种情况吧,一般的买卖或者合约,都是针对某个版本,而版本的变更又是单方面的,这个版本的更新难道没有什么法律约束吗?


其实,像微软这样的公司,是很怕人告的,只要你在法律层面站得住脚,尽管可以去告
第一,他们是大公司,告他们一旦告赢的话,可以获得很多利益上的补偿;
第二,……


是没违法,现在也没有这个法律,只是觉得不厚道,当年的服务器,装的是windows2000,现在服务器是还能用的,windows2000是.Net2以上的版本已经不支持了,后来换成2003,原来的2000光盘都还在,就这样一点价值都没有了,现在.net4.5又要让2003作废了。

是可以不换系统,但同时也不能换开发环境了,而IT技术又这样日新月异,用户需求也是每天在变,怎么可能守着原来的系统不变呢? --------------------编程问答--------------------
引用 15 楼  的回复:
引用 13 楼 的回复:
引用 10 楼 的回复:
关于版本,我觉得已经是商家违约的好工具了,不想后续服务就换新版本,这个在其他行业好像不太有这种情况吧,一般的买卖或者合约,都是针对某个版本,而版本的变更又是单方面的,这个版本的更新难道没有什么法律约束吗?


其实,像微软这样的公司,是很怕人告的,只要你在法律层面站得住脚,尽管可以去告
第一,他们是大公司,告他们一旦告赢的话,可以获得……

你就找顾客多要点钱不就完事了么 --------------------编程问答--------------------
引用 16 楼  的回复:
引用 15 楼 的回复:
引用 13 楼 的回复:
引用 10 楼 的回复:
关于版本,我觉得已经是商家违约的好工具了,不想后续服务就换新版本,这个在其他行业好像不太有这种情况吧,一般的买卖或者合约,都是针对某个版本,而版本的变更又是单方面的,这个版本的更新难道没有什么法律约束吗?


其实,像微软这样的公司,是很怕人告的,只要你在法律层面站得住脚,尽管可以去告
第一,他们是大公司,……


顾客就是自己,IT部门。 --------------------编程问答--------------------
引用 17 楼  的回复:
引用 16 楼 的回复:
引用 15 楼 的回复:
引用 13 楼 的回复:
引用 10 楼 的回复:
关于版本,我觉得已经是商家违约的好工具了,不想后续服务就换新版本,这个在其他行业好像不太有这种情况吧,一般的买卖或者合约,都是针对某个版本,而版本的变更又是单方面的,这个版本的更新难道没有什么法律约束吗?


其实,像微软这样的公司,是很怕人告的,只要你在法律层面站得住脚,尽管可以……

你看问题太浅了,你的直接顾客是公司,可是公司的顾客是谁呢? --------------------编程问答--------------------
引用 18 楼  的回复:
引用 17 楼 的回复:
引用 16 楼 的回复:
引用 15 楼 的回复:
引用 13 楼 的回复:
引用 10 楼 的回复:
关于版本,我觉得已经是商家违约的好工具了,不想后续服务就换新版本,这个在其他行业好像不太有这种情况吧,一般的买卖或者合约,都是针对某个版本,而版本的变更又是单方面的,这个版本的更新难道没有什么法律约束吗?


其实,像微软这样的公司,是很怕人告的,只要你……


呵呵,是学校,买当然也可以买,不过主要是个人想使用新软件,而买的理由并不充分。
比如我想使用新语法Async和Await,就要服务器换操作系统,这不是很合理。 --------------------编程问答--------------------
引用 15 楼  的回复:
是没违法,现在也没有这个法律,只是觉得不厚道,当年的服务器,装的是windows2000,现在服务器是还能用的,windows2000是.Net2以上的版本已经不支持了,后来换成2003,原来的2000光盘都还在,就这样一点价值都没有了,现在.net4.5又要让2003作废了。



你可以不换掉你的Win2000,也可以不换掉你的Win2003,你可以继续用旧技术

为什么你要换新系统、新技术?一定是因为新系统、新技术对你而言是有价值的,值得你换的,对不对?否则,你为什么要换?

我用过去的老手机也用得好好的呀,Nokia的非常老旧的手机,只能打电话发短信,用了好多年,直到今年3月才换掉了它,换了也不是扔了,而是给我父母用了。虽然现在的新手机层出不穷,但是为什么我要跟风?我如果不跟风,不就不多花钱了吗?
--------------------编程问答--------------------
引用 19 楼  的回复:
呵呵,是学校,买当然也可以买,不过主要是个人想使用新软件,而买的理由并不充分。
比如我想使用新语法Async和Await,就要服务器换操作系统,这不是很合理。


个人想用,可以呀,你可以装最新的Windows Server的180天试用版,试用完了你还可以用微软的一个命令行小工具再续3个月,这样你就可以免费地试用半年... 半年!!!不够你学Async和Await吗???

就算半年后不能再继续试用了,你还可以重装系统然后接着试用嘛,重装系统又不花钱,费点功夫而已。反正是你个人学习用,又不是生产环境。生产环境下你需要保存那些有价值的庞大的数据,但你个人学习用的环境,应该是随时想重装就能重装吧。

--------------------编程问答--------------------
引用 20 楼  的回复:
引用 15 楼 的回复:
是没违法,现在也没有这个法律,只是觉得不厚道,当年的服务器,装的是windows2000,现在服务器是还能用的,windows2000是.Net2以上的版本已经不支持了,后来换成2003,原来的2000光盘都还在,就这样一点价值都没有了,现在.net4.5又要让2003作废了。



你可以不换掉你的Win2000,也可以不换掉你的Win2003,你可以继续用旧……


如果是一个封闭的系统,不换到也没关系,但是我还得写一些网站放到服务器上去的,如果服务器只能支持.net2.0,那我可受不了,而且这儿还牵涉到开发者和所有者不是同一个人的问题,我想换,服务器又不是我的。 --------------------编程问答--------------------
引用 20 楼  的回复:
引用 15 楼 的回复:
是没违法,现在也没有这个法律,只是觉得不厚道,当年的服务器,装的是windows2000,现在服务器是还能用的,windows2000是.Net2以上的版本已经不支持了,后来换成2003,原来的2000光盘都还在,就这样一点价值都没有了,现在.net4.5又要让2003作废了。



你可以不换掉你的Win2000,也可以不换掉你的Win2003,你可以继续用旧……

有道理我,现在还在用Nokia当时买的1600呢,现在200快钱,但是我也没有购买新手机的欲望什么4S之类的对我来说没有意义呀,我根本连个短信都懒得发,只用三个功能打电话接电话,还有摔电话。 --------------------编程问答-------------------- 个人感觉win8很不好用,装完没过夜就卸了。 --------------------编程问答--------------------
引用 22 楼  的回复:
如果是一个封闭的系统,不换到也没关系,但是我还得写一些网站放到服务器上去的,如果服务器只能支持.net2.0,那我可受不了,而且这儿还牵涉到开发者和所有者不是同一个人的问题,我想换,服务器又不是我的。


两个问题:

1. 到底是你想换,还是你不想换?

在#15楼,你表达的意思是说你不想把以前用得好好的Win2000、Win2003换掉,怎么到这里你又想换了?
想换也是你,不想换也是你... 告诉我你真实的想法好吗?

2. 你要用它发布网站,那么这就不是你个人的学习、研究的环境了,而是生产环境了,对吧
生产环境下请遵循商业规则。


--------------------编程问答--------------------
引用 19 楼  的回复:
呵呵,是学校,买当然也可以买,不过主要是个人想使用新软件,而买的理由并不充分。
比如我想使用新语法Async和Await,就要服务器换操作系统,这不是很合理。

靠了!加2个函数就得换操作系统,就算是免费的我也不干!!!


引用 22 楼  的回复:
如果是一个封闭的系统,不换到也没关系,但是我还得写一些网站放到服务器上去的,如果服务器只能支持.net2.0,那我可受不了,而且这儿还牵涉到开发者和所有者不是同一个人的问题,我想换,服务器又不是我的。


不得不说,这种情况用JAVA处理起来要简单多了,可惜你用的是.net。 --------------------编程问答-------------------- 我是想操作系统能够稳定,新硬件和软件能够和之前的系统保持兼容。比如win2000能够运行.net4.5。但是他通过不兼容的手段让我难受,为了自己写程序方便还要去更新服务器的操作系统,这个不是很合理,等于是用新技术还要收费。 --------------------编程问答--------------------
引用 27 楼  的回复:
我是想操作系统能够稳定,新硬件和软件能够和之前的系统保持兼容。比如win2000能够运行.net4.5。但是他通过不兼容的手段让我难受,为了自己写程序方便还要去更新服务器的操作系统,这个不是很合理,等于是用新技术还要收费。

如果你买过寒冰王座和混乱之治就不会这么想了,顺便一说WOW的每次版本升级都会有很多玩家接着玩,以前的装备都没用了 --------------------编程问答-------------------- 不管怎么说,WIN8我是第一时间装上了,也很喜欢,而且很看好winphone的前景,
话说这些年来,微软越来越向开源社区靠拢,连我都没看懂。。。。。

其实吧,
大家在这个行业真的耗久了,了解深了,这些分歧其实就会没有了 --------------------编程问答--------------------
引用 27 楼  的回复:
我是想操作系统能够稳定,新硬件和软件能够和之前的系统保持兼容。比如win2000能够运行.net4.5。但是他通过不兼容的手段让我难受,为了自己写程序方便还要去更新服务器的操作系统,这个不是很合理,等于是用新技术还要收费。


千言万语汇集成一句话:你想吃霸王餐,你想吃完饭不给钱。  --------------------编程问答--------------------
引用 30 楼  的回复:
引用 27 楼 的回复:
我是想操作系统能够稳定,新硬件和软件能够和之前的系统保持兼容。比如win2000能够运行.net4.5。但是他通过不兼容的手段让我难受,为了自己写程序方便还要去更新服务器的操作系统,这个不是很合理,等于是用新技术还要收费。


千言万语汇集成一句话:你想吃霸王餐,你想吃完饭不给钱。


我觉得不是,吃火锅,锅底给了钱了,菜一份份自己想吃什么自己买了加进去,很合理,
他却吃了几口说,新的菜来了,原来的锅底不能用了,要给钱换新锅底,不然只能点原来的菜,而且原来的菜也越来越少。 --------------------编程问答-------------------- 我感觉收费挺好,花钱买服务... --------------------编程问答--------------------
引用 21 楼  的回复:
引用 19 楼 的回复:
呵呵,是学校,买当然也可以买,不过主要是个人想使用新软件,而买的理由并不充分。
比如我想使用新语法Async和Await,就要服务器换操作系统,这不是很合理。


个人想用,可以呀,你可以装最新的Windows Server的180天试用版,试用完了你还可以用微软的一个命令行小工具再续3个月,这样你就可以免费地试用半年... 半年!!!不够你学Async和Awa……


你就说用不用Async和Await吧,用,我得换操作系统,要钱,要重装服务器,好要考虑原来软件的兼容性。
不用,在网上眼奇我,这.net就是免费的呀,这个好呀,异步和同步一样方便呀。这不是让人难受么?

对软件公司来说,开发出来,说一下最底支持的系统,客户自己买操作系统去,没什么关系。
对与我给自己部门开发软件来说,就不一样了,不仅要考虑自己方便,还要考虑有没有服务器去支持他。 --------------------编程问答-------------------- 很强大,顶 --------------------编程问答-------------------- --------------------编程问答-------------------- 围观,一直用xp。。。 --------------------编程问答-------------------- 还没用过 --------------------编程问答--------------------
引用 33 楼  的回复:
你就说用不用Async和Await吧,用,我得换操作系统,要钱,要重装服务器,好要考虑原来软件的兼容性。
不用,在网上眼奇我,这.net就是免费的呀,这个好呀,异步和同步一样方便呀。这不是让人难受么?

对软件公司来说,开发出来,说一下最底支持的系统,客户自己买操作系统去,没什么关系。
对与我给自己部门开发软件来说,就不一样了,不仅要考虑自己方便,还要考虑有没有服务器去支持他。



你就继续矫情吧...

都啥年代了,还在矫情不想换掉你的Win2000...

咱们能不这么矫情不??

Win2000毕竟是10多年前的系统了...

要不你还是使C++吧,用CGI写Web。别告诉我你不会,既然抱残守缺死守你的Win2000,想必你也应该是对古老的技术玩得很熟的人吧

.Net 4.0能够支持的最老的系统是Windows XP/Windows Server 2003
.Net 4.5毕竟正式版还没出来,现在还是RC版,但是肯定不能支持Win2000

嫌操作系统贵?好吧,那你就和我一样密切关注Mono吧,这几年Mono发展势头越来越好,已经可以兼容微软的.Net 4.0了,将来兼容.Net 4.5也是期待中的事

我们公司在购买微软的系统、开发工具方面很舍得花钱,但是我依然密切地关注Mono,是因为假如有一天我出去自己搞个小公司,我一开始肯定也买不起Windows,所以我一定要积累足够丰富的Mono的经验,到时候我肯定会用Debian Linux + Mono + Apache + Postgresql + MonoDevelop/SharpDevelop 这样的组合,全免费,但是一样不跟时代脱节,一样紧跟最新的技术潮流

至于你,你就继续矫情你的Win2000吧...  --------------------编程问答-------------------- 顺便说一下... Mono可以装在Windows上... 但是告诉你个不幸的消息,Mono不支持Win2000,对Windows的最低版本要求是XP

然后再顺便告诉你,我业余时间尝试过,用Visual Studio Express这样的VS免费版本开发程序,然后用Mono编译。兼容性问题我已经能掌握得很好了。

Visual Studio 2012 Express继续免费,而且继续支持传统的桌面程序开发


无论你有钱,还是没钱,无论你们公司是否买得起Windows Server,是否买得起Visual Studio,你都可以去大胆地追踪最新的技术潮流,如果你视野够广阔,技术够扎实,想怎么玩技术就怎么玩技术。

--------------------编程问答-------------------- 立场不同,你只管开发,我还要管实施的。win2000的服务器现在是很少了,去年由于硬盘坏了,我最后一台服务器也升级为2003,要不然跑几个asp站点,并不需要升级。到是原来有个公共机房,普通PC,配置比较底,xp不流畅,装的2000,虽然能开机,但现在几乎沦为电子垃圾,没人用了。

至于Mono,前景不明朗吧,而且既然要换平台了,还不如直接换成java好了,反正语言也并不是关键。 --------------------编程问答--------------------
引用 11 楼  的回复:
引用 7 楼  的回复:

引用 5 楼  的回复:

LS今天很反常,我2天没来了,今天像往常一样就发了这1个帖子。LS就抓狂了!

打错了,是LZ,呵呵

又弄错了,和另一帖搞混了,原来不是我打错了,是LS的回帖不见了!


智商不够,就不要说话了嘛
--------------------编程问答-------------------- Windows7最不爽的就是不可以手动排列文件和文件夹的顺序和位置。。。这一点非常不爽,,,总感觉微软的这个规定非常脑残。。。。。。。。。。。。。。。。。 --------------------编程问答--------------------
引用 2 楼  的回复:
夏虫不可语于冰,笃于时也;井蛙不可语于海,拘于虚也;
好有诗意啊 --------------------编程问答--------------------
引用 40 楼  的回复:
立场不同,你只管开发,我还要管实施的。

这我就搞不明白了,这个就是开发的问题,又关实施什么事了?
我们公司也有负责实施的人,不同之处就是我们公司开发和实施是不同的人,而你们开发和实施是同一人。但是我们公司负责实施的人,我们之间的配合并无障碍,无论我配合他的工作还是他配合我的工作都没有问题。
到你这里,开发和实施是同一个人了,反倒不行了。这是工作能力不够呢,还是别的问题呢?


引用 40 楼  的回复:
win2000的服务器现在是很少了,去年由于硬盘坏了,我最后一台服务器也升级为2003,要不然跑几个asp站点,并不需要升级。


这么说促使你从Win2000换到Win2003的原因是你硬盘坏了,是这样的原因,而不是别的原因,那你就别扯别的杂七杂八的事情了,是什么原因就是什么原因,好不好。
而且你也只是为了跑几个ASP站点,别说Win2000和Win2003了,过去在NT4 Server上跑ASP我也这么干过一年多的时间。那你就别扯什么Async和Await了,你都说了,你就是为了跑几个ASP站点而已嘛,那么Async和Await你也根本用不到。


引用 40 楼  的回复:
至于Mono,前景不明朗吧,而且既然要换平台了,还不如直接换成java好了,反正语言也并不是关键。


你用不用Mono我不管,你换不换Java也不是我操心的事。我只想说,十年前,Mono刚诞生的时候,国外开始关注和发展Mono,那会儿,国内的一些人说:Mono前景还不明朗,不用它。五年前,Mono已经完美兼容.Net 2.0了,国内的一些技术大牛,比如shanyou、老赵,都在积极地写一些Mono的技术文章、进行这方面的探讨,国外很多著名的开源项目都在积极地推出Mono版,国内依然有一些人说:Mono前景还不明朗,不用它。十年后的今天,Mono已经兼容到.Net 4.0了,OpenStack、mojoPortal、Cosmos OS、StackService、MonoX,这些耳熟能详的开源项目都已经在Mono上取得很很多成功了,国内依然有一些人说:Mono前景还不明朗,不用它。
我想说,十年了,十年间,人们在Mono上做了很多巨大的改进,并且在实际项目中成功地应用,但是这一切对于天朝的抱残守缺的人们来说,都是充耳不闻的。从这里我看到了差距,你看到了什么呢?
--------------------编程问答--------------------
引用 44 楼  的回复:
引用 40 楼  的回复:
立场不同,你只管开发,我还要管实施的。

这我就搞不明白了,这个就是开发的问题,又关实施什么事了?
我们公司也有负责实施的人,不同之处就是我们公司开发和实施是不同的人,而你们开发和实施是同一人。但是我们公司负责实施的人,我们之间的配合并无障碍,无论我配合他的工作还是他配合我的工作都没有问题。
到你这里,开发和实施是同一个人了,反倒不行了。这是工作能力不够呢,……


赞! --------------------编程问答-------------------- 我们现在做软件还不是介样,
整整界面就说一个新版本开发出来鸟。 --------------------编程问答-------------------- 不知道你是故意装糊涂,还是真不明白,或者是你们公司很大,在公司说买什么就买什么,权利也大,或者是你们领导非常开明。

难道你开发一个系统,不考虑已经有的生产环境?什么都买新的,新服务器,新操作系统?
硬盘坏了是个引线,装2003,可以让这台服务器支持.net4的网站,这样可以充分利用这台服务器的价值。如果让.net4支持2000,我还需要等硬盘坏了才装呀?
也许你们开发,都是固定的几个系统,不断的给他升级,但对于我来说,是不断的增加新系统,并且很多是临时性的系统,需要的是快速开发,有新开发语法可以提高效率,当然是想要用的。
win2003是有买过大客户版,所以升级也就升了,win2008是没买过,所以用不用Async和Await就是要考虑的,买除了我开发方便点,并没有什么新的好处,况且买了win2008,又会出win2012什么的,这就是让我不痛快的地方!

至于mono,对于程序员来说,并没有很大的意义,这只是个部署平台的问题,而不是语言的问题,为了省钱,当然也可以用,但同时也把服务器弄乱了,增加自己维护工作量,还不如申请买个windows2008来得省力。 --------------------编程问答--------------------
引用 44 楼  的回复:
我想说,十年了,十年间,人们在Mono上做了很多巨大的改进,并且在实际项目中成功地应用,但是这一切对于天朝的抱残守缺的人们来说,都是充耳不闻的。从这里我看到了差距,你看到了什么呢?

十年了,Mono还是没有战胜MS,说这些有什么用呢?

张口闭口Mono,好像Mono是你家的。你平时又不是靠Mono吃饭,凭什么拿Mono说事??再说Mono和MS又不是同一个平台,Mono又不会买MS的帐!

以为用同一种语言就是一家??这真是个天真的想法。你用Visual Studio开发的程序在Mono上还得重新编译;配置文件、目录结构之类的协议MS没必要和Mono达成一致吧。你以为开发软件你只要懂C#代码就够了,你切换到Mono平台,你还会用SQL Server吗?你熟悉的什么COM、ACTIVEX之类的知识还能用得上吗??你还能用IIS作为服务器吗?

你用了Mono还不照样要转战LINUX平台??我发几个LINUX帖,你却一个劲的喷,既然瞧不起LINUX,你有何必跨到LINUX上来讨一口饭吃呢?

我看你只不过拿Mono来作挡箭牌使,你要真喜欢Mono怎么还会抵制JAVA,说JAVA不好??
--------------------编程问答--------------------
引用 38 楼  的回复:
嫌操作系统贵?好吧,那你就和我一样密切关注Mono吧,这几年Mono发展势头越来越好,已经可以兼容微软的.Net 4.0了,将来兼容.Net 4.5也是期待中的事

我们公司在购买微软的系统、开发工具方面很舍得花钱,但是我依然密切地关注Mono,是因为假如有一天我出去自己搞个小公司,我一开始肯定也买不起Windows,所以我一定要积累足够丰富的Mono的经验,到时候我肯定会用Debian Linux + Mono + Apache + Postgresql + MonoDevelop/SharpDevelop 这样的组合,全免费,但是一样不跟时代脱节,一样紧跟最新的技术潮流

至于你,你就继续矫情你的Win2000吧...

凭什么说Mono是你家的?我发几个LINUX帖,你却一个劲的喷,既然瞧不起LINUX,你有何必跨到LINUX上来讨一口饭吃呢?

凭什么说Mono和MS的.net平台是一样的?除了C#一样,其他哪个是一样的?Debian Linux + Mono + Apache + Postgresql + MonoDevelop/SharpDevelop,这些哪一点和MS有关联?
你用不靠Mono吃饭,凭什么用它来做挡箭牌?

你既然接受了Mono,为什么和JAVA过不去?为什么我夸夸LINUX你也要喷??

人家用win2000用得挺好的,凭什么要让人家为了个API升级就要升级操作系统?? --------------------编程问答--------------------
引用 47 楼  的回复:
不知道你是故意装糊涂,还是真不明白,或者是你们公司很大,在公司说买什么就买什么,权利也大,或者是你们领导非常开明。

难道你开发一个系统,不考虑已经有的生产环境?什么都买新的,新服务器,新操作系统?
硬盘坏了是个引线,装2003,可以让这台服务器支持.net4的网站,这样可以充分利用这台服务器的价值。如果让.net4支持2000,我还需要等硬盘坏了才装呀?
也许你们开发,都是固定的几个系统,不断的给他升级,但对于我来说,是不断的增加新系统,并且很多是临时性的系统,需要的是快速开发,有新开发语法可以提高效率,当然是想要用的。
win2003是有买过大客户版,所以升级也就升了,win2008是没买过,所以用不用Async和Await就是要考虑的,买除了我开发方便点,并没有什么新的好处,况且买了win2008,又会出win2012什么的,这就是让我不痛快的地方!

至于mono,对于程序员来说,并没有很大的意义,这只是个部署平台的问题,而不是语言的问题,为了省钱,当然也可以用,但同时也把服务器弄乱了,增加自己维护工作量,还不如申请买个windows2008来得省力。




有一点我看清楚了,你是真的不明白。

公司里面,该买服务器,该买开发工具,从来都不是我操心的事。我们公司也比较大,只要你理由充分,采购方面没有什么会为难你的地方。

但是,我也没有因此而放下忧患意识。我心里始终有一根弦:如果有一天,我自己创业,自己开公司,自己组建开发团队并自己负责资金问题,到那时候我不可能想买Windows Server 2012就买Windows Server 2012,想买Visual Studio 2012就买Visual Studio 2012,想买SQL Server Enerprise就买SQL Server Enterprise。

那么我对未来有什么对策呢?

1. 首先,在技术上,我主攻.Net,但却从未放下C语言,也一直关注Mono、关注Python、关注Ruby,从编程语言的层面来说,如果有一天我不在Windows平台了,我要保证自己还能用我所熟悉的C#,不必浪费我这么多年积累的.Net开发经验,同时对C的了解也保证我有接触系统底层、和系统底层开发人员进行配合的能力;

2. 关关注编程语言是远远不够的,还要关注开发框架,所以我通过这几年对Mono的持续关注,其中关注的一个重要的层面就是Mono和Microsoft.Net,它们之间在哪些方面是可以无缝兼容的,哪些方面可以达到有条件的兼容,哪些方面不兼容,不兼容的地方有什么解决方案没有,底层实现机制上有什么异同,它们在未来的发展方向上有哪些异同,这些都是要关注。另外,其他的第三方库,比如StackService、Json、AOP框架... 它们有哪些是Microsoft.Net only,哪些是mono only,哪些是二者兼备,都要了解。

3. 开发工具:现在我们在公司里,公司里有钱,我可以尽管去用Visual Studio Ultimate,但是当我在家时,我尽量用免费的Visual Studio Express,同时又考虑到将来有一天我可能连Windows都没有,所以MonoDevelop/SharpDevelop,以及Eclipse针对Mono的插件,Windows平台下免费的.Net Debugger、Linux平台下基于Mono的.Net Debugger,这些工具链层面的事情,一定要搞明白。

4. 平台层面:Windows与Linux、SQL Server与Postgresql/SQLite、IIS与Apache/Nginx,以及memcache... 这些都要关注。

5. 不同领域的层面:桌面开发领域、服务器端程序开发领域、嵌入式领域。比如桌面开发领域,在Windows上我们有DirectX、WPF,在Linux平台下Mono基于Gtk实现了Windows Form;嵌入式开发领域,除了应用广泛的.Net Compact Framework之外,还有能运行于裸单片机上不依赖于OS的.Net Micro Framework(这个已基于Apache license开源,免费且可应用于商业产品开发),还有借助C语言讲TinyCLR移植于不同的操作系统、不同的处理器平台的技术;如果有一天需要把TinyCLR移植到某一块开发板上,至少要明白移植的条件是什么,过程是什么样的。

这么多的内容不可能是一下子了解到的,但我近几年一直在持续关注,并尽可能多做尝试、多实战、多测试、多比较。

当我周围只有不到二十分之一的人知道Mono的存在时,我已经在业余时间接触Mono接触了好几年了;
当别的公司还不知道Mono可不可以用于放心地用于正式的商业项目时,我已经可以自告奋勇地直接去找技术总监,给他展示我手头的实例和数据,让他首先从技术上对Mono放心;然后,技术总监又提出:Mono虽好,但只有你一个人了解它,别人都没听说过,怎么办?这时候我正好向他展示,如何让习惯了在Windows平台下用Visual Studio开发.Net程序的人平滑地过渡到Mono的工具链,或者有些人跟本不需要过渡,只要他们遵循某一个规范,他们的程序可以完全在Windows平台上用VS开发,然后不需要改动一行代码就直接应用于Linux平台。



---------------------------------------------------------------------------------

现在再来看看你之前的一些观点:

“难道你开发一个系统,不考虑已经有的生产环境?什么都买新的,新服务器,新操作系统?”

-- 你错了。我不仅考虑,而且我自认为比你考虑得更多、更全面。
我们的产品维护周期是以几十年计的,因为我们开发的是航空航天领域的电子设备,我们又会用到最新的系统最新的方案,同时又要维护旧的系统旧的方案,甚至你见都没见过的旧的东西我们依然在维护,而且我们自己做的产品中,通信协议、应用层协议、操作规程、界面、功能的变化,我们都要维护,新旧系统之间要兼容、要平滑升级、甚至允许从新版本再退回旧版本,而且这些都是在不影响业务的前提下进行的。我们的考虑只会比你多不会比你少。

我只是说如果你想要用上最新的.Net 4.5的新特性的话你当然需要换最新的Windows Server,但你是否一定要用那些最新的.Net特性?其实.Net 4.0的特性已经很新了,而且.Net 4.0是支持XP和Win2003的,但你仍不满足,你非要用.Net 4.5,这是你的选择,不是我建议你做出的选择。

其实.Net 4.0已经是一个巨大的里程碑了,而.Net 4.5只不过是对.Net 4.0做了一些锦上添花的改动。
你稍微往后退一步,别用.Net 4.5,用.Net 4.0,你并没有多大的损失,但是换来兼容性可以兼容到XP和Win2003,多完美的选择!
可是你非要用.Net 4.5... .Net 4.5现在还没正式发布,现在还是RC版...然后你还要死守你的Win2003,你甚至还要死守你的Win2000...如果不是因为硬盘坏了你甚至都不会换掉你的Win2000...
你说你这不是装逼么??
不装逼你会死呀?!!
任何事情,成本,代价,收益,这些都是考虑在内的事,这个选择是非常顺利成章的。现在是你自己摆不平成本、代价、收益之间的平衡,反而在这里胡乱埋怨微软。
我说你也是个没出息的,你都可以埋怨人家微软了,你真是好牛呀,那你干嘛不自己写个Async和Await呢?你敢说.Net 4.0不能实现Async和Await的功能吗?无非麻烦点嘛,麻烦点没关系,你可以自己写个类库,做一下封装,把麻烦的事情变成不麻烦的事情,自己动手丰衣足食嘛!
你总不能说,我又要追随最新的特性,又要死守十年前的操作系统,又不想花钱换新系统,又懒得自己动手自己去实现新功能,那你到底要干嘛?我只能判断为你在装逼,我只能劝你小心被雷劈!



“至于mono,对于程序员来说,并没有很大的意义,这只是个部署平台的问题,而不是语言的问题,为了省钱,当然也可以用,但同时也把服务器弄乱了,增加自己维护工作量,还不如申请买个windows2008来得省力。”

-- 我觉得你又白痴又目光短浅。

Mono是一项长远的投资。你刚才还在抱怨你不想花钱买Win2008,也许有一天你还会抱怨你不想花钱买Win2012,有一天你还会抱怨你不想买Win2020、Win2030... 但是当你纠结于这些事情的时候,我已经不再纠结于Windows平台和Linux平台的选择了。当你还在纠结于换Win2008的费用时,我已经不纠结商业OS和开源免费OS之间的选择了。我其实远远地看到了你的前面,看到了你现在还没有看到但是将来可能会遇到的问题。

而且在你的世界里,.Net似乎只是局限于Windows上的东西,但在我的世界里,.Net不仅中立于Windows与Linux,而且从桌面软件到服务端,到嵌入式系统,包括WinCE、Windows Mobile、Windows Phone,包括嵌入式Linux,包括根本没有OS的裸单片机,都有.Net的舞台,然后在.Net够不到的地方、不适宜做的地方,有C来做补充。这就是为什么我坚持做一名懂C的、熟悉开源技术的.Net程序员。

当你在一味抱怨的时候,我已经在找解决方案了;当你还意识不到这些钻研的价值的时候,我已经在商业项目里面实施过我的方案了,而且我的商业项目不是你那种给别人做个破网站之类的项目,是涉及到好几家世界五百强企业的国际性项目。

你就继续纠结你的Win2000和Win2003吧。



--------------------编程问答--------------------
引用 48 楼  的回复:
十年了,Mono还是没有战胜MS,说这些有什么用呢?

张口闭口Mono,好像Mono是你家的。你平时又不是靠Mono吃饭,凭什么拿Mono说事??再说Mono和MS又不是同一个平台,Mono又不会买MS的帐!

以为用同一种语言就是一家??这真是个天真的想法。你用Visual Studio开发的程序在Mono上还得重新编译;配置文件、目录结构之类的协议MS没必要和Mono达成一致吧。你以为开发软件你只要懂C#代码就够了,你切换到Mono平台,你还会用SQL Server吗?你熟悉的什么COM、ACTIVEX之类的知识还能用得上吗??你还能用IIS作为服务器吗?

你用了Mono还不照样要转战LINUX平台??我发几个LINUX帖,你却一个劲的喷,既然瞧不起LINUX,你有何必跨到LINUX上来讨一口饭吃呢?

我看你只不过拿Mono来作挡箭牌使,你要真喜欢Mono怎么还会抵制JAVA,说JAVA不好??




张嘴第一句话就显示出你多么无知。

Mono和MS,不存在谁战胜谁的问题,它们彼此不是要互相替代的关系,而是互相补充的。在Win平台上,毫无疑问Microsoft.Net是首选,但在Windows之外,Mono是当仁不让的选择。

Microsoft.Net、Mono,还有一个你可能根本没有关注过的TinyCLR,他们都是.Net的不同的实现,就像Java也不止一个实现,Java不是又有Sun的实现又有IBM的实现吗?你敢说JVM只有Sun/Oracle在做?

可能在你们Java的世界里,Sun的JVM和IBM的JVM是要互相争夺市场份额的吧... 但是在.Net的世界里,Microsoft.Net和Mono、TinyCLR,它们彼此之间是互为补充的。



我从来不敌视Linux,我也从来不敌视Java,是因为你非要以贬低.Net来抬高Java,以贬低Windows来抬高Linux,才带来了我的反驳。在.Net讨论区没有你来搅和之前,无论Windows还是Linux,无论Java还是.Net,它们都是程序员可以使用的工具,而且都是成熟的、优秀的工具。

打个比方,刀,有手术刀、杀猪刀、砍柴刀、指甲刀、切菜到、西瓜刀、剔骨刀
你说你能拿着手术刀来鄙视砍柴刀吗?能拿着指甲刀来鄙视杀猪刀吗?
只能说在什么场合用什么工具。
你总不能拿着砍柴刀上手术台吧,总不能拿着手术刀切菜吧。

只有你这个傻逼,非要贬低.Net贬低Windows,这就是为什么我提议让你滚出.Net讨论区的原因。没有你,我们其他人思想开放得很,才不会像你那样狭隘地看问题。

--------------------编程问答--------------------
引用 49 楼  的回复:
人家用win2000用得挺好的,凭什么要让人家为了个API升级就要升级操作系统??




傻逼,看清楚了,他自己要换的,不是我建议的。



--------------------编程问答-------------------- 好吧,你们公司有钱,你牛,不用考虑成本,不过还不是靠航天工业赚纳税人的钱,我一个小员工,不想为了自己方便就浪费钱,自己麻烦点,抱怨几句微软不厚道而已。

软件的兼容性比硬件的兼容性简单的多,让2003支持.Net4.5我不相信是技术原因,就这么简单的事,给我的帽子也太大了吧,vs6可以出到sp6,现在微软还有什么软件能到sp6?
--------------------编程问答--------------------
引用 53 楼  的回复:
好吧,你们公司有钱,你牛,不用考虑成本,不过还不是靠航天工业赚纳税人的钱,我一个小员工,不想为了自己方便就浪费钱,自己麻烦点,抱怨几句微软不厚道而已。



对,我们公司确实有钱,但是尽管如此,我还在考虑Linux + Mono这种免费的.Net平台,还在积极尝试SharpDevelop这种免费的开发工具,还在家里用Visual Studio Express这种免费VS。

你口口声声说没钱换Win2008,可是免费的.Net方案就摆在那里,你连正眼都不瞧一下。你说mono这东西不知道可靠不可靠,别人现实的探索的经历放在那里,你都不屑于学习一下了解一下。

我真不知道到底是我更没钱还是你们更没钱,是我更想省钱还是你们更想省钱。

--------------------编程问答--------------------
引用 53 楼  的回复:
软件的兼容性比硬件的兼容性简单的多,让2003支持.Net4.5我不相信是技术原因,就这么简单的事,给我的帽子也太大了吧,vs6可以出到sp6,现在微软还有什么软件能到sp6?



有句话叫做“我的地盘我做主”

那么微软的地盘,人家微软做主,轮到你唧唧歪歪了吗?

你作为一名技术人员,需要做到的是,做好技术,做好权衡利弊,做好对各种方案的了解和掌握,不被绑死在某一个平台。有微软,要把技术做好,没有微软,依然要把技术做好。

大家都是在博弈,微软有他自己的利益考虑,你也有你自己的利益考虑,每个人都有自己的博弈。盲目抱怨是没有用的。你有来,我有往,你有矛,我有盾,你有招,我有对策。这才是正确的态度。


--------------------编程问答-------------------- 我不是说了么,不想为了自己一点点方便就浪费钱,和领导说不用新版本就不能开发,当然也可能去买呀。

而且你牛,还想自己单干,没事各个平台都去研究一番,我不过是尽快把新需求做成一个个网站,有简化的语法出来可以提高效率,想用却还要换系统,不痛快而已。

所以我们立场根本就不同。 --------------------编程问答--------------------
引用 55 楼  的回复:
引用 53 楼 的回复:
软件的兼容性比硬件的兼容性简单的多,让2003支持.Net4.5我不相信是技术原因,就这么简单的事,给我的帽子也太大了吧,vs6可以出到sp6,现在微软还有什么软件能到sp6?



有句话叫做“我的地盘我做主”

那么微软的地盘,人家微软做主,轮到你唧唧歪歪了吗?

你作为一名技术人员,需要做到的是,做好技术,做好权衡利弊,做好对各种方案的了解和掌握,……


不知道你是在黑微软还是什么意思,前几年我是傍着微软大腿不放的,最近思想是发生变化了,微软现在做的一些东西都不成气候,还这样对待他的用户,我不知道哪个是原因,哪个是结果了。 --------------------编程问答--------------------
人嘛,要见多识广。见得多了,想得多了,思想才能真正开放起来。


--------------------编程问答--------------------
引用 51 楼  的回复:
Mono和MS,不存在谁战胜谁的问题,它们彼此不是要互相替代的关系,而是互相补充的。在Win平台上,毫无疑问Microsoft.Net是首选,但在Windows之外,Mono是当仁不让的选择。

净扯淡!Mono不敢在Windows上和MS斗,MS也不敢涉足LINUX,这也叫互补??windows上开发的程序,换到Linux下面还要考虑能不能运行。JAVA至少不用担心这个问题!

引用 51 楼  的回复:
Microsoft.Net、Mono,还有一个你可能根本没有关注过的TinyCLR,他们都是.Net的不同的实现,就像Java也不止一个实现,Java不是又有Sun的实现又有IBM的实现吗?你敢说JVM只有Sun/Oracle在做?

可能在你们Java的世界里,Sun的JVM和IBM的JVM是要互相争夺市场份额的吧... 但是在.Net的世界里,Microsoft.Net和Mono、TinyCLR,它们彼此之间是互为补充的。


Mono不敢在Windows上和MS斗,MS也不敢涉足LINUX,这也叫互补?
Mono和MS更本就不在同一层面上较量!MS因为闭源和掌握windows主导权,基本垄断.net市场。

你说到JAVA的世界里许多大公司都在做商业服务器都遵循统一的标准,互相竞争制衡,这才叫互补!

我只不过质疑.net平台的缺点和windows令人不满意的地方,你就跟我夸耀.net的什么优点,还煽动其他网友来和我作对。

还叫别人换平台??换个平台比换个编程语言更难,不信你试试!

Mono确实是一个受不了微软又不舍得丢弃.net的人的好去处!开源的东西我很少去质疑,但是你总是言过其实,妖言惑众,那我就不得不多说两句了!
--------------------编程问答--------------------
引用 58 楼  的回复:
人嘛,要见多识广。见得多了,想得多了,思想才能真正开放起来。


思想开放也得向着正确的方向走!Mono确实是一个受不了微软又不舍得丢弃.net的人的好去处!
瞧,我的思想多开放,我也说Mono好了不是!

你要是思想够开放,你就不应该老说JAVA坏话,你们.net版的其他人污蔑JAVA的时候你也不该不管!都是开源同道,我在这里发个LINUX的帖子,你就不该来喷我!我说的正确的地方,你也应该认同! --------------------编程问答--------------------
引用 59 楼  的回复:
还叫别人换平台??换个平台比换个编程语言更难,不信你试试!



我已经试过了,而且不是我一个人试,是带着一个团队一起试,不是在一个小项目里试,是在一个涉及到几家世界五百强企业的国际性项目里面试的。而且我们把这件事做成了。

比起你夸夸其谈,我已经实践过了。

事实胜于雄辩。我之所以说到这些的时候有这样的底气,和我这几年的努力以及实践是分不开的,我绝对不是在这里讲空话、说大话。

--------------------编程问答--------------------
引用 61 楼  的回复:
我已经试过了,而且不是我一个人试,是带着一个团队一起试,不是在一个小项目里试,是在一个涉及到几家世界五百强企业的国际性项目里面试的。而且我们把这件事做成了。

比起你夸夸其谈,我已经实践过了。

事实胜于雄辩。我之所以说到这些的时候有这样的底气,和我这几年的努力以及实践是分不开的,我绝对不是在这里讲空话、说大话。

切换平台是JAVA的原生特性,试不试都一样。这就是事实!
世界500强不见得都好!
你都已经切换过去了,还要切换回来干什么,哦,原来只是试试、实践,也就是玩玩而已,还带着团队玩,这样的世界500强也不咋地啊。
--------------------编程问答--------------------
引用 62 楼  的回复:
切换平台是JAVA的原生特性,试不试都一样。这就是事实!
世界500强不见得都好!
你都已经切换过去了,还要切换回来干什么,哦,原来只是试试、实践,也就是玩玩而已,还带着团队玩,这样的世界500强也不咋地啊。




你个锤子,到处都看得到你贬低.Net吹捧Java!我来一一回答一下你这个回帖所涉及到的几个问题吧:

1. 可以切换平台的不仅仅有Java,也有.Net,也有Python,所以你也不要一提到切换平台就以为非你们家Java莫数,告诉你,切换平台方面是有人跟你们家Java竞争的,你们家Java不努力是有可能被淘汰的;

2. 为什么这个项目没有选Java?这个项目其实在最初论证的时候,不止一个方案,当时呼声最高的有三个方案:Java方案、Mono方案、Python方案。当时我们针对这三种方案认真作了对比,你们家Java不争气,在性能测试方面落后于Mono方案,在桌面开发方面(同时兼顾Win平台与Linux平台)落后于Mono,在开发效率方面落后于Mono和Python。所以,Java我们当时不是没有考虑,不是我们没给Java机会,而是Java自己不争气,在我们当时的实际测试与调研中败下了阵,出局了。

3. “你都已经切换过去了,还要切换回来干什么?” -- 你个锤子,我日尼玛,不了解就敢乱吠。我告诉你,我本人后来做别的项目去了,但是我们那个Mono项目,一直都还在按照我们当时既定的方案在持续发展中,谁告诉你他们后来又切换回来了?谁告诉你他们仅仅是玩玩而已了?我日你个锤子,把你污蔑我们那个项目的话赶紧收回,要不然我继续日你妈!!!

--------------------编程问答--------------------
引用 63 楼  的回复:

我说的只是JAVA的普通特性而已,哪来吹捧了??正确的观点你得承认,而不是用你那错误的观点来反驳!
说到.net我的观点也是正确的,我又没说它是个废渣,哪来贬低了?

就凭你的性能测试水平,任何好动西到了你手里全都变成废渣。

就凭你的桌面开发水平,任何语言都做不出像样的东西,更别说什么开发效率了。

就凭你的调研水平,你也只会选.net了。选就选了呗。Mono确实是一个受不了微软又不舍得丢弃.net的人的好去处。

你们那项目来龙去脉你都没说清楚,其实就是故弄玄虚,无图无真像,都是废话。 --------------------编程问答--------------------
引用 64 楼  的回复:
我说的只是JAVA的普通特性而已,哪来吹捧了??正确的观点你得承认,而不是用你那错误的观点来反驳!
说到.net我的观点也是正确的,我又没说它是个废渣,哪来贬低了?

就凭你的性能测试水平,任何好动西到了你手里全都变成废渣。

就凭你的桌面开发水平,任何语言都做不出像样的东西,更别说什么开发效率了。

就凭你的调研水平,你也只会选.net了。选就选了呗。Mono确实是一个受不了微软又不舍得丢弃.net的人的好去处。

你们那项目来龙去脉你都没说清楚,其实就是故弄玄虚,无图无真像,都是废话。





王,你若不服,可以自己去比较:

1. 性能:这个你放心,.Net比Java性能高,这个你可以自己去测试;

2. Java的桌面开发,跟.Net的桌面开发,根本是没有办法比的,如果不跟.Net比,那么Java的桌面开发尚可以说得过去,但是跟.Net的桌面开发技术放在一起一比,只能说欠缺的东西还多。

3. Java有JNI技术,.Net有P/Invoke,这两种技术都是用托管代码去调用本地代码的技术手段。但是,与P/Invoke相比,Java的JNI就是个悲剧。


王,不服你就用事实来说话。
--------------------编程问答--------------------
引用 65 楼  的回复:
1. 性能:这个你放心,.Net比Java性能高,这个你可以自己去测试;

2. Java的桌面开发,跟.Net的桌面开发,根本是没有办法比的,如果不跟.Net比,那么Java的桌面开发尚可以说得过去,但是跟.Net的桌面开发技术放在一起一比,只能说欠缺的东西还多。

3. Java有JNI技术,.Net有P/Invoke,这两种技术都是用托管代码去调用本地代码的技术手段。但是,与P/Invoke相比,Java的JNI就是个悲剧。

尽扯些没用的,你怎么不拿Mono的桌面开发和MS的桌面开发作比较?说到开源你就拿Mono做档箭牌,说到桌面开发你就拿MS做档箭牌。Mono不敢在Windows上和MS斗,MS也不敢涉足LINUX。Mono才不会买你帐。

和你的说法一样,我试过实践过了,JAVA的性能更高。

吹嘘.net桌面开发有球用,大多数桌面程序还是用JAVA和C++做的,就算做web UI也不管.net的事,一个jQuery就把.net苦心经验的webForm打得落花流水。做手机UI,.net排不上号,可以更名了,改成.mobi还合适点。

P/Invoke还不如VB6和ASP直接调用Windows API,比起VB6,.net就是个悲剧。 --------------------编程问答-------------------- 王,桌面开发方面,Mono可以基于Gtk#实现Windows Form。
不知道Java的桌面开发能强过Windows Form吗?
还有,不存在Mono和Microsoft斗的问题,它俩不是你死我活的对手,而是盟友。
Java的性能,你最好拿数据来说话。
jQuery,ASP.Net和它集成起来没有问题。你jQuery很强吗?很好,我直接拿来用就好了,我干嘛非要死守WebForm。
做手机UI,Windows Phone平台用WPF,WPF足够把Java下的UI技术打得落花流水了。
做Andriod和iPhone/iPad开发,MonoTouch比Android那一套好得多,Cocoa Framework现在也可以和MonoTouch集成了,Cocos2d、Utility 2D也移植到MonoTouch上面来了。

然后,说到P/Invoke,哈哈,Java的JNI你连提都不敢提了,把VB6搬了出来。可惜呀,你搬错了救兵。VB6本身是Native的,我这里提到的P/Invoke涉及到托管代码和非托管代码的互操作性,VB6不涉及到这个范围内的事情。谁涉及到这方面的事情呢?Java、.Net。你是不敢拿Java的JNI来跟P/Invoke交锋的,因为连你也知道,Java的JNI跟P/Invoke根本没法比。


王,你继续。 --------------------编程问答--------------------
王,别的不说,你敢不敢拿出一个JNI的例子,然后我也拿出一个P/Invoke的例子,我们看看在托管代码与非托管代码的互操作性上面,到底哪个强,到底哪个方便,好不好。

敢应战吗,Java之王??


--------------------编程问答--------------------
引用 68 楼  的回复:
王,别的不说,你敢不敢拿出一个JNI的例子,然后我也拿出一个P/Invoke的例子,我们看看在托管代码与非托管代码的互操作性上面,到底哪个强,到底哪个方便,好不好。

敢应战吗,Java之王??


而且我可以给你分别拿出Windows平台和Linux平台下的例子。
相应的,你要应战的话也需要拿出Windows平台和Linux平台下的例子。


--------------------编程问答-------------------- --------------------编程问答-------------------- 回帖即可获得10分 --------------------编程问答-------------------- 对于大公司,传统项目,最重要的是要保持连续性一致性稳定性。选用新技术新平台要做全面评估。宁可保守一点。

对于小公司或新项目,没有历史包袱的情况下,要勇于尝试最新技术。而不要老气横秋地说这个不稳定那个不可靠。

这是我的看法。 --------------------编程问答--------------------
引用 72 楼  的回复:
对于大公司,传统项目,最重要的是要保持连续性一致性稳定性。选用新技术新平台要做全面评估。宁可保守一点。

对于小公司或新项目,没有历史包袱的情况下,要勇于尝试最新技术。而不要老气横秋地说这个不稳定那个不可靠。

这是我的看法。



说得非常有道理。也很符合我们公司现在的现状。我们的很多老项目都是在用很老的技术,但新上马的项目都是用近一年内最新的引领潮流的技术。
--------------------编程问答-------------------- 成熟的生产手段总是依赖抽象,而不是各种具化的"很老"亦或是"潮流"技术

.net比java后生超过5年,这两者是体系vs平台的概念,设计思想的起点都不是一个层次,
然后,又过了10年,又有多少人真正理解了.net的抽象呢

--------------------编程问答--------------------
引用 68 楼  的回复:
王,别的不说,你敢不敢拿出一个JNI的例子,然后我也拿出一个P/Invoke的例子,我们看看在托管代码与非托管代码的互操作性上面,到底哪个强,到底哪个方便,好不好。

敢应战吗,Java之王??

我先贴个给你玩玩!好好学学!

http://baike.baidu.com/view/1272329.htm --------------------编程问答--------------------
引用 67 楼  的回复:
桌面开发方面,Mono可以基于Gtk#实现Windows Form。
不知道Java的桌面开发能强过Windows Form吗?
还有,不存在Mono和Microsoft斗的问题,它俩不是你死我活的对手,而是盟友。
Java的性能,你最好拿数据来说话。
jQuery,ASP.Net和它集成起来没有问题。你jQuery很强吗?很好,我直接拿来用就好了,我干嘛非要死守WebForm。
做手机UI,Windows Phone平台用WPF,WPF足够把Java下的UI技术打得落花流水了。
做Andriod和iPhone/iPad开发,MonoTouch比Android那一套好得多,Cocoa Framework现在也可以和MonoTouch集成了,Cocos2d、Utility 2D也移植到MonoTouch上面来了。

废话一堆,这个好那个好,一看原来都是开源的。开源的当然好!
Mono和Microsoft都是你的挡箭牌。
既然你用的都是开源的东西了,为什么我夸夸开源你又要来喷?
我为啥不能提VB6呢,既然有这么好的东西,比.net调用本地代码好用多了,当然要提!
--------------------编程问答--------------------
引用 76 楼  的回复:
引用 67 楼 的回复:

桌面开发方面,Mono可以基于Gtk#实现Windows Form。
不知道Java的桌面开发能强过Windows Form吗?
还有,不存在Mono和Microsoft斗的问题,它俩不是你死我活的对手,而是盟友。
Java的性能,你最好拿数据来说话。
jQuery,ASP.Net和它集成起来没有问题。你jQuery很强吗?很好,我直接拿来用就好了,我干嘛非……

用别人做的东西,用的再好,都是用啊,只有创造才有价值。。。
不如比比创造力我感觉更靠谱,您也设计一个机器人,跟他的机器人对打,谁赢了你们谁就牛B行么? --------------------编程问答--------------------
引用 75 楼  的回复:
我先贴个给你玩玩!好好学学!

http://baike.baidu.com/view/1272329.htm


我当然知道JNI了
但是JNI和P/Invoke比起来怎么样?

--------------------编程问答--------------------
引用 76 楼  的回复:
我为啥不能提VB6呢,既然有这么好的东西,比.net调用本地代码好用多了,当然要提!


那么VB6和Java的JNI比起来又如何?
JNI调用本地代码很强??
--------------------编程问答-------------------- Java之王果然是搞VB的出身... 搞VB的,外加对日外包... 嗯,不错,Java之王,你很好很强大。 --------------------编程问答-------------------- 此贴已火 --------------------编程问答--------------------
引用 79 楼  的回复:
那么VB6和Java的JNI比起来又如何?
JNI调用本地代码很强??

JNI调用本地代码当然很强,是和C/C++交互通用的编程接口,P/Invoke又算个什么东西,能有JNI这么通用吗?
VB6直接调用windows API,比P/Invoke效率高百倍。
我看你根本不懂编程!
我看你还是远离对日外包,因为就凭你这样的水平,面试也过不了。 --------------------编程问答-------------------- 贴个好点的P/Invoke代码让大家见识见识,不准贴闭源的。 --------------------编程问答-------------------- 搬个板凳,带上瓜子,围观。 --------------------编程问答-------------------- 好久没上csdn了,签个到,顺便看看大家怎么讨论的。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 83 楼  的回复:
贴个好点的P/Invoke代码让大家见识见识,不准贴闭源的。



下面我来贴一个小例子,基于Linux和Mono环境:

C语言代码:


int sum(int a, int b)    
{    
    return a + b;    



把它编译成动态连接库 libtest.so

gcc -c -Wall -Werror -fpic Test.c  
gcc -shared -o libtest.so Test.o


把编译得到的libtest.so拷贝到 /lib 目录下。

然后准备我们的C#代码:

    // -----------------------------------------------------------------------    
    // <copyright file="Invoke.cs" company="Yaping Xin">    
    // P/Invoke example.    
    // </copyright>    
    // -----------------------------------------------------------------------  
    namespace Invoke    
    {    
        using System;    
        using System.Runtime.InteropServices;    
        
        /// <summary>    
        /// .Net P/Invoke example.    
        /// </summary>    
        internal class Program    
        {    
            /// <summary>    
            /// Entry point of the application.    
            /// </summary>    
            /// <param name="args">Console arguments.</param>    
            internal static void Main(string[] args)    
            {    
                int result = Sum(2, 3);    
                Console.WriteLine("Shared library func execute result: {0}", result);    
            }    
        
            /// <summary>    
            /// Call method int sum(int, int) defined in Test.dll    
            /// </summary>    
            /// <param name="a">parameter a</param>    
            /// <param name="b">parameter b</param>    
            /// <returns>sum of a and b</returns>    
            [DllImport("libtest.so", EntryPoint = "sum")]    
            private static extern int Sum(int a, int b);    
        }    
    }  


把C#代码编译成可执行文件:
gmcs Invoke.cs


执行:
mono Invoke.exe


执行结果:
--------------------编程问答-------------------- Linux平台例子:

[科普小短文]在C#中调用C语言函数 (Linux & Mono版) 
http://blog.csdn.net/xinyaping/article/details/7672171

Windows平台的例子:

[科普小短文]在C#中调用C语言函数 
http://blog.csdn.net/xinyaping/article/details/7288325

--------------------编程问答-------------------- 这就是C#的P/invoke示例,大家看,多么简单。

Java也有类似的技术JNI,虽说也能达到同样的功能,但是非常繁琐。之前Java之王给出的一个链接也充分描述了JNI的繁琐、拖沓:http://baike.baidu.com/view/1272329.htm

--------------------编程问答--------------------
引用 89 楼  的回复:
这就是C#的P/invoke示例,大家看,多么简单。

Java也有类似的技术JNI,虽说也能达到同样的功能,但是非常繁琐。之前Java之王给出的一个链接也充分描述了JNI的繁琐、拖沓:http://baike.baidu.com/view/1272329.htm

不要老攻击人家的弱点嘛,其实JAVA在哪一些方面比C#强,哪一些弱大家都心知肚明,你老攻击一些弱点没什么意义啊,
而JAVA之王不过一个20来岁的毛头小子,你都32岁了何必跟他较劲呢? --------------------编程问答--------------------
引用 89 楼  的回复:
这就是C#的P/invoke示例,大家看,多么简单。

Java也有类似的技术JNI,虽说也能达到同样的功能,但是非常繁琐。之前Java之王给出的一个链接也充分描述了JNI的繁琐、拖沓:http://baike.baidu.com/view/1272329.htm

当局者迷,旁观者清,当你把JAVA之王当个事看的时候你已经输给他了,而且输的很惨,所以现在开始别理他了,他就输定了,就算嘴上他赢了不过在他的空虚内心中已经输给你了。。。而且是彻底的输 --------------------编程问答--------------------
引用 89 楼  的回复:
这就是C#的P/invoke示例,大家看,多么简单。

Java也有类似的技术JNI,虽说也能达到同样的功能,但是非常繁琐。之前Java之王给出的一个链接也充分描述了JNI的繁琐、拖沓:http://baike.baidu.com/view/1272329.htm

你以为JAVA没有相关的封装技术???
这不就是吗?
http://baike.baidu.com/view/2070164.htm中文说明
http://java.net/projects/jna下载!

发几个强大的JNA的例子:
Windows and Linux / Unix / Mac OS X 通用,调用系统API
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
 
/** Simple example of native library declaration and usage. */
public class HelloWorld {
    public interface CLibrary extends Library {
        CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
            (Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);
        void printf(String format, Object... args);
    }
 
    public static void main(String[] args) {
        CLibrary.INSTANCE.printf("Hello, World\n");
        for (int i = 0; i < args.length; i++) {
            CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
        }
    }
}

调用LINUX内核:
import com.sun.jna.Library;
import com.sun.jna.Native;
 
/** Simple example of native C POSIX library declaration and usage. */
public class exampleOfPOSIX {
   public interface POSIX extends Library {
        public int chmod(String filename, int mode);
        public int chown(String filename, int user, int group);
        public int rename(String oldpath, String newpath);
        public int kill(int pid, int signal);
        public int link(String oldpath, String newpath);
        public int mkdir(String path, int mode);
        public int rmdir(String path);
   }
 
   public static void main(String[] args) {
        POSIX posix = (POSIX) Native.loadLibrary("c", POSIX.class);
        posix.mkdir("/tmp/newdir", 0777);
        posix.rename("/tmp/newdir","/tmp/renamedir");
   }
}

调用windows内核:
import com.sun.jna.Library;
import com.sun.jna.Native;
 
/** Simple example of Windows native library declaration and usage. */
public class BeepExample {
   public interface Kernel32 extends Library {
       // FREQUENCY is expressed in hertz and ranges from 37 to 32767
       // DURATION is expressed in milliseconds
       public boolean Beep(int FREQUENCY, int DURATION);
       public void Sleep(int DURATION);
   }
 
   public static void main(String[] args) {
        Kernel32 lib = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
        lib.Beep(698, 500);
        lib.Sleep(500);
        lib.Beep(698, 500);
   }
}


JNI最底层,最通用。拿封装过的东西和底层的JNI比划,真是病得不轻。还有,你这个例子没有任何实际意义。 --------------------编程问答--------------------
引用 87 楼  的回复:
int sum(int a, int b)    
{    
    return a + b;    

我还以为J哥会举什么例子来,就是这么个加法??这么弱智的例子,真搞笑,哈哈哈哈哈哈哈! --------------------编程问答--------------------
存在即合理
世界上任何东西都不一定要完全分出来一个高低
就像宝马有人买,比亚迪也有人买
每种语言就像人的出生,都有自己的生长过程和生理曲线
相比之下,不如把高低之分看成差异化竞争
--------------------编程问答-------------------- 喜欢用JAVA作本地调用,我还找到一个工具呢------JNAerator 
http://code.google.com/p/jnaerator/


J哥,开源软件多的数也数不清,没有做不到,只有你想不到! --------------------编程问答--------------------   --------------------编程问答--------------------  没JB说个图! --------------------编程问答--------------------  CSDN请了个好员工 --------------------编程问答--------------------
引用 93 楼  的回复:
引用 87 楼  的回复:
int sum(int a, int b)
{
return a + b;
}


我还以为J哥会举什么例子来,就是这么个加法??这么弱智的例子,真搞笑,哈哈哈哈哈哈哈!




就是这么简单的一个例子,烦请你用Java的JNI写一下,我们看看在这么简单的一件事上Java做得怎么样。

至于调系统API,莫非你是白痴么?我能调自己写的API,就能调系统的API,二者本质上有区别么??
你举的JNI的那些功能哪个不是.Net的P/Invoke亦能实现的?


--------------------编程问答-------------------- 举复杂的例子谁不会哟,但是复杂的例子,其基础功能的原理和简单例子难道有二致吗?

还有,我举的例子都是自己写的,你呢?请拿出你自己写的例子,谢谢。

给你一个稍微复杂的例子,是监听电话拨入拨出事件的,也是我自己写的:

在Windows Mobile上监听Radio Interface Layer Notification 
http://blog.csdn.net/xinyaping/article/details/5904307


//---------------------------------------------------------------------------   
// <copyright file="RILHelper.cs" company="Yaping Xin">   
//     Copyright (c) Yaping Xin. All rights reserved.   
// </copyright>   
// <Description>Helper class for Radio Interface Layer.</Description>   
//---------------------------------------------------------------------------   
namespace MobileAutomation.Projects.VDFStressTesting   
{   
    using System;   
    using System.Runtime.InteropServices;   
    using System.Threading;   
   
    /// <summary>   
    /// Helper class for Radio Interface Layer.   
    /// </summary>   
    public class RILHelper   
    {   
       /// <summary>   
       /// Delegation definition of Log event handler   
       /// </summary>   
       /// <param name="message">Message to transfer</param>   
       public delegate void LogHandler(string message);   
   
       /// <summary>Event handler to record log</summary>   
       public static event LogHandler Log;   
   
       /// <summary>AutoResetEvent object</summary>   
       private static AutoResetEvent waithandle = new AutoResetEvent(false);   
          
       /// <summary>HRESULT to RIL object</summary>   
       private static IntPtr hRil = IntPtr.Zero;   
   
       /// <summary>HRESULT to result</summary>   
       private static IntPtr hRes = IntPtr.Zero;   
          
       /// <summary>   
       /// RILRESULTCALLBACK delegation   
       /// http://msdn.microsoft.com/en-us/library/aa920069.aspx   
       /// </summary>   
       /// <param name="dwCode">Specifies the result code.</param>   
       /// <param name="hrCmdID">ID returned by the command that originated this response.</param>   
       /// <param name="lpData">Data associated with the notification.</param>   
       /// <param name="cbData">Size of the structure pointed to by lpData.</param>   
       /// <param name="dwParam">Specifies the parameter passed to RIL_Initialize  or RIL_InitializeEmergency.</param>   
       public delegate void RILRESULTCALLBACK(   
           uint dwCode,   
           IntPtr hrCmdID,   
           IntPtr lpData,   
           uint cbData,   
           uint dwParam);   
   
       /// <summary>   
       /// RILNOTIFYCALLBACK delegation   
       /// http://msdn.microsoft.com/en-us/library/aa922465.aspx   
       /// </summary>   
       /// <param name="dwCode">Specifies the notification code. </param>   
       /// <param name="lpData">Data associated with the notification.</param>   
       /// <param name="cbData">Size of the structure pointed to by lpData.</param>   
       /// <param name="dwParam">Specifies the parameter passed to RIL_Initialize  or RIL_InitializeEmergency.</param>   
       public delegate void RILNOTIFYCALLBACK(   
           uint dwCode,   
           IntPtr lpData,   
           uint cbData,   
           uint dwParam);   
   
       /// <summary>   
       /// RIL Initialize   
       /// </summary>   
       /// <returns>RIL HRESULT</returns>   
       public static IntPtr Initialize()   
       {   
           return RIL_Initialize(1, new RILRESULTCALLBACK(RilResultCallback), new RILNOTIFYCALLBACK(RilNotifyCallback), 0xffffffff, 0, out hRil);   
       }   
   
       /// <summary>   
       /// RIL Deinitialize   
       /// </summary>   
       /// <returns>RIL HRESULT</returns>   
       public static IntPtr Deinitialize()   
       {   
           return RIL_Deinitialize(hRil);   
       }   
   
       /// <summary>   
       /// Retrieves the system time from the network.   
       /// </summary>   
       /// <returns>Positive HRESULT values</returns>   
       public static IntPtr GetSystemTime()   
       {   
           return RIL_GetSystemTime(hRil);   
       }   
   
       /// <summary>   
       /// RIL Reslt Callback Proc   
       /// </summary>   
       /// <param name="dwCode">Specifies the result code.</param>   
       /// <param name="hrCmdID">ID returned by the command that originated this response.</param>   
       /// <param name="lpData">Data associated with the notification.</param>   
       /// <param name="cbData">Size of the structure pointed to by lpData.</param>   
       /// <param name="dwParam">Specifies the parameter passed to RIL_Initialize  or RIL_InitializeEmergency.</param>   
       public static void RilResultCallback(   
           uint dwCode,   
           IntPtr hrCmdID,   
           IntPtr lpData,   
           uint cbData,   
           uint dwParam)   
       {   
           RIL_NCLASS dwClass = (RIL_NCLASS)dwCode & RIL_NCLASS.ALL;   
           string message = string.Format("ResultCallback - dwCode: {0}, RIL_NCLASS: {1}", dwCode, dwClass);   
   
           RILHelper.OnLog(message);   
   
           waithandle.Set();   
       }   
   
       /// <summary>   
       /// RIL Notify Callback Proc   
       /// </summary>   
       /// <param name="dwCode">Specifies the notification code. </param>   
       /// <param name="lpData">Data associated with the notification.</param>   
       /// <param name="cbData">Size of the structure pointed to by lpData.</param>   
       /// <param name="dwParam">Specifies the parameter passed to RIL_Initialize  or RIL_InitializeEmergency.</param>   
       public static void RilNotifyCallback(   
           uint dwCode,   
           IntPtr lpData,   
           uint cbData,   
           uint dwParam)   
       {   
           RIL_NCLASS dwClass = (RIL_NCLASS)dwCode & RIL_NCLASS.ALL;   
           string message = string.Format("NotifyCallback - dwCode: {0}, RIL_NCLASS: {1}", dwCode, dwClass);   
   
           RILHelper.OnLog(message);   
   
           waithandle.Set();   
       }   
   
       /// <summary>   
       /// Record the message   
       /// </summary>   
       /// <param name="message">Message to transfer</param>   
       protected static void OnLog(string message)   
       {   
           if (RILHelper.Log != null)   
           {   
               RILHelper.Log(message);   
           }   
       }   
   
       [DllImport("ril.dll")]   
       private static extern IntPtr RIL_Initialize(   
           uint dwIndex,   
           RILRESULTCALLBACK pfnResult,   
           RILNOTIFYCALLBACK pfnNotify,   
           uint dwNotificationClasses,   
           uint dwParam,   
           out IntPtr lphRil);   
   
       [DllImport("ril.dll")]   
       private static extern IntPtr RIL_Deinitialize(IntPtr hRil);   
   
       [DllImport("ril.dll")]   
       private static extern IntPtr RIL_GetSystemTime(IntPtr hRil);   
    }   
}   
补充:.NET技术 ,  非技术区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,