专注于.NET技术
在敏捷开发过程中,我们还需要对系统架构进行设计吗?事实上,Martin Fowler在《Is Design
Dead?》一文中已经给出了答案,那就是我们同样不能忽略对系统架构的设计。与计划性的设计(Planned
Design)不同,我们需要演进式的设计(Evolutionary
Design)。在敏捷开发的生命周期中,我们通过每一次迭代来丰富与更新我们的设计方案,以使其最大限度地符合客户对系统的需求。这里所指的需求,包括
功能性需求和非功能性需求。
在Agile Journal四月刊中,IBM's Methods Group的敏捷专家Scott W.
Ambler详细地阐述了在敏捷语境中的架构设计方法,他提出了所谓“架构预测(Architectural
Envisioning)”的方法,以应对敏捷开发中逐步演进的架构设计过程。
Scott指出,敏捷模型驱动开发(Agile Model Driven
Development,AMDD)明确地包括了初始需求分析与架构建模,这个过程发生在敏捷项目开发的第0次迭代中。所谓第0次迭代,就相当于项目的热
身活动,是项目得以启动的基础。在此迭代期间,团队需要充分地理解项目的范围,甄别可行地技术策略。这个阶段所能够收集到的信息将有助于你对整个项目最初
的粗略估计,以制定合适的项目计划,从而获得启动项目的资金与足够的支持。
更多内容,请阅读发表在捷道·敏捷堂的文章。
[新闻]56被关一月 危机的是整个视频业
摘要: 面向对象不是唯一的方法论, 也不太可能是最完善的一种方法论, 之所以流行, 其深刻原因也不是我们能回答的。 只是提醒大家, 有一种现象, 叫做劣币驱逐良币(我并没有说它一定是)。 但是无论好坏,现在面向对象的周边配套设施却是最齐全的, 考虑到这一点, 不逐渐深入掌握面向对象的各方面常识, 对于我们平时的顺利工作来说又是不行的。 阅读全文
[新闻]李开复:中文搜索是谷歌战略核心
摘要: 说说Singleton的三种实现外加一个变种和一些细节。 还有什么没提到的, 大家也来讨论下~ 阅读全文
[新闻]《星际争霸2》新图:黑暗圣堂武士Zeratul
摘要: 相传,有一位日本棋僧曾随遣唐使来到长安。由于他棋艺超群,打败了长安城里不少的名士。后来,他听说城外太乙山的一座小庙里有个老和尚,年轻时也是曾是顶尖的围棋高手,于是就上山讨教一盘,也好在佛门留下个好的名声。
他来到小庙之后,老和尚经不起他的死缠烂磨,终于和他下了一盘。这一盘从开始布局就较上劲了,黑来白往盘中渐起风云,你争我夺江山几番易主,这是日本棋僧有生以来下得最艰难的一盘棋。
最后,日本棋僧经过痛苦的拼杀,大龙终于冲出重围,并最终于以一个子的优势战胜了老和尚。这时,他满意地笑了。而老和尚自始至终都不动声色。寒暄之后,正当日本棋僧站起身来正要告辞时,却突然象着魔一般地僵住了
阅读全文
[新闻]FriendFeed介绍
摘要:
摘要: 有一位AJAX程序员遇了到一个非常奇怪的问题。尽管经过几个昼夜的煎熬,依然没有能找出问题的原因。他在网上查了几天,也没有找到有关此类问题的网页。又咨询过许多资深的技术专家和顾问,也大都泛泛而谈,没人能给他具体的明示。
最终,由于这个问题实在太奇怪,程序员相信自己遇到了还没有人遇到过的新问题。他听说山里的观音庙很灵验,而这样的问题恐怕也只有求大慈大悲的观音菩萨才能解决。于是,他放下手里的事情,打点行装,前往山上的观音庙烧香。
程序员来到观音庙之后,庙里并没有什么人,只有一位年轻美貌的女子在向观音像参拜。细心的程序员突然发现这位女子的身形和着装,竟然与莲花座上的观音像非常地相似。于是,他就小心翼翼地走上前去。仔细一看... 阅读全文
[新闻]Hitwise:雅虎流量来自Google搜索比来自雅虎搜索的还多
摘要: 在这个系列的上篇中介绍了数据绑定语法的原理以及.NET中如何实现单向绑定,中篇我们简单的介绍了ASP.NET 2.0 中新增的Bind语法配合DataSourceControl来实现数据的自动双向绑定。这两部分的内容相对动态抽象并且不常接触,没有很好的源代码支持很难解释清楚,要想真正弄清它们的内部原理,还需要大家亲自动手去反编译分析动态编译的程序集。 在了解了数据绑定语法的原理后,我还想来谈谈我中 阅读全文
[新闻]YouTube需提交用户信息 网民隐私或遭威胁
在上一篇《深入ASP.NET数据绑定(上)》中,我们分析了在.NET中的数据绑定语法的一些内部机理。简单说来就是ASP.NET在运行时为我们完成了页面的动态编译,并解析页面的各种服务器端代码,包括数据绑定语法。而数据绑定的语法虽是一些<%# %>代码块,在生成的代码中,仍然使用了服务器端控件以及在DataBinding事件调用DataBinder.Eval方法来完成数据的绑定工作。所有的数据绑定模板控件都使用了这样的机制来进行数据的单向绑定,在.NET 2.0中新增了双向的数据绑定方式,主要用在GridView,DetailsView,FormView等数据容器控件中,结合DataSourceControl就可以非常轻松的完成数据的更新和提交工作,而不需要我们手工去遍历输入控件的值。那在这样的双向数据绑定中,ASP.NET又是做了哪些工作,来为我们透明输入控件与字段的取值与对应关系,让我们可以在DataSouceControl中方便得到数据项修改前的值和修改后的值?下面就让我们一起来从一段页面代码开始吧:
1: <asp:DetailsDataSouce ID="DetailsDataSouce1" runat="server">
2: </asp:DetailsDataSouce>
3: <asp:DetailsView ID="detailsView" runat="server" DefaultMode="Edit" DataSourceID="DetailsDataSouce1">
4: <Fields>
摘要: 在一年多前我发布了一系列文章(让UpdatePanel支持文件上传(1)、(2)、(3)、(4)、(5)),设法让UpdatePanel支持上传文件。可惜缺陷无数,当时收到了无数bug report但是我都没有时间(和兴趣)去解决,因此只是一个实验品中的实验品。这个组件还有一个问题就在于非常复杂,复杂的原因是为了解决iframe传输数据的问题。当时想了很多办法最终让IE6、7,FireFox 1.5支持了这个组件,但是对于Safari,Opera等浏览器就无能为力了。最近发现jQuery的Form插件能够在一定程度上支持我需要的功能,于是就有了简化并改进该控件的想法。虽然后来发现jQuery在这方面的表现并不如我想象中那么好…… 阅读全文
[新闻]分众无线剥离短信业务 裁员2/3
摘要: 在ASP.NET我们在使用Repeater,DetailsView,FormView,GridView等数据绑定模板时,都会使用<%# Eval("字段名") %>或<%# Bind("字段名") %>这样的语法来单向或双向绑定数据。但是我们却很少去了解,在这些语法的背后,ASP.NET究竟都做了哪些事情来方便我们使用这样的语法来绑定数据。究竟解析这样的语法是在编译时,还是运行时?如果没有深入去了解,我们肯定不得而知。这个简短的系列文章就是带我们大家一起去深入探究一下ASP.NET绑定语法的内部机理,以让我们更加全面的认识和运用它。 阅读全文
[新闻]传统新闻产业受新媒体冲击 面临动荡性调整
“敏捷方法”本为舶来品,追求的是灵活、小巧、敏捷地应对软件开发过程中的变化,而不像某些重量级开发方式那般笨拙不堪,流于形式,而忽略了软件开发的变
化万端。敏捷重思想、重精神、重原则、重实践,而轻形式、轻过程、轻方法、轻管理,讲究的是敏捷为本,交流至上,持续改进,因地制宜。若体会了敏捷思想,
只要遵循敏捷的基本原则,各种方法皆可敏捷。若未曾领会敏捷的真谛,那么即使应用了敏捷方法,也不过是“空有其形,大失其意”,终究是“画虎不成反类
犬”!
敏捷方法并非玄之又玄的“道”,不过对于国人来讲,用“道”来阐释敏捷之精神,至少可以避免陷入某种思维定势,少去许多约束与条条框框。至于如何去理解
“道”的含义,就需要实际去推行敏捷方法,从而在过程中去体悟。《敏捷之道》电子杂志荟萃了国内诸多敏捷专家或爱好者的思想体会、工作实践以及个人
认识,是发表在捷道·敏捷堂的优秀文章摘选,其目的在于推广敏捷方法的实践与运用。
本期电子杂志精选了7篇文章,分为敏捷思考、敏捷实践、敏捷方法、敏捷工具、好书推荐五个栏目。由于捷道·敏捷堂还处于草创时期,因而文章内容或有不足之处,或有偏颇之处,不过套用许多电视台的用语,那就是文中观点仅代表作者个人意见,仅供参考。文章包括:
印第安人的灵魂——敏捷回顾
印第安人在赶了3天路后,会停下来小憩一天,因为他要等着自己的灵魂跟上来。敏捷开发在经历了一次迭代或者冲刺(Sprint)后,也需要休整,以等待团队的灵魂跟上来,这一过程被称之为“敏捷回顾(Agile Retrospectives)”。
解开最后期限的镣铐
在大型遗留系统基础上运作重构项目
本文以ThoughtWorks中国公司与客户合作的咨询项目为背景,为读者介绍如何在一个大型遗留系统的基础上组织和运作重构项目,从而切实有效地改善系统质量。
单元测试实践小结
异地分布式敏捷软件开发
异地分布式软件开发(Distributed Software Development)是指由多个位于不同地理位置的团队进行同一个软件项目的开发过程。
McDonald & Scrum
Scrum是一种敏捷方法,强调快速反应,讲求人的配合等等。而其团队组织方式是多功能型,由具有各种才能的人组成足以达成既定任务的团队。
欲善敏捷开发 先利敏捷工具
敏捷开发的潮流并不是由敏捷工具来推动的。但近年来,为了更好地支持敏捷开发,敏捷工具也有了很大的发展。
杂志下载,请访问:敏捷之道第一期
[新闻]微软Silverlight被指侵犯Gotuit三项专利
摘要: 今天是2008年5月1日。为了完成《悟透JavaScript》一书的最后几个例子,俺象往常一样去MSDN网站查需要用到的类资料。于是,习惯性地打开了http://msdn2.microsoft.com这个网站。我发现浏览器的最后地址停在了http: //msdn.microsoft.com/zh-cn/default.aspx这个位置,显然MSDN网站执行了域名重定向。
以前http://msdn.microsoft.com/网站是旧版本的MSDN网站,以蓝色为主色调的。而http: //msdn2.microsoft.com/是微软新搞的MSDN网站,以橙色为基调的。很长一段时间,俺经常在两个网站间跳转查阅需要的技术资料,后来主要在第二版网站上查资料了。
今天,微软正式废弃老版的MSDN网站,全面切换到MSDN网站的第二版,网站有统一到http://msdn.microsoft.com/了。
微软这种网站平滑过渡和切换的方式还是值得借鉴和学习的。 阅读全文
[新闻]Symbian开源:救赎,反击与未来
摘要:
鉴于产品开发目的的不同,微软永远不可能与开源社区走到同一条道路上来,但并不排斥双方有合作的可能。然而,让我们感到奇怪的是,一直以来微软对于开源的态度始终让人捉摸不定,时而漠不关心,时而高调抨击,时而又主动示好。
目前,我们唯一可以肯定的是,微软不再视开源为洪水猛兽,甚至于一步一步的,微软也在亦步亦趋的踏入开源社区的领域,例如微软成立的开源实验室,公布 Windows和.NET Framework的部分源代码,以及成立类似于SourceForge的开源网站CodePlex。分析动机,有业内专家指出,微软真正关心的的问题不是一个公司是否是开源性质,而是这个公司是否可以帮助销售微软的平台产品。真是一语道破天机!商业利益是凌驾于一切之上的。
我们观微软的态度,已经有了与开源和睦相处的苗头。那么,微软对于开源项目,尤其是对于开源的.NET项目究竟保有怎样的态度呢?最近,Redmond Developer News的编辑Michael Desmond就提出了这样一个疑问,那就是:开源.NET项目是否受到微软的冷遇?
文章提到了Redmond在去年六月对Jeff Atwood的专访。Jeff是Coding Horror Developer Blog的创始人,他对.NET领域的开源项目贡献良多,除了进行博客创作之外,同时还创建了自己的开源项目Stackoverflow.com。
Jeff在Coding Horror Developer Blog上曾经承诺,会将广告收入的一部分回赠给开源社区。近日,Jeff兑现了他的这一承诺,将5000美元的奖金颁发给了ScrewTurn Wiki开源项目的开发者Dario Solera。ScrewTurn Wiki是一个基于ASP.NET的Wiki引擎。实际上,奖励仅仅表明了Jeff的一种态度,那就是感谢那些为.NET开源开发领域作出卓越贡献的开发者们。
这正是Jeff举措的关键目的。Jeff认为“开源项目在微软体系中被当成了二等公民。”他说道:“微软错误地降低了对开源项目的支持,而事实上这些开源项目对.NET世界贡献良多。”他相信微软作为开发工具的提供商,其命运取决于公司是否愿意改变其一贯的做法。
Jeff的观点颇具争议性。实际上,在全球的.NET开发人员中,有很多都使用了各种开源工具,例如DotNetNuke、MbUnit、NAnt、 NHibernate和ZedGraph。而开发人员使用的.NET开源工具还有很多,以上列出的仅仅是冰山一角而已。微软也正在积极地参与和响应与开源社区(CodePlex、IronPython和IronRuby项目、Mono开发等)的合作。
那么,开源.NET项目的开发者们为何没有切实感受到微软对他们的支持呢?
确实,微软虽然在自己的开发工具中集成了部分优秀的开源.NET工具,但这些工具终究是凤毛麟角。此外,微软虽然对开源项目提供了一定的支持,但这种支持与微软对其商业产品的庞大投入相比,实在是九牛一毛。
很多时候,微软表面上对开源社区的支持,实质上却是醉翁之意不在于酒。例如,微软在四月初发布了与开源兼容的XAML/WPF规范,允许开源项目使用这些规范。这或许是微软的示好之举,对于开源开发起到了一定的促进作用,但此举的背后却代表着微软可以借助开源的东风进一步推广WPF与XAML。
微软对开源.NET项目确实提供了一定的支持,但很多时候,微软却是以其强势地位对开源项目给与了沉重的打击。例如微软于去年推出的MVC Framework以及LINQ,它确实为.NET开发者带来了极大的便利。但随之而来的,却极大地影响了Castel MVC Framework以及NHibernate的发展。显然,集成在Visual Studio中,并作为.NET Framework一部分的MVC Framework和LINQ对于普通的.NET开发人员而言,更具有吸引力。但对于开源社区而言,却是极大的挫败。
显然,Michael Desmond提出的所谓“开源.NET项目遭遇微软冷遇”的观点是站不住脚的。微软不可能忽视开源社区的力量。相反,微软会极度关注开源社区的发展,一旦意识到某个开源项目的商业价值,或者感觉到它对微软产品的威胁,微软这头猛兽就会主动出击,或者吞并蚕食,或者打造利器与之分庭抗礼,进而掠夺市场占有率。这是微软的一贯伎俩,因为微软在面对商业竞争时,永远都不会坐以待毙。
本文最初发表于IT168。
[新闻]中国互联网公司在哪儿
摘要: 大家追潮流追的也不少了, 也看看比大牛还大牛好几倍的家伙怎么说; 听见些不同的声音, 总比铺天盖地全是流行歌曲, 要强一些; 别搞得好像一些明星加商业宣传, 就代表了真正的计算机科学家的看法和发展趋势似的。 其实很多时候, 我们认为的大势, 总是那几个人或几个团体再表演罢了; 我真正担心的, 是在那些似是而非的学问上花费过多的精力, 最后才发现都是一场空。
如果不知道D.E.Knuth是谁, 可以自己Baidu/Google/Yahoo/Live(排名不分先后)一下。 原文很长, 截取并胡乱翻译了三段, 关于单元测试 、 极限编程两个时髦东西的, 和关于可重用代码这一面向对象一直所关心的主题的。 这老人家也只是发表一下看法, 并没有说为什么, 但是呢, 我觉得可以当一个警钟敲了一下, 有没有道理的, 权当一个提醒, 一个敦促自己思考的契机吧。
另外, 那些对流行不感冒的兄弟, 也不用觉得自己太落后了, 至少肯定比明星梯队权威的人和你一样土; 问题的关键是写出像样的软件, 不是么? 阅读全文
[新闻]微软:Silverlight内容也可被搜索引擎检索
摘要: 前一段时间尝试为ASP.NET MVC构建了一个类似于UpdatePanel的AJAX解决方案,本文叙述了这个组件的设计思路以及使用方式,并提供了源代码以及示例程序。 阅读全文
[新闻]内置AI技术 三星聪明微波炉还能上网
摘要:

WCF是一种面向服务的开发技术,它与面向对象是有一定差别的,
本文就在服务契约的层级和数据协定的继承关系上讲述WCF与OO原则的辩证统一关系。
摘要: 五四放假半天的标准一出台,我突然才发现,自己一直以为还算年青的人,却已经渡过了中年期的好几年了。岁月很凶残呀。作为程序员群中的年龄上的老大哥,我就给那些将要在五月四日休息半天的技术朋友们写点什么吧。 阅读全文
[新闻]Gmail、Hotmail和Yahoo验证码被攻破
摘要:
前不久翻译了High Performance Web Sites一书,出版社定书名为《高性能网站建设指南》。
关于这本书,网络上已经有不少讨论了,确实是一本不可多得的好书。我这里就不过多吹嘘了。
在此,Anders Liu将为此书提供非官方非终身技术支持。