• .NET MVC学习笔记(一)


    看了些关于MVC的资料,做一些MVC的笔记。


    分解关注点


    在MVC世界里有个很重要的观念--“分解关注点”(Separation of Concerns),指的是:当你进行软件开发时,可一直关注当前的对象,而不会受到同样的系统中其它对象的干扰,进而专注于完毕开发工作。如此一来,不但easy提升软件质量,也能够加快对代码的理解速度。

    分解关注点观念的特征与优势

    • 简化复杂度
    • 大幅提升可维护性
    • 更易于測试


    对开发ASP.net MVC项目的建议


    不要反复你自己:

          好的软件不应该有太多反复的程序代码,所以:Don't Repeat Yourself

    没有完美的架构,仅仅有合适的架构

    适当的设计模式有助于提升架构的质量

    分割你的脑袋,并且至少切成3份:

           至少是Model、View、Controller,有的时候能够使Service Level,Repository Level、Helper Level等。

    创建有责任感的对象:

          MVC中已经分割定义了 Model负责商业逻辑、View负责前端显示、Controller负责数据流程控制等不同的职责,三者分工合作、严守纪律、不得逾越

    规范对象合作

    相信总会有更好的解决方法

    没有人能够将软件一次写对


    ASP.net MVC中常见的问题


    MVC的模式仿佛又回到了ASP的年代?

          在ASP年代,没有合适的模板引擎,全部的程序与视觉逻辑混在了一起,这样的写法为“意大利面式”的写法。在ASP.net Web Forms年代,有了 CB(Code Behind)的概念,有效分离了HTML代码和程序代码。而且MS导入了Windows Form的开发方式,ViewState与事件驱动模型(EventModel)。面对越来越复杂的WEB需求,WEB Form变得异常复杂且难于维护。能把ViewState写出超过1MB的人大有人在。由此可见,因为对ASP.net页面生命周期不了解而衍生出来的Bug不知道有多少个。在MVC年代,View里面不应该在又复杂的程序或者是业务逻辑,二十斤留下显示的部分,如HTML,JavaScript,数据显示,窗体等。然后Controller负责控制其余部分,由Model负责訪问数据或验证数据格式----理清彼此之间的责任后才干编写出好的“分解关注点”架构,进而提升项目的可维护性。


    ASP.net MVC与传统的ASP.net Web Forms开发有何不同?

    ASP.net开发者都会遇到的恼人问题:

    • 邪恶的ViewState,easy导致超大控件,使程序失控。
    • 控件组件对于HTML的控制不够直接或太过复杂。
    • 不易于採用TDD模式(Test Driven Development 測试驱动开发)进行开发,也不easy编写单元測试程序。

    MVC的长处:

    • 清晰的“分解关注点”架构会强迫你写出较WebForms更易于维护的程序
    • 开发性与社区支持
    • 可让你全然控制HTTP的输出内容
    • 优秀的开发效率
    • 易于測试的架构
    • 易于分工的架构

    MVC的缺点:

    缺乏工具的支持(和WebForm的那种~~拖的感觉 全然不同)

    缺乏成熟的组件化技术的支持(眼下仅仅有ServerControl、HTML Helper)


    MVC与Web Forms有哪些同样之处?


    两者处理网页的接口事实上都是IhttpHandler,只是WF(WebForm)是IHttpHandler,MVC是当做 MvcHandler类来处理。


    必须舍弃WebForm的哪些部分?

    MVC中不能使用的技术例如以下:

    • ViewState
    • ASP.net页面追踪机制(Page Trace)
    • ASP.net时间驱动模型(EventModel)
    • server控件(ServerControl)大部分不能使用,但没用在ViewState中的server控件还是可以用于显示
    • Default SiteMap Provider

    MVC和WF简单的功能对比
    支持功能 Web Form MVC1.0/2.0
    ViewState x
    PageTrace x
    EventModel x
    ServerControl 部分支持
    System.Web.SiteMapProvider x
    Provider Model
    System.Web.Caching命名空间
    System.Web.SessionState命名空间
    System.web.Security命名空间
    Profile,Membership,SiteMap
    其它System.Web.*功能














    M、V、C真的能够独立开发吗?

    能够,可是不绝对。M是MVC的架构中心,有了M就能够让 C和 V參考这些Model,先定义出来全部计划开发的Controller和Action然后再创建全部的Action和相应的View。这是眼下效率最高的开发方法。

    WF项目能够逐步转移到MVC项目吗?

    没办法。



  • 相关阅读:
    多线程、事件驱动与推荐引擎框架选型
    Protobuf协议应用干货
    集群选举算法实现
    基于OpenSSL的HTTPS通信C++实现
    通过UNIX域套接字传递描述符的应用
    我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
    C++反射机制:可变参数模板实现C++反射
    git多个远程仓库
    设计模式—模板方法的C++实现
    Java中的运算符
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3759936.html
Copyright © 2020-2023  润新知