代码之家  ›  专栏  ›  技术社区  ›  Arnold Zokas

我有15分钟的时间向同事介绍ASP.NET MVC。我应该关注哪些话题?[关闭]

  •  17
  • Arnold Zokas  · 技术社区  · 15 年前

    我已经在个人项目中使用了ASP.NET MVC,在它进入RTM之前。

    我正在为我的同事准备一个演示文稿,向他们介绍ASP.NET MVC的基本概念,并向他们展示如何在我们的环境中使用它。

    我的演讲有15分钟的时间限制。有很多信息需要传递(特别是如果你考虑到像mvcontrib和各种博客文章这样的项目)。

    我应该关注哪些主题?

    背景: 我在一家数码公司工作。我的同事是具有3年以上ASP.NET经验的.NET开发人员。

    目前的建议是:

    • 希望切换到ASP.NET MVC的原因
    • 路由
    • 行动结果(提供不同响应的能力)
    • 请求响应内部
    • 可测试性
    • 脚手架(T4模板)
    • 对HTML输出的细粒度控制
    • 关注分离()
    • ASP.NET WebForms和ASP.NET MVC之间的差异
    13 回复  |  直到 15 年前
        1
  •  8
  •   AnthonyWJones    15 年前

    你只有2到3个要点的时间。

    要掌握的最重要的概念是,请求到达控制器,然后到达控制器 选择 呈现结果的视图 控制器 已经产生了。

    下一个重要的概念是,当您为控制器和模型创建单元测试时,MVC将战胜“经典”ASP.NET。没有这个MVC只是另一种剥猫皮的方法。

    最后一点,我将重点放在URL的结构上,这不是因为它那么重要,而是因为我们喜欢感觉干净的东西,MVC URL可以做到这一点,这可能有助于生成积极的响应。

    避免在没有服务器控件的情况下继续(这不是完全正确的),因为这可能会引起负面响应。一般来说,与ASP.NET表单相比,避免提及“是”不起作用(尽管在传递过程中不需要提到ViewState)。你知道好处会权衡那些缺失的(或不必要的)东西,但你的听众不会。保持乐观。

        2
  •  5
  •   Michael Stum    15 年前
    • 路由
    • 行动结果的灵活性
    • 将不同视图连接到同一控制器操作(即移动视图)

    单元测试的大主题对于15分钟的会议来说可能太大了,但是如果您的开发人员已经在使用TDD,我会添加它

        3
  •  5
  •   Dave Houlker    12 年前

    我必须为我的老板写报告,证明我为什么要在webforms/nettier上使用mvc。我写了我的报告 http://ivida.co.uk/2011/05/11/mvc-nhibernate-vs-webforms-nettiers/

    我知道你的时间跨度很短,但是你可以从下面的列表中找到一些想法……

    1. MVC的好处

    ASP.MVC是为回应对与其他开发平台相关的Web表单的批评而编写的。虽然Web表单为开发人员提供了一个快速的应用程序开发框架,并被写入了“模仿”Win表单中使用的开发方法,但它使得在其他平台中实现某些实践变得困难,并被视为良好开发的基础。 1.1.可测试性

    MVC允许编写自动化单元和集成测试。这有许多明显的优势。

    a)大大减少了对手动测试的需求;通过显著减少手动测试的数量,在下游偿还了创建单元测试的前期成本。

    b)可以在整个开发过程中运行;这是非常宝贵的,因为它允许开发人员确保他们不会对代码库引入破坏性的更改。

    c)让开发人员有信心实现对代码库的更改,因为测试将显示任何错误。

    d)导致更严格的代码基础,因为代码在整个开发过程中已经测试了多次,而不是偶尔的手工测试所提供的。

    e)每个测试都是封装在代码中的功能需求。如果有一个要求只有具有X角色的用户才能执行活动Y,那么该测试就是满足该要求的证据。如果开发人员在一段时间后返回到代码库,这将变得非常宝贵,因为通过运行测试可以直接查看需求。

    开发人员可以根据项目的需求编写尽可能少或尽可能多的测试代码。如果一个项目暴露在规范的变化中,那么在适当的地方进行测试将大大加速变更的实现。对于较小的低影响开发,可以缩小自动测试的范围,以涵盖主要的创建/更新和删除场景,而不是读取场景。

    写测试本身就是一门艺术,开发人员随着时间的推移会变得更好。如果不编写任何测试代码,经验丰富的开发人员可以在类似的时间内使用MVC或Web表单创建项目。编写测试可能会增加开发时间的20%,但会大大减少系统测试的任何时间。

    在适当的地方进行测试也大大减少了实现变更所花费的时间,如果一个变更很重要,那么实际上可能会允许该变更发生,否则将被视为太冒险或太耗时。

    1.2.坚持良好的软件设计原则

    ASP.MVC遵循设计良好且可维护的软件的一些公认原则,例如:

    “Don’t Repeat Yourself (DRY)
    “Separation of Concerns” (SoC)
    

    关注点分离(不将UI逻辑与底层行为混合)是一个基本原则,它可以帮助开发人员处理复杂性。在同一个对象或文件中混合不同的职责(比如将大部分逻辑放在代码隐藏文件中,比如处理编辑、取消和编辑回发事件),会引发维护问题,并使代码难以更改和读取。MVC规定了应该在何处编写某些类型的对象,从而使生成的代码库更干净、更容易执行。

    1.3.MVC是规定性的

    因为MVC遵循良好的软件设计原则,所以它规定了应该在哪里开发某些类型的代码。这在团队环境中很有用,因为它比Web表单更标准化项目结构。一旦开发人员熟悉了MVC项目结构,在哪里寻找特定类型的代码就变得很明显了。这将使在其他开发人员的代码上工作更容易;a)因为处方和b)因为运行单元测试将确保其他开发人员不会破坏现有功能。它还帮助开发人员决定应该在哪里开发某些类型的代码,以及应该如何分离代码以便于维护。MVC项目的规定性也被证明是有用的,因为它允许这个团队中的开发人员讨论他们所面临的问题,而不必知道项目的详细实现。

    1.4.mvc支持与JavaScript框架轻松集成

    自2004年推出Google Suggest以来,客户端Web开发发生了巨大变化。这一变化是关于Ajax功能的实现。Ajax(异步JavaScript和XML的简写)是一组在客户端使用的相关技术,用于创建丰富的交互式和响应性Web应用程序。使用Ajax,Web应用程序可以在后台异步地从服务器检索数据,而不会干扰现有页面的显示和行为。Ajax使用HTML和CSS的组合来标记和样式信息。通过JavaScript访问DOM,以动态显示所显示的信息,并允许用户与之交互。

    由于在不同浏览器中实现了不同的标准遵从性,这种类型的功能过去很难编程。现在这已经不再是一个问题了a)由于更好的标准遵从性和b)更重要的是由于Javascript框架的开发,例如jquery,它允许您编写在每个浏览器上工作的代码。

    mvc中的_v_,表示_view_,只处理HTML和JavaScript的前端交付。MVC允许与jquery等JS框架轻松集成,并大大简化了使用此类框架创建丰富客户端体验的过程。(注意,jquery现在作为ASP.NET 2010的标准版本提供,而Microsoft现在正积极地、也许是迟来地为jquery代码库做出贡献)。

    这种简化的集成使得开发用户体验更加容易,以满足用户在现代网站上的期望性能。这是一个微妙的问题,但我认为我们不应该忽视它。我们的客户将越来越多地根据他们对更广泛互联网的使用,对他们如何与网站互动产生隐含的期望。现在很少有商业网站不实现Ajax功能和它提供的灵活响应界面。不着眼于开发丰富的前端,将越来越多地使我们的产出与我们的客户的期望相提并论。

    1.5.网络消费正在变化(快速)

    摩根士丹利预计,到2013年中期(即2 1/2年内),使用移动设备访问互联网的人数将超过使用固定互联网/桌面的人数。

    (http://gigaom.files.wordpress.com/2010/04/mobile-chart2.png)

    这与MVC有什么关系?我认为,MVC是一个更好的平台,可以将内容交付到各种设备,因为它更容易实现JS库,并且它允许开发人员轻松控制HTTP响应的内容(详细解释如下)。

    1)更容易在移动设备上实现Ajax___T,目前的带宽与宽带相当。Ajax通过较慢的连接大大提高了页面的性能,因为您只返回所需的数据(由浏览器格式化),而不返回数据和整个页面。

    2)MVC使开发人员能够更好地控制从请求返回的数据。这一点在实际的代码示例中最为明显,但在两行代码中,开发人员可以返回整个页面(包括母版页等)、JSON(javascript对象表示法),这是Ajax请求、XML或任何其他所需格式中选择的数据格式。

    代码示例:

    //Try doing this in webforms
    
    If (IsJson)
    
    {
    
    return this.JSON(model);
    
    }
    
    Else if (IsXml)
    
    {
    
    return new XMLResult(model);
    
    }
    
    else
    
    {
    
    return View(model)l;
    
    }
    

    使用Web表单更难实现这一级别的控制。对HTTP响应中返回的内容进行严格控制可以简化一系列设备(如传统浏览器或智能手机应用程序)或其他平台(如SharePoint)内的应用程序的内容开发。 2.1.1.6.mvc使用restful url_

    MVC使开发人员能够完全控制URL。对于WebForms,URL与代码的基础文件结构匹配。有了MVC,您就有了被称为“路由注册器”的文件,该文件将url_与处理请求的资源相匹配。

    完全控制URL有两个明显的优势:

    i)如果一个项目需要可读的URL或搜索引擎优化,那么URL控制是一个很大的优势。考虑以下事项:

    www.mywebapplication.com/users/alex.hardman(即检索名为alex.hardman的用户)

    而不是

    www.mywebapplication/users/getuser.aspx(会话中传递的名称)或www.mywebapplication/users/getuser.aspx?用户名=alex.hardman

    第一个URL(通过MVC)更具可读性,搜索引擎更友好(例如,所有相同的东西在所有主要搜索引擎中的排名都会更高)。

    ii)完全控制url_s的第二个优势与当前数字人文研究中数据保存的驱动力有关。在不太详细的情况下,数据保存的一个方面包括创建__permanent url__s_157;和__唯一资源标识符_(uri__)。Web表单中会话变量和视图状态的标准使用意味着同一个URL可以引用多个数据项(其中查询参数是通过视图状态输入的)。其结果是,在该庄园数据中访问的数据没有唯一的资源标识符(即Web上的唯一地址)。这意味着数据项不能被引用,因为它在Web上没有一个唯一的地址,并阻止它包含在链接数据计划和其他需要URI的研究计划中。

    URI和系统返回计算机可读数据格式(如XML)的易用性的结合,使开发人员在人文数据管理和保存技术的最佳实践方面具有优势。在最近的牛津大学人文科学研究数据库里,下一个在哪里?_秷秷秷秷秷秷秷秷秷秷秷秷秷秷秷秷这对我们的研究客户来说是非常有利的。

        4
  •  2
  •   Zhaph - Ben Duguid    15 年前

    退房 ASP.NET MVC Training Kit .

    它包括了一个预先准备好的(尽管60分钟)演示文稿,你可以随意使用。

    它的重点是:

    • 关注点分离
    • 可测试性
    • 控制

    实际上,在这之前,我做了类似的事情(尽管包括演示大约45-60分钟),而我们回家的关键是:

    它让您返回对HTML标记的控制。

    可测试性等已经相当了解,但这被视为比标准ASP.NET更重要的好处。

        5
  •  2
  •   Lurker Indeed    15 年前

    你得到了各种各样的观点——我的问题是,为什么你认为你首先要使用它,你认为它将如何帮助你和你环境中的开发团队的其他人?如果这些要点不适用于你的情况,它们是无用的。

        6
  •  2
  •   LCarter    12 年前

    事实上,15分钟并不足以真正钻取MVC带来的任何好处。我猜和你一起工作的人最熟悉ASP.NET Web窗体。如果不挖掘太多的设计模式以及为什么MVC是伟大的,最容易理解的事情就是使用Ajax。

    1. jQuery – Ajax
    2.  Routing – SEO and No need for Custom URL rewriting 
    3.  Partial-View – showing tabular data and use server-side Ajax to sort and a client side example using jQuery
    

    大多数情况下,当我进入开发Web表单的商店时,最常见的问题是我的控件在哪里;更具体地说,中继器或数据报在哪里?把这种类型的演示放在一起可以在15分钟内提供尽可能多的内容,并回答更常见的问题。

        7
  •  1
  •   User    15 年前

    向他们解释:

    1. 不再有服务器控件

    2. 不再有事件机制

    3. 不再有视图状态

    4. 现在,他们无法摆脱舒适的网络表单,必须学习HTTP、HTML/CSS和JavaScript的基础知识。

    为晕倒的人准备一些药。

    (5)。现在不是关于页面,而是关于资源(REST模型)。URL不会指向物理文件(.aspx),而是指向控制器操作,该操作可能提供不同类型的响应——要呈现的页面、作为Ajax响应的短XML等。

    另外,如果你有类似于公司内部框架的东西,它促进了许多共同的操作,并且是用webforms构建的,你很可能不会说服他们采用mvc,因为它意味着大量的工作,思想模式的巨大变化,以及可能的大量时间/成本。

    编辑:对于那些要求正面评价的人…

    (6)。SEO友好的URL开箱即用,无需第三方实用程序进行URL重写。

    (七)。完成对HTML输出的控制。没有ViewState负载,没有注入自动生成的ID=>清除标记+较小的页面大小=>流量消耗更少+响应时间更短。

    (八)。一个应用程序的干净透明设计的可能性(即使有多个层)。现在,您可以更好地设计一种架构,使数据流可以理解和跟踪,从数据库层到业务逻辑,直到到达视图为止,而不是在代码背后单独对每个控件进行黑客攻击。当每个控件直接进入数据库以获得一些要显示的数据时,与无处不在的WebForms编码样式相比,效果要好得多。不一定要管理一个干净的设计,但至少MVC概念使您现在更清楚如何正确地进行设计。

        8
  •  1
  •   Steve    15 年前

    我会通过路由吸引他们的注意力,这是最明显的东西(而且它不局限于MVC)。然后,我将查看更高级别的视图,并讨论关注点分离、可测试性和可模拟性。

    如果我是你,我会去 ScottGu's 写博客并使用他优秀的材料:—)

        9
  •  1
  •   aleemb    15 年前

    如果他们使用的是ASP.NET,那么他们可能不熟悉MVC体系结构,您可能需要稍微谈一谈。

    因为他们都是开发人员,而您只有15分钟的时间,所以我建议您向他们展示ASP.NET MVC项目的新文件,并简要介绍一下脚手架。对于MVC来说,这是一个很大的卖点,因为它是不间断工作的,并且您已经为迭代开发做好了准备。

    之后,您可以切换到一个简单应用程序的工作演示。为此,我将使用一个调试器单步执行应用程序,从global.asax中的路由到控制器操作,再到模型,最后返回到视图。这将带来有趣的问题,并解释新的应用程序生命周期,包括SOC、MVC、L2S等。这也将隐式地突出ASP.NET MVC和ASP.NET应用程序之间的差异。

    如果您有wfetch(或fiddler或live http报头),那么我也会显示客户端请求,并突出显示缺少视图状态,并突出显示post/get动词(如果您使用wfetch,请输入/删除)。也许在Ajax应用程序中提到了这一点。

    预测有关如何迁移当前应用程序以及当前用例场景的价值主张的问题。

        10
  •  1
  •   Community SqlRyan    7 年前

    最好的方法是遵循专业的ASP.NET MVC 1.0中的Scottauthories示例章节,在这里他将介绍如何使用具有所有功能的ASP.NET MVC开发一个完整的Web应用程序。你可以在20分钟内总结这一章。

    下载Scott Guthrie的示例章节 Here !

    LinkText: http://www.wrox.com/WileyCDA/Section/id-321793.html

    希望这有帮助。

        11
  •  0
  •   Morph    15 年前

    一个15分钟的博客。说真的,也许专注于关注的分离?

        12
  •  0
  •   2easy    15 年前

    当然,首先也是最重要的是概念的分离,它给出: 1.更透明的设计,更容易理解和管理。 2.配置上的约定。这加快了开发速度,减少了开发人员之间的编码/设计实践差异。 3.开发父已经编织成应用程序设计本身: 您开发模型,然后是控制器,然后是视图。单独更改和测试它们(可能是由专门的开发人员进行的)。

    但我要说的是,如果他们只给了你15分钟,他们真的不想听到或用它来解决这个问题;)

        13
  •  0
  •   Marko    15 年前

    我认为,当您想要展示一些新技术时,通常最好的方法是制作一个简单的例子,解释一些很酷的特性。

    您可以创建简单MVC应用程序的示例,该应用程序具有同一页的两个不同视图和两个不同的控制器。一个控制器可以用于异步操作,另一个用于正常请求。一个视图可以是普通视图,第二个视图可以是针对移动电话优化的视图。这是几个小时的工作,通过这个示例,您可以涵盖ASP.NET MVC的所有出色功能:

    路由选择 可测试性 -灵活性和关注分离

    干杯