- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[mvc]融合思想深入探索sarp架构
转:[MVC]融合思想:深入探索S#arp架构
Posted on 2009-11-13 16:56 Jolly-zhang 阅读(100) 评论(0) ?编辑 收藏 所属分类: 项目管理/架构设计
开发Web应用程序是痛苦的。无论是组织与测试AJAX脚本,还是在无状态环境下模拟状态,开发Web应用程序需要在计划和开发的各个阶段中,全神贯注,专心致志。Web开发人员还要面对开发中的诸多挑战,例如对象与关系的不匹配;在纷繁复杂的选项中选择最合适的工具提高开发效率;在项目中应用良好的架构,在保证代码具有可维护性的同时,不至于影响项目的交付。种种问题都使得开发形势变得越发严峻。
一切都在发展之中。不断涌现出的技术与技能虽然正在逐步解决这些开发中的难题,但没有任何一个可以单独扮演银弹的角色。但是通过对各种技术的权衡,精心挑选技术与技能,还是可以在不牺牲质量的前提下,大幅度地提高开发效率与可维护性。本文关注于Web开发的主流发展方向,通过使用S#arp架构,这是基于ASP.NET MVC的一个框架,荟萃了这些技术与技能的精华,从而为客户贡献价值。
赢得关键阶段的技术趋势
如果要用一个词来描述软件开发这个行业,毫无疑问,这个词语就是“变化”。比起那些历史久远的学科如土木工程学,我们这个行业不过是刚刚兴起,还处于萌芽状态。我们正在成长,而成长的烦恼就是行业自身经历的大量变化,而且看起来这样的变化还会持续一段时间。
这种变化可谓屡见不鲜。一个例子是项目管理方法学,由于其走向误区而带来的惨痛经历,它经历了大起大落,从一棵冉冉升起的“明星”,迅速衰落至默默无闻。另一个例子是有关技术的兴衰,长江后浪推前浪,新技术总是后来居上,取代旧的技术。以ASP.NET中的MVP(Model View Presenter)模式为例,该设计模式虽然为ASP.NET引入了更好的可测试性,但却增加了复杂程度。最近,微软引入了ASP.NET MVC用 来取代ASP.NET,它将之前ASP.NET实现的可测试性提升了一个新的台阶。由于要考虑.NET web开发的可测试性,MVP模式总是将控制器逻辑放在ASP.NET页面后面的代码(code behind)中,而ASP.NET MVC则抛弃了MVP的这种做法。这并不是说MVP隐含的原则到现在已经无效,而是随着这项技术的出现,通过使用适当的关注分离,可以更好的简化MVP实 现可测试性的目标。
因此,虽然软件行业仍然变化莫测,但技术发展的特定趋势与设计理念,仍然构成了开发与交付高质量可维护项目的基础。或许,这些理念的实现会随着时间 的推移而发生变化,但理念本身却是成功软件的坚实基础,能够持续地影响着软件开发。下面,我将简要地回顾这些设计理念,它们在关键阶段所获得的成功,已被 开发社区所广泛接受,因而对未来的软件开发产生了深远的影响。
抽象的基础功能
在不久之前,我还在为一个新对象编写CRUD功 能而被搞得焦头烂额。这项工作就像重新粉刷我的房子一样,费力而不讨好。充斥的大量重复代码,也成为了错误的多发地带。从编写存储过程与ADO.NET的 适配器,到测试片断的JavaScript验证代码,我发现我每天都将大把精力投入到了这些基础功能细节的实现上,以至于在我写完这些代码之后,巴不得赶 尽将它们抛诸脑外。
范式的转换在过去十年间已经发展成熟,其中关于基础功能的实现细节,属于最底层的工作,最好能够交给专门的工具来完成。面临的挑战是需要为这项工作找到合适的工具,既要允许软件忽略这些实现细节,又要保证基础功能可以使用。NHibernate是 这类工具的典范。它能够处理普通的.NET对象与关系数据库之间的持久化。采用这种方式,它就能够让对象自身完全忽略如何实现持久化,又能够解决对象与关 系之间的不匹配。而且,它不需要编写任何一行ADO.NET代码或者存储过程。NHibernate是一个非常棒的工具,更重要的是它实现了一个远大目 标,通过提供一个固定的解决方案,避免乏味而又琐碎的基础功能实现。要知道,这些实现在过去可是开发活动的重要组成部分。
随着时间的推移,软件行业引入了大量成熟的工具与技术,对这些乏味无趣的基础设施构建进行抽象,然后在开发完成后再进行设置。例如,随着NHibernate的逐渐成熟,那些附加的插件,例如Fluent NHibernate具有自动映射的能力,完全能够减轻管理数据访问的负担。这一现象印证了Douglas Hofstandter著作G?del, Escher, Bach中提到的预言,即:采用合理的抽象是软件开发的发展之道,需大力提倡。
松散耦合
遗留软件系统最常见的毒瘤是紧耦合。(我在这儿使用的“遗留”一词,指的是那些其他开发人员强加给你的破烂软件,或者是你自己在很多年前开发的破旧 系统)紧耦合的例子多不胜数,例
文档评论(0)