PHP或ASP.NET:我在做正确的事情吗?

本文是翻译,版权归原作者所有


在2001年我有个选择PHP或学习ASP.NET的机会,我选择了后者,我正怀疑那是不是个好的想法。

Waybackmachine3

在2001年,我需要做出一个决定

假想你能够回到过去,重新开始你的技术生涯。你会改变哪个重要时刻?在2001年,我是一家非常成功的web咨询公司的合伙人,我们做与传统ASP有关的所有工作,ASP那时候非常火爆。我们是一家微软店铺,并以此为傲!但是……

我接触了早期的.NET版本,非常讨厌它。我憎恨Visual Studio,不懂C#,VB.NET像是个笑话。我记得Ferry坐在旧金山奥克兰决定掌握ASP.NET基础再工作,我记得当时心中暗想:

你需要多么艰难才做出了这样的决定?

那天我去上班,和我的合伙人坐在一起,告诉他.NET已经“偏离轨道”了。他笑了一会儿,我们从技术角度长谈了公司的未来和我的未来。

我熟悉Classic ASP, IIS, SQL Server, Windows NT/2000,我知道用它们做什么。我不熟悉Linux或MySQL,但是我从看过的代码中获悉,这种“新”框架基本上是传统ASP的拷贝,只是有些喜欢MySQL和Apache。

我可以熟悉,它会是一个挑战,但是这很有趣。我那时候爱学习 就像 现在我爱学习 一样——我将要买书,一个月左右就可以了解!

但是那时候,我们有付费客户,我们不能放弃,需要服务他们一直到将来。学习新平台会很难,尤其当客户发现的时候,因为我们基本上向他们销售微软的东西(针刺破了一个洞……好熟悉的痛)。

这或许像是一个明显的选择 - “用你熟悉的”。难点在于“我熟悉的”不能很好地转化成.NET。不管发生什么,我都需要学习一门新语言和框架。

微软的世界

微软MVP

你不得不记住,2001年是一个特别的微软世界。大型网站用Linux/Java构建,如果你在硅谷告诉人们,你是一个微软开发者,你会被嘲笑的(今天仍然这样,当然,扩大了一些)。

硅谷外面的美国公司(以及有前景的业务)- 微软就是答案。这些公司投资了微软的Windows和Office-现在他们需要网站。这里没有反对微软的偏见,事实上,它只是对立面。

我就不太幸运了(我的公司随着泡沫而倒闭),我在一家名叫“The Valley”的创业公司工作,公司的整套架构都是开源/Java/Emacs/Eclipse,我是唯一的微软开发者,被安排到了全部是微软产品的重要客户那里。

开发组花费数周对客户网站做了很小改动,我用SQL Server和传统ASP只花了几个小时。他们可以对着所有想要的东西发笑,但我给了客户喜爱的结果。

这就是为什么我选择和微软在一起,成为一名.NET开发者。不仅如此,我拼了命地变成一名微软认证开发者(我做到了!)。最终,我成为了微软MVP,在那时,我认为我做对了。

很容易对此一笑,但是那时候如果你在和我工作类似的地方,MVP就是一切。去问问你的.NET朋友,他们会告诉你的……

事情发生了

ods

由于无法将ObjectDataSource绑定到DataList而无法使用EF! — Rob Conery (@robconery) February 18, 2014

我今天发到了tweet里,但它仍然是停留在很多ASP.NET开发者的脑海里。顺便说一句,这不是滑稽的文章,而是微软开发者网站。

这就是我的开发生涯简介,然后我认为该做其他技术了。

大概从2002年到2008年,微软web世界还是(很高程度地仍然是)微软“可视化组件开发”。意味着你基本上主要依靠拖拖拽拽就可以让组件为你工作(使用HTML,带上服务器端代码,CSS等)。

这意味着通向被映射为一片片XML的“数据源”的表单域,而这些XML爬过键盘,爬进你的指尖,使你的灵魂陷入黑色淤泥里。

又发生了

2008年我开始接触Rails,很快我就喜欢上了。不,这不是一个“我从不回头”的前奏。Rails帮我明白了,我一直生活在完整的回音室里。HTML和CSS不可怕(对于ASP.NET开发者来说,过去是这样的),代码是你的朋友。

总结成一点,在.NET世界里,我们处理后端代码和服务器组件,大部分有技能的开发者尽可能用少量代码编写app。在如此杂乱的发展中,我们莫名其妙地朝着我们应该成为的、相反的方向走:web开发者。

这深深困扰着我,我记得想过“是的,我的确在用.NET开发”。但是经过它的洗礼后,我有了下面的体会:

如果我从Rails取出我喜欢的东西,然后带回到ASP.NET呢?

然后我开始了SubSonic(受ActiveRecord启发的ORM),我甚至特别为.NET试了5种不同的方法来生成一个MVC框架!我喜欢C#,微软产品的市场相当大 - 为什么我们需要依靠雷蒙德(译者注:微软总部),就因为我们基于他们的产品构建吗?

这塑造了我接下来5年的职业生涯。我被冠以“麻烦制造者”,“搅拌器”,“抱怨者”,还有通常被认为的巨魔。或许我有那么一点点,“变革推动者”是新的(和Twitter一样),因此,我认为我的公关技巧会更好些。

偏离主题了(但仍然相关)。我真正想知道的是……

如果我不做呢?

今天带给我一切的东西是我再一次被请求看看Ghost Blog模块(随机讨论的部分),它仍然用Node按照PHP应用程序的方式编写。

这促使我想知道:“如果我仍然用PHP,我也会这样写Node程序吗?”我已经通过脚本的眼睛看到了web,迷失在我曾经做为.NET开发者学到的一些“高级概念”,会因此自然要这样认为,我会按这种方式写Node的。

谁在回避这个问题:我会像一个.NET开发者来写Node应用程序吗?

可能会。我知道那样写Ruby应用程序,这是坏事吗?破坏我的Node代码会带来什么影响?

我知道我对Linux/MySQL了解太多,我确信我参与了一些有趣的开源项目,和我学.NET一样。我也知道我很可能会爱上Rails,并把Rails的精华应用到PHP和…… 是的。

就像历史总是相似的,但是主要的部分是不同的:我没有把5年时间花在ASP.NET里。我认为说“我要”是公平的:

有个华丽的拒绝:.NET妨碍了我对HTML/CSS/JavaScript的掌握。我不必告诉你它们现在和将来是多么地重要。

另外我习惯了“可视化工具”,我每天都为此斗争。我习惯了项目文件和数据库里的表的tree view。可视化开发计划毁了我的大脑!天啊!

另一方面

当我最终转向Rails世界时,或许有些挫折,这激发我尽可能多学些东西。激情陪伴着我,也是本文的灵感。借用Lewis Black的一句话:

If it weren't for my horse, I wouldn't have spent that year in college【注1】

我的“horse”就是ASP.NET.

原文地址:http://www.wekeroad.com/2014/02/18/i-had-a-choice-php-or-net/ 注1:这句话的意思可参考:http://www.urbandictionary.com/define.php?term=if%20it%20wasn’t%20for%20my%20horse%2C%20i%20wouldn’t%20have%20spent%20that%20year%20in%20college

译文:PHP或ASP.NET:我在做正确的事情吗? 》| 腊八粥