是否要选择 .NET,这是个问题 已翻译 100%

大王叫我来卖萌 投递于 2014/12/16 21:10 (共 9 段, 翻译完成于 12-28)
阅读 10126
收藏 47
3
加载中

我很困惑.

多年来,我一直是一名 .NET / Microsoft 技术栈下面的开发者(从这儿往后我会简单点叫它 .NET , 而我的意思则是 Windows / ASP / .NET / IIS / SQL Server 等等这些东西. 一个产品家族或者一些产品) ,并不是因为任何“宗教信仰”般的原因, 也不是因为我已经像其他一些人那样受到企业思维的影响,或者业务范围的限制d – 而仅仅只是因为机缘巧合,我开始使用 Visual Basic 2 进行了开发, 而后一发不可收拾的使用之后的版本,之前则变成了历史与回忆.

LeoXu
LeoXu
翻译于 2014/12/17 21:23
3

为 .NET 祈祷

常年来我总是读到一些“很酷”的家伙使用着 Unix / Linux / Ruby / Python,以及一些你能叫得出名字的东西 ; 比方说他们能使用VM快速的解决一个问题; 比方说开源软件社区如此之庞大,充满了热衷奉献的人们; 比方说他们的工具或者框架是多么的稳定和快速.

不知何故我从未去涉足这些领域. 我的意思是,我并没有去质疑这些事实,而我总只是看看而已,某种程度上我仍然我行我素, .NET 技术栈是强大、丰富而稳定的,他拥有精湛的工具 (主要是 Visual Studio),并且还有非常友好的文档.

特别是近年来,Microsoft以及第三方的库、工具和框架的爆炸式发展,让.NET更加的棒. 许多的这些工具“灵感”都源自Linux – 尽管他们的创建者都很少承认这个事实. 一些东西的命名——在顺序和重要性方面完全都是随机的: ASP.NET MVC, Chocolatey, NuGet, Entity Framework, Nancy, Web API, PowerShell, Windows Server Core… 当然还有许多其它“更小”的工具,丰富了整个生态系统,像: NUnit, Resharper, Web Essentials, GitHub for Windows, Dapper, Lucene.Net, Autofac, Cmder,以及成百上千的其它项目. 更别提许多其它源起 .NET 的项目,或者是他们自身的发展版本: Octopus Deploy, Hangfire, Xamarin, SignalR. 我总是感觉在 .NET的世界中我没有丢掉任何东西 – 工具都有,稳定性也有;年轻人喷它只是为了耍酷,或者至少他们是这样想的. 在整个这段时间里我唯一认同的问题是使用 Windows/.NET 生态系统会花费许可费用, 而  *nix 是免费的. 但这一争论并没有明确一些东西,因为存在使用免费的东西就不会获得企业级的支持等等因素. (我知道这个争论源起子MS的市场营销策略, 是非常主观的,而我现在不回去深入纠结这一点.)

LeoXu
LeoXu
翻译于 2014/12/17 22:15
2

某种形式的觉醒

尽管如此,我已经看到的是一幅越来越令人担忧的图景. Microsoft的代码不是开放的,而当他们最终开始开源他们几年以前的一些项目是, 他们也不会 接受代码的提交请求. *nix中好的库和框架比Windows的要大很多。 Internet Explorer么? 甚至都没有让我开始去强调这一点. 我已经写好了属于我的这部分东西. 许多基准测试都声称IIS表现要比nginx差. Shell么? 必须告知大家真相: PowerShell 是一个很大的进步,但从使用的稳定性、易用性和速度方面来看他仍然落后于 sh/Bash. Windows 用户仍旧没有改变他们对于用键盘来操作shell的心态. 所有的指南/教程/Q&A 都是用界面截图的步骤来向你解释如何搞定一个IT的任务 – 打开这个程序,点点这里,从列表里面选择等等. – 而命令行方式的版本则常常就是一行你实际只要复制粘贴和重复使用的能起作用东西, 不会有版本之间丢失步骤,或者改变位置诸如此类 的问题.

LeoXu
LeoXu
翻译于 2014/12/17 22:47
2

一些.Net/Windows的老手开始向*nix迁移,并写下了博客。这不是什么新鲜事。据我的印象,这个现象从近五年开始显著。人们提出了各种反对.Net/Windows的观点,并开始偏爱*unix。一开始,我仅仅认为这是某些极客的观点:微软不够酷,Linux让我干活更快,Windows根本不安全,微软没有开源软件的优点。我听到有些人说它们迁移到了LMAP栈,觉得他们自由了。但是我仍然不认同这种观点,就像我前面说到的,.Net的生态环境更健壮,还在不断的发展,并且有足够的支持。

慢慢地,我开始发现某些真相。就像当跟别人争吵时,你们都不会仔细听别人的意见。但是当你们静下心,放下自己的主观意见,公正地判断问题的对错,你就会理解别人的观点,发现别人的观点并不是那么站不住脚。

crab2313
crab2313
翻译于 2014/12/18 22:38
3

我实践过很多博客的观点。 他们中大部分都讨论.NET,我的技术来源于此。 但是当你简单过滤关于软件设计的博客时,出现的都是企业家精神、精益创业、编程马拉松的相关文章 – 这些都不是企业动态 – 他们很少谈到.NET。 他们不讨厌.NET,也不是整天嘲笑.NET。他们只是不关注.NET。 他们用Python/Node/Go/Meteor语言研究自己的东西(我没有提到RoR,因为最近它不太流行),他们使用精简版Linux虚拟机或者Docker容器,他们把系统发布到Heroku或者Google AppEngine或者DigitalOcean上一个精简的Linux虚拟机,就这些。 这并不意味着他们的架构不够强壮,因为他们确实有数据库、框架、所有需要的工具,这些都是免费的,并且这些框架/工具很稳定,他们在生产环境中使用这些东西。

如果你看下早期和成熟的创业公司 – 会发现他们的代码90%(呃,这个精确的数字是我捏造的,但实际数字与此相近)使用Linux技术架构。 在硅谷,很难找到优秀的的.NET工程师。现在,NodeJS(考虑成本,它运行在Linux上,尽管在Windows上它也运行得一样好)很流行 – 部分原因它是MEAN框架(由 MongoDBExpressJSAngularJS、NodeJS 组成的完整的WEB开发框架)的一部分。 我越来越多地听到.NET开发属于过时、传统的团队,而真正轻便、敏捷、MVP架构的系统使用MEAN框架(以前叫LAMP,开发PHP的一个框架)开发。

daxiang
daxiang
翻译于 2014/12/22 08:41
2

.NET革命

另一方面,微软总部雷德蒙德吹来变革之风,并且这阵风越来越强。 变革开始于微软开源.NET栈的一些技术,发展于微软成立开源组织如 Outercurve和 MS Open Tech。我们开始看到这些组织对一些著名的开源项目的重大贡献,最终微软开始接受代码提交 – 开始是并行技术,现在发展到.NET核心类库,并介绍了下一代.NET vNext。 微软不再否认Linux的存在。 他们不仅仅接受Linux的存在(我确信在一些重要内部政策的要求下,他们的市场部被迫改变销售模式),他们甚至在微软Azure云平台上提供官方的Linux虚拟机,截至我写这篇文章,Azure云平台20%的虚拟机使用Linux系统。 不久的将来Docker也将支持Windows系统。

daxiang
daxiang
翻译于 2014/12/27 12:22
2

下一代.NET vNext的宣布使微软一飞冲天。微软反复修改.NET代码来对抗Linux系统和Mac系统 - 不再是用于写hello world但不能用于产品的Mono工程。最终,.NET工程不再绑定.csproj文件 - 根据物理路径中的内容,工程可以进行转化并且完全是可移植的,包括工程运行时使用的.NET框架版本。所有这些快速消除了.NET栈技术和框架之间的鸿沟,这一点我之前提到过。

作为一名.NET爱好者,.NET现在看起来比过去好多了。几年前,作为一名.NET协作开发的程序员,我感到惭愧,最近我再也没有这种感觉了。几个月前,我在Reversim 博客(希伯来文)中详细地描述了这一点。

daxiang
daxiang
翻译于 2014/12/28 08:58
2

再次困惑.

一直没想明白, 到底是 Microsoft 做的太少, 还是起步太晚. 虽然, 在明白它那种传统又独特的方式做出来的产品已经失去市场之后,  Microsoft 一直努力的跟上市场的步伐. 但是 Microsoft 的霸气已然不复存在. 也许它在桌面领域(包括个人桌面系统和商务桌面系统)依然独占鳌头, 但是, 很久以前它在浏览器领域已经失去优势.  服务器领域(1, 2), 和开发栈(development stacks)领域也没有太多的优势可言. 重点是, Microsoft 还能不能跟上潮流, 阻止开发人员继续往 Linux 那边流失, 甚至扭转整个局面呢?

另外一个问题是, Linux 和 and Mac OS 版的 .NET 能否 100% 实现 Windows 版的功能. 暂且不提 Microsoft 是不是真心给非 Windows 系统提供完全兼容的 .NET. 我认为技术上能不能实现才是个大问题.  

BreakingBad
BreakingBad
翻译于 2014/12/20 10:39
3

虽说我是个资深的 .NET 程序猿, 按理说因该支持 .NET. 但是究竟选择哪一种技术,  关键要看它适不适合手头的的项目. 就拿我的下一个 web gig 来说, 除非其他开发框架有明显优势, 如: NodeJS+Express, Meteor, Go, Python+Django (当然, 这些框架在客户端或服务端的某些方面有自己的优势) – 否则, 我真的想不出有什么理由不用 .NET. 我指的是服务端 – 网站应用. 至于客户端, 那是另外一回事.

如何? 觉得 .NET 有前途吗? 还是心意已决, 打死不碰 .NET? 现在, 钱(Monetary) 和 IP 不再是问题, *nix 的程序猿会考虑用 .NET 吗?

BreakingBad
BreakingBad
翻译于 2014/12/22 20:25
2
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(71)

R
Roby-奋斗码农
我做.NET也做JAVA,主意是.NET,感觉各有优点,但如果有得选择,我肯定不会选.NET,我感觉更喜欢JAVA,优点做过这两种的大概都能感觉出,JAVA更方便,更通用,工具更多,规范性可移植性更强。
subool
subool
.net技术性能都不错, 但只能在windows上使用.
冰雪柠檬
冰雪柠檬
用.net搬砖,私下用c++,java
妈她亲我
妈她亲我

引用来自“双城记”的评论

不选择。
只见过从.net迁移到jvm的案例,从来没见过jvm迁到.net的。
ms如果真让.net完全支持非windows平台,那意思是要自灭windows server吗?

引用来自“妈她亲我”的评论

windows server只能用来做WEB服务器么?

引用来自“肖滔”的评论

我觉得将来windows将来就是桌面客户端的命
哎。。。。。。。你还是先多了解下windows server吧。
人生能绕几个圈
人生能绕几个圈

引用来自“阿_嚏”的评论

看完怎么感觉.net已经老了呢
只是有些人还依依不舍罢了
肖滔
肖滔

引用来自“双城记”的评论

不选择。
只见过从.net迁移到jvm的案例,从来没见过jvm迁到.net的。
ms如果真让.net完全支持非windows平台,那意思是要自灭windows server吗?

引用来自“妈她亲我”的评论

windows server只能用来做WEB服务器么?
我觉得将来windows将来就是桌面客户端的命
肖滔
肖滔

引用来自“花儿笑弯了腰”的评论

“: ASP.NET MVC, Chocolatey, NuGet, Entity Framework, Nancy, Web API, PowerShell, Windows Server Core… 当然还有许多其它“更小”的工具,丰富了整个生态系统,像: NUnit, Resharper, Web Essentials, GitHub for Windows, Dapper, Lucene.Net, Autofac, Cmder,以及成百上千的其它项目. 更别提许多其它源起 .NET 的项目,或者是他们自身的发展版本: Octopus Deploy, Hangfire, Xamarin, SignalR.”

引用来自“久永”的评论

你这评论有点早~

引用来自“花儿笑弯了腰”的评论

还没有翻译完,推荐到头条,我就来评论喽。
一堆的垃圾,拐个弯实现个小功能,还可以美其名曰
肖滔
肖滔

引用来自“静风流云”的评论

.net绝对要比java好,这点毋庸置疑。
但国家采购限制,何解?
只能非国有企业用。
这是要招骂声啊,自己的平台。都不能绿色,好么?
鞋底两万里
鞋底两万里
为毛没有人有勇气站出来说自己用0和1编程呢?
小嘛小儿郎
小嘛小儿郎
楼主说的很对!但就我个人而言,我做了五年.net,当然没法跟楼主相提并论,在这只是说说我自己的一些观点。我觉得恰恰是微软做的太多,无论是asp.net或者asp.net mvc,微软都做了很多努力,但是总感觉微软把程序员跟底层隔绝起来,虽说确实在一定程度上提高了开发效率,但更多的造成了程序员对底层不够了解,基础知识不牢固……大学时流传一句话:java入门难而提高容易,.net入门容易提高难,相信也会有这层关系……
返回顶部
顶部