zoukankan      html  css  js  c++  java
  • 简介 – ASP.NET MVC 4 系列

           正所谓好记性不如烂笔头,尤其是技术类书籍在阅读后,时间久了一定会忘记。而重新翻阅整本书也较为低效,遂以博客记录阅读摘要以供日后查阅。本系列文章均摘要自 Wrox 红皮书【ASP.NET MVC 4 高级编程(第4版)】,喜欢详细了解的码农兄弟也可以自行购买

    MVC 模式简介

            MVC 将应用程序的用户界面(User Interface,UI)分为三个主要部分:

    1. 模型:描述了要处理的数据以及修改和操作数据的业务规则。
    2. 视图:应用程序用户界面的呈现方式。
    3. 控制器:一组类,处理来自用户、整个应用程序流的通信。

           MVC 是一种结构模式,ASP.NET MVC 采用了大部分基于 MVC 的 Web 框架所使用的一些基本规则:

    1. 约定优于配置
    2. 不重复(DRY原则,Don't Repeat Yourself)
    3. 尽量保持可插拔性(pluggability) 

    Razor 视图引擎

          Razor 简洁、富有表现力、灵活。书中有一句总结较为经典:我一直在寻找 Razor 的语法规则,直到有人告诉我不要再想了,直接输入“@”符号就可以开始编写代码了,我才意识到原来 Razor 本无规则

    ASP.NET Web API      

           它是一个提供了 ASP.NET MVC 开发风格的框架,专门用来编写 HTTP 服务。下面是一些类似 MVC 的 Web API 功能,但只适用于 HTTP 服务域

    • 路由:ASP.NET Web API 使用同样的路由系统,将 URL 映射到控制器操作。它按照约定将 HTTP 动词映射到操作,从而实现将路由融入 HTTP 服务上下文,使得代码更易于阅读,也鼓励了 RESTful 服务设计
    • 模型绑定和验证:和 MVC 简化映射输入值(表单域、cookies、URL参数等)到模型值的过程一样,ASP.NET Web API 自动把 HTTP请求值映射到模型。
    • 过滤器:MVC 使用过滤器以便通过特性向操作添加行为。例如,向某个 MVC 操作添加 [Authorize] 特性会阻止匿名用户访问,匿名用户将被重定向到 Login 页面。
    • 基架:也拥有 ASP.NET MVC 基架。
    • 简易的单元测试:和 MVC 很像,ASP.NET Web API 建立在依赖注入和避免全局状态使用的概念之上。

          

           此外,ASP.NET Web API 专门为 HTTP 服务的开发,添加了一些新的概念和功能

    • HTTP 编程模型:为了更好的处理 HTTP 请求和响应,Web API 开发经验得到优化,提供了一个强类型的 HTTP 对象模型、HTTP 状态码和容易访问的 headers等。
    • 基于 HTTP 动词的动作调度:MVC 根据操作方法的名称来调度,而 Web API 则根据 HTTP 动词自动调度操作方法。例如,一个 GET 请求会被自动调度到一个名为 GetItem 的控制器操作。
    • 内容协商:浏览器或其他 HTTP 客户端给出它们的响应格式优先级,而服务器用它支持的首选格式做出响应。这样,我们的控制器就能提供 XML、JSON 或其它内容来响应客户端最想要的格式。
    • 基于代码的配置:服务配置是复杂的。WCF 采用冗长复杂的配置文件来完成配置,而 Web API 完全通过代码配置。 

    其他功能      

           通过代码进行的额外功能逻辑配置正开始集中到 Global.asax 中的 Application_Start 方法中,庆幸的是 ASP.NET MVC 中,这些配置已经转移到 App_Start 目录下的静态类中:

    • AythConfig.cs:配置安全设置,其中包括站点的 OAuth 登录。
    • BundleConfig.cs:注册捆绑微小系统。默认添加一些捆绑,包括 jQuery、jQueryUI、jQuery 验证、Mondernizr 和默认的 CSS 引用。
    • FilterConfig.cs:用来注册全局 MVC 过滤器!尽管只默认注册了一个 HandleErrorAttribute,但这里绝对是注册其它过滤器的好地方
    • RouteConfig.cs:存放 MVC 配置语句、路由配置的鼻祖。
    • WebApiConfig.cs:用来注册 Web API 路由,以及设置任何其他 Web API 配置设置。
  • 相关阅读:
    Solution: Win 10 和 Ubuntu 16.04 LTS双系统, Win 10 不能从grub启动
    在Ubuntu上如何往fcitx里添加输入法
    LaTeX 笔记---Q&A
    Hong Kong Regional Online Preliminary 2016 C. Classrooms
    Codeforces 711E ZS and The Birthday Paradox
    poj 2342 anniversary party
    poj 1088 滑雪
    poj 2479 maximum sum
    poj 2481 cows
    poj 2352 stars
  • 原文地址:https://www.cnblogs.com/SkySoot/p/4857303.html
Copyright © 2011-2022 走看看