PHP 还是 ASP.NET:我做了正确选择么?

  在2001年, 我曾面临一个选择,去学PHP或者ASP.NET。 我最终选了后者,但我依然怀疑这个选择其实不好。

  那是2001年,我面临一个选择。

  设想一下,如果你可以回到过去,改写你的技术生涯。哪些重要的时刻,你会想改变?在2001年,我曾作为一家成功的网站咨询公司的共同合伙人,去处 理有关 Classic ASP的事情。当时,这些事情是很了不起的。我们是一家微软产品的经销商,并且为此感到自豪!但是……

  我曾用过早期的.NET 并且很痛恨它。我讨厌Visual Studio。我不知道 C#,而 VB.NET 看起来就像一个笑话。我记得我坐在奥克兰到旧金山的船上,决定学习ASP.NET的基础来应对工作,而一边又不停的问自己一个问题。

  你究竟要多努力才能搞懂这些?那天我去工作,并且和我的合作人坐在一起。我告诉他 “.NET” 已经脱轨了。他笑了笑,然后那天,我们有了一次关于我们公司和我的未来的谈话。

  我熟悉classic ASP,IIS SQL 服务器,windows NT/2000 – 我知道如何处理这些事情。我并不知道 Linux 或者 MySQL, 但是我通过阅读代码可以发现:新的框架其实基本上照搬Classic ASP,但有些针对MySQL和Apache的改动。

  我本可以预料到这些,并且这本可能成为一个有趣的挑战。我一直喜欢学习直到现在。我可以回去买书并且在一个月内掌握这些新技术。

  但是我们有一些不能流失的顾客。我必须立刻服务他们,不能中断。这种情况下,学习一个新技术平台会非常困难,尤其是我们顾客找我们的理由是因为我们是微软专家。(就像毒瘾一样,难以割舍。)

  “继续做自己熟悉的事情“是个想当然的选择。问题是我过去的知识和经验并不能很好应用到.NET上。无论如何,我需要学习一门新语言和新框架。

  你需要记住2001年是微软统治的年代。大型的网站是由Linux和Java构建开发的。如果你那时在硅谷,并且和别人说你是一个微软开发者,你会被嘲笑的。(现在嘲笑的人更多了)

  出了硅谷,对于任何企业,微软就是答案。这些公司已经购买了微软的Window和Office,而他们现在要网站。微软是他们想当然的选择。

  不幸的是,(我的咨询公司在IT泡沫事件破产)我去了一家”The Valley“的初创企业。这家企业的架构是由开源/Java/Emacs/Eclipse组成的。我是唯一一个微软程序员,服务一个全部采用微软技术的重要客户。

  其他开发团队需要数周来完成在客户网站上的一个小改动。而我仅要几个时辰就可以用SQL服务器和Classic ASP达到。对于他们本打算放弃的任务,我总能给客户满意的结果。

  这就是我选择成为一个微软专家和一个.NET的开发者的原因。除此之外,我曾拼命地去成为一个微软认证工程师。(我曾经做到了!)最终,我貌似成为了一个微软方面的MVP。或者说,我认为我成为了。

  现在看来这实在很愚蠢,但如果你是当时的我,在那种工作环境之下,MVP的头衔意味着一切。去问问你的.NET朋友,他们会告诉你这些。

  接下来的事

  

  因为对象数据源不能同数据列表绑定,所以Entity Framework不能被使用。

  虽然我现在发了这条Tweet,但是很多ASP.NET的程序员依然对这个问题很茫然。这不是恶搞,这是一个微软官方的教程。

  这就是我决定转行之前,我职业生涯的真实写照。

  从2002到2008年,微软网站产品曾经是(现在很大程度上依然是)“可视化组件开发”。这意味着你只需要不断地拖放组件,然后让组件实现你的功能。(生成HTML,连接服务器,CSS代码等等)

  这项技术使得表格必须用“数据源”这种原始方式去生成。我需要麻烦的写出一些XML文件去映射“数据源”。

  这事从来没有顺利过,但我还是坚持去做。请不要问我为什么。

  这些也发生了

  2008年,我开始用Rails,并且立刻喜欢上了它。但这并不意味着我从此“义无反顾”的转向了。Rails令我可以,像以前开发时一样,拥有全面的反馈。HTML和CSS不再可怕。(它们对ASP.net开发者而言很可怕)代码重新成为你的朋友。

  在.NET的环境下,在某种程度上,我们处理后台代码和服务器组件,而水平最高的开发者仅用最少的代码来完成程序。不知何故,在这一情形的驱使下,我们背离了我们原本的目标:网站开发者。

  这一切想法向我涌来。我清楚地记得我想远离.NET的想法。但当我冷静下来,我有了个想法:

  如果我将我在Rails学到的带回ASP.NET,那么会发生什么?

  从此我启动了”亚声波“项目(受ruby的”活动记录“启发而写的ORM),并且尝试了5种不同的方法去构建一个基于.NET的MVC的框架。 我喜欢C#,而且微软的产品市场很大。为什么要依赖微软的研究室来决定如何写堆栈?这构成我接下来5年的职业生涯。我被认为是一个”麻烦制造者“,”搅罐 器“,”抱怨者”,并且被认为是个“巨魔”。或许这些看法确实有点适合我。 “改革推动者”对我而言是个新角色。(Twitter也是)因此… 我觉得我的公关技巧还需要改善。

  这有些跑题了(但还是有联系)。我真正想知道的是…

  如果当时我不这么做,会发生什么?

  今天提起这件事情是因为我有一次我被邀请去看一个”Ghost Blog“的模块。(作为一次随意讨论的一部分)而这个Node程序看起来就像用PHP写。

  这不禁让我想到”如果我坚持用PHP,是否我会用同样的方式写Node程序“?我很可能通过一个脚本开发者的角度去看网站,并且错过了一些我从.NET开发中学到的”高级概念“。这种想法很正常,我应该会这么写Node。

  这当然引发了另一个问题:我写Node程序是否和.NET开发者类似?

  或许有一些。我知道我写ruby程序就是这样…那么这是个糟糕的事情?这些影响是否令我更容易扭曲我的Node代码?

  我知道我将会习得很多有关Linux或MySQL的知识,并且我确定我将会参加一些有趣的开源项目,如同我写.NET时一样。我可能会迷上Rails,并且尝试将一些Rails优点带到PHP中。

  好似历史就会重新聚焦到此刻,但有一个重大的不同:我将不会陷入ASP.NET的泥潭长达五年。

  我认为我应该能做到:

  更加了解Linux系统

  更加了解MySQL和其他开源服务器。

  我不会像4年前一样害怕Javascript

  不再依赖开发工具

  喜欢HTML和CSS

  这里有一个明显的缺点:.NET阻碍我增加关于HTML/CSS/Javascript的知识。我无须告诉你这些知识是如何重要,永远不需要。

  另外,我被迫使用”Visual 工具“,而且现在每天还同它作斗争。在网站项目上,我习惯于用TreeView控件来看数据库和文件里的表格。Visual开发已经被烧录进我的大脑!啊哈!

  另一方面

  或许当我最终决定进入Rails的世界时,这些挫折迫使我不断的学习。这团火始终和我在一起,鼓励我发了这条博文。借用Lewis Black的一句话:

  要不是因为我的马,我才不花时间上大学呢!

  我的马就是 ASP.NET。

时间: 2024-11-17 06:35:58

PHP 还是 ASP.NET:我做了正确选择么?的相关文章

asp+XMLHTTP组件做采集常用函数收集

asp+|xml|采集|函数 asp+XMLHTTP组件做采集常用函数其中的html代码处理函数很管用,写得相当漂亮 <%'=================================================='函数名:GetHttpPage'作 用:获取网页源码'参 数:HttpUrl ------网页地址'==================================================Function GetHttpPage(HttpUrl)If IsNul

将图片插入数据库并使用asp.net读取出来的正确方法

asp.net|插入|数据|数据库 将图片插入数据库并使用asp.net读取出来的正确方法 书写本文是因为今天见到CSDN的首页上一篇存在明显失误的名为"在Asp.Net中从sqlserver检索(retrieve)图片"的文章.不说其错误是因为用其方法确实能从数据库中读取出图片并显示在浏览器,说其失误是因为代码的意图不能被完全的实现,作者也似乎对http协议以及浏览器在处理http数据的流程一知半解. 1.如何出错 以下是这片文章提到的方法: Public Sub Page_Load

用asp。net做一个可视化的摊位示意图

问题描述 用asp.net做一个可视化的摊位示意图 我要做一个广场中的摊位基本信息, 我希望把摊位按在广场中的具体位置显示在一张图上 每块摊位就是一个按钮,给提供一个思路 解决方案 这个用html来弄,和asp.net没多大关系,至多是将摊位信息入库 广场用div模拟,relative定位,然后图片作为div背景,摊位用div模拟,背景色随便设置,然后absolute定位,设置left/top到你需要的位置 <!DOCTYPE html><style> #Square{width:

asp.net mvc 做的问卷调查如何把用户提交的数据录入到后台

问题描述 asp.net mvc 做的问卷调查如何把用户提交的数据录入到后台 asp.net mvc 做的问卷调查如何把用户提交的数据录入到后台 如图所示 解决方案 通过 post 提交网页,将数据存到服务器中 解决方案二: ①首先写个js提交方法,获取单选按钮的值,然后利用比如ajax的post方式或者get方式提交后台即可: ②在对应页面的controller里写代码,保存数据库即可.

web开发-vs2013中怎么用asp.net处理程序做防盗链处理

问题描述 vs2013中怎么用asp.net处理程序做防盗链处理 除了重写url之外,asp.net处理程序怎么防止用户盗用网站图片,css,js等资源文件 解决方案 不用重写url,只要写httphandler,过滤 http://www.cnblogs.com/eflylab/archive/2008/06/16/1223373.html 解决方案二: 最简单的就是referer

asp.net 怎么做视频会议

问题描述 asp.net怎么做视频会议啊呜呜我没有分啊 解决方案 解决方案二:SIP协议

我想用asp.net+sqlserver做一个统计系统,谁能帮帮我?

问题描述 我想利用asp.net+sqlserver做一个统计系统,设想是这样的:用asp.net做一个系统,连接服务器的sqlserver数据库,也就是让每个部门每个月通过局域网键入网址报送原始数据,我再利用传到数据库的信息,做一个统计程序,生成excle表格.结构大体就是这样,因为是初学,以前有过一些编程的底子,就是想找这方面的书籍来参考,或者是实例,请大家帮忙. 解决方案 解决方案二:就是最基本的数据上报和统计以及报表显示:一个程序熟练工应该可以做的:解决方案三:up

初学ASP.NET 想做一下象CSDN这个论坛一样的左右结构界面,请问是什么实现的?

问题描述 初学ASP.NET想做一下象CSDN这个论坛一样的左右结构界面,请问是什么实现的? 解决方案 解决方案二:iframehtml解决方案三:不是很清楚,我也想知道.UP一下.解决方案四:这跟ASP.NET没有关系,是HTML的内容,用框架页(frameset)解决方案五:用框架iframe!!!解决方案六:引用1楼bhtfg538的回复: iframehtml iframe只是伪框架,和框架还是有区别的.虽然也可以实现类似功能,但最好还是不要用它来做框架页.解决方案七:<frameset

net 4 0-input file图片选择后显示出来,asp.net如何做啊

问题描述 input file图片选择后显示出来,asp.net如何做啊 input file图片选择后显示出来,asp.net如何做啊 解决方案 你是要选择图片,并在页面上显示出来是吗?如果是的话,那就需要先进行提交也就是说先上传到服务器,之后才在页面上显示出来. 具体怎么做,你可以百度,有很多这样的插件的! 解决方案二: 选择图片,并在页面上显示出来是吗 解决方案三: javascript客户端图片预览,兼容最新firefox,chrome和IE11 解决方案四: http://www.cn