[译]Chapter 1 - An Introduction to ASP.NET MVC(1)

原文地址:Chapter 1 - An Introduction to ASP.NET MVC

 

除了变化,没有什么是永恒的。.” -- Heraclitus

在本章中,我们为你提供了一个关于Microsoft ASP.NET MVC framework 的鸟瞰和简介。本章的目标是向你解释为什么你应该使用Microsoft ASP.NET MVC 来构建你的web应用程序。

既然ASP.NET MVC framework 的设计出发点是为了让你写出更好的软件程序,本章第一部分就来讨论好的应用程序应该具有的特性。你可以了解到软件设计原则和模式可以帮助你构建能够适应变化的软件。.

最后,我们讨论一个ASP.NET MVC 应用程序的架构,以及这个架构如何是你写出更好的软件程序。你会看到一个MVC应用程序的不同部分的概览,包括ModelsViewsControllers,同时你也会看到关于示例程序的介绍,这个示例程序会在你新建一个ASP.NET MVC项目时被创建。

A Story with a Moral

我依然记得那天,经理来到我的办公室让我构建一个简单的按钮应用程序。他解释说需要一个简单的拨号管理程序,当需要进行健康检查时,可以通过拨号通知相关人员,拨号管理程序会加载一个电话号码的列表,当点击按钮时,程序会依次依次列表中的号码。还有比这更简单的吗?

带着自信,我郑重其事的表示会在当天下午完成这个拨号管理程序。我关上了办公室的们,戴上了我的牛仔帽,打开音乐,开始狂写代码。在那天结束的时候,我已经完成了那个程序。我的经理很高兴,我那天晚上回到家中很高兴,自认为我 一天做的工作很完美。

第二天早上,我的经理又出现在我的办公室门口。我担心的问是不是拨号管理程序有问题, 他向我说,程序工作的很好,事实上,他是如此的喜欢以至于想再加入一个特性。他希望拨号管理程序能够在拨打一个号码时,现实对应的调查结果,这样,调查结果就可以存储到数据库中了。

基于英雄气概,我又一次花费了一天的时间来填充代码。当那天结束的时候,我已经完成了对应用程序的更新,并且自豪的将完成的程序向经理进行了展示。

我不再继续这个故事了,因为任何以构建软件为生的人都知道这个故事的结局。故事永远不会结束。一旦一个软件项目开始进行,基本上很难结束它。软件程序需要持续的填充新特性、修改bug以及提升性能等。

当你创建的一个软件被要求进行修改时,你应该认为是一种赞美。只有没有用处的软件才会停滞不前的。当人们关注软件,当软件被频繁的使用时,它会经历持续的变更。

尽管我现在已经离开那家公司(我目前坐在微软的一个办公室中),但是我仍然有朋友在那家公司,偶尔还会收到程序变更的报告。毋庸质疑,程序已经转变为一个庞大的应用,支持不同的时区、复杂的呼叫规则以及带有表格的高级报表功能。它已经不能被说成是最初的简单按钮应用程序了。

What is Good Software?

Web刚刚兴起的时候,为了成立一个互联网新公司,我从MIT辍学。在那个年代,构建一个网站是很困难的,那时没有ASP或者ASP.NET等技术(我们只有石刀),当时主要任务就是把以HTML格式的内容存储到数据库的表中,作出能闪光的文字就是很酷的事情。

当我第一次开始编写软件时,目标就是让软件去做我想让它做得。在90年代初,竞争开始变得残酷,在最短的时间里添加最多的特性成为是否能够存活下来的关键,为了工作,我当时经常在办公室的桌子下面睡觉。

在我的起步阶段,我定义的好的软件具有以下特点:

好的软件是那些可以按照你的意图运行。

如果我感觉特别有雄心壮志,那么我会担心性能,同时,如果我有额外的时间,我会向代码中追加一两条注释。但事实是,在一天结束的时候,我对于工作是否成功的准则很简单:软件是否正常工作。

在过去的八年中,我向一些大的公司和组织提供培训和咨询,包括Boeing, NASA, Lockheed Martin以及国家科学基金。大的组织不是新创立的公司,在一个大的组织内,焦点不在于尽可能快的构建软件应用程序,而是在于构建能够很容易进行维护的软件应用程序。

多年来,我对好的软件的定义已经在本质上发生转变,由于我已经面对了在维护我自己的“庞然大物”的过程中带来的可怕的情况,我对好的软件的定义已经转变为:

好的软件是能够按照你的意图运行,并且易于修改。

有很多理由可以使得软件随着时间推移而发生改变。Michael Feathers,在他的著作《Working Effectively with Legacy Code》中,提供了以下理由:

1) 你可能需要在现存软件中添加一个新的特性

2) 你可能需要修改现存软件中的一个bug

3) 你可能需要最优化现有软件。

4) 你可能需要改进现有软件的设计。

例如,你可能需要添加一个新特性,呼叫管理应用开始时是一个简单按钮应用程序,然而,每天都会有越来越多的特性被加入到程序中。

在软件中发现一个bug时,你也会需要对软件进行更改。例如,在呼叫管理的程序中,我们发现对于白天时间的计算是不对的(有一些人在早上是醒着的!)。我们迅速的更改了错误的代码。

你也可能需要修改软件以使它跑的更快。有一段时间,由于业务规则变得非常复杂,呼叫管理应用程序需要花费12秒来拨打一个新电话号码,我们不得不重写代码以使重新获取电话号码的时间缩减至毫秒级。

最后,你可能需要修改软件来提升它的设计。换言之,你可能需要找出编写拙劣的代码,将其替换为良好的代码你可能需要使你的代码更能够适应变化。

posted @ 2009-02-06 23:20  李潘  阅读(225)  评论(0编辑  收藏  举报