Jim dot NET

技术总是用来服务于人的。 Technique must serve people all the time.
posts - 18, comments - 61, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
都说程序员有程序员的傲骨,我对此的理解,也许仅仅是说对自己所采用的技术充满信心,而对某些技术不屑一顾(注意,!=鄙视别的技术,只是不关心而已)。但我却发现身边有的程序员的“傲骨”却特别特别奇怪。
前段时间和同学一起帮老师做个新闻发布系统,很简单的东西,4个人讨论了下——说实话新闻发布系统其实已经相当熟悉了,讨论的也不过就是把自己知道的都说出来一遍。后来有要求要评论,就要登录,就保存状态。然后就很“自然”地开始Session["Username"] = username;
我巨无语,我心说这就是做了这么久ASP.NET的功底啊?人微软好端端的FormsAuthentication不用,干嘛用Session这么古老又问题多多的状态保存方式,我就说我们用FormsAuthentication吧,这样比较符合ASP.NET框架的设计。结果回答竟然是“那是给懒人用的”。
我彻底无语了,剩下的事情也许大家都能预料到,StringBuilder拼接字符串,然后<%= xxx %>就输出了,开发的进度到的确相当相当的快。不过我就觉得这样做下去能干什么,我们组ASP.NET也弄了一年多了,怎么还在这样做呢?SQL语句还是拼凑,连Parameter都不用,用了很多手法来得意洋洋的声称自己的表单不怕Injection……知道有Linq to SQL,便高呼那是“懒人专用”。
诚然我坚信我们在刚开始学习一门技术的时候,不要过早地使用框架技术,不要过多地依赖方便地、高度封装的组件。因为学会拼接SQL语句能让我们更好地了解数据访问在开发应用中的重要地位,知道Response.Write()才会在探究服务端控件的Render()方法时不会觉得陌生,知道UpdatePanel在回送时不会减少数据量才不会陷入GridView在UpdatePanel里的ViewState陷阱。但既然已经不再处于如此入门的一个过渡阶段,又为何竟还要如此抵制数据绑定,抵制DataSource控件,抵制ORM,说那是“给懒人用的”。
这样做不是闭门造车吗?
话说回来,也许在小型项目——小到不能再小的项目——比如最简单的留言板,我们的确不需要什么框架技术,只要用最简单、最直接的方法——获取表单数据->访问数据->处理数据->输出回应——这样就好了,但一年多来也不是就干这么简单的事情的时候了吧?现在老师叫我带着做个网站什么的我根本就无从下手,世界上最优秀的程序员花了多大的心思构建的框架,在他们眼里真就不值一个钱吗?弄得我现在都没法安下心来和他们配合了,不如我一个人安安心心做前端,写写CSS,弄弄JavaScript,也总比看到对方的代码历史dr[5]而不是user.Gender甚至不如dr["gender"]的时候去挨个数上面代码里select出的省心。我承认我以前也这么做,还得意洋洋地说“dr[5]比dr["gender"]快XX倍”。但既然已经意识到这样做对配合的灾难性打击,为什么又不肯放下自己那一点点“傲骨”,去为团队里的别人省那么点心呢?
看来我似乎有点愤青了。

Feedback

#1楼    回复  引用  查看    

2008-07-13 20:37 by Jackei      
支持。

#2楼    回复  引用  查看    

2008-07-13 20:58 by Jeffrey Zhao      
支持lz。

#3楼    回复  引用  查看    

2008-07-13 20:59 by kiler      
好端端的FormsAuthentication实在是说不上,问题还是不少的,先不说多人同时登陆时有错把权限付给其他登陆用户的bug,本身也是存在漏洞,还不见得比session好使。

#4楼    回复  引用  查看    

2008-07-13 21:08 by Jeffrey Zhao      
@kiler
“多人同时登陆时有错把权限付给其他登陆用户的bug”
这是什么?FormsAuthentication是Authentication,不要把它和Authorization混为一谈……
就算不直接用FormsAuthentication.SetAuthCookie,它的很多辅助方法也是非常好用的,例如加密解密,呵呵。

#5楼    回复  引用  查看    

2008-07-13 21:19 by 江南白衣      
支持楼主,我有个搭档就跟你那同学差不多,那个郁闷啊。。。

#6楼 [楼主]   回复  引用  查看    

2008-07-13 22:34 by JimLiu      
--引用--------------------------------------------------
Jeffrey Zhao: @kiler
“多人同时登陆时有错把权限付给其他登陆用户的bug”
这是什么?FormsAuthentication是Authentication,不要把它和Authorization混为一谈……
就算不直接用FormsAuthentication.SetAuthCookie,它的很多辅助方法也是非常好用的,例如加密解密,呵呵。
--------------------------------------------------------
嗯,因为小弟的文中关于FormsAuthentication和Session之间的讨论主要是验证和保存用户验证状态的,而不是权限管理机制
BTW早些时候我也对FormsAuthentication嗤之以鼻,但是后来接触到《Ajax in Action》这本书,还有老赵前辈的ASP.NET AJAX系列,受益匪浅。
从前我们对ASP.NET AJAX普遍的认识局限与UpdatePanel,因为在应用不当的时候UpdatePanel确实会因为ViewState陷阱造成极大的性能隐患,这让我一度很不喜欢ASP.NET AJAX,但是后来我认识到ASP.NET Ajax >> UpdatePanel,我真的认识到框架技术对于项目的重要性。JAVA程序员很追求好的框架,我想也就是这个原因。

#7楼    回复  引用  查看    

2008-07-14 01:12 by 紫色阴影      
坚持自己的做法,不管别人怎么想怎么做
与时俱进 呵呵

#8楼    回复  引用    

2008-07-14 08:08 by tooper [未注册用户]
funny

#9楼    回复  引用  查看    

2008-07-31 02:02 by Birdshover      
FormsAuthentication 主要就是加密的Cookie觉得很方便。也不是一定就能顶替掉Session.

#10楼    回复  引用  查看    

2008-08-01 14:06 by 随风流月      
FormsAuthentication 我确实从来不用, 因为和现有系统的整合问题, 以及一些杂七杂八的事儿 - 把用户系统交在 Framework 的预装 Components 里, 实在是不放心呵.

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-07-13 19:36 编辑过


相关链接: