zoukankan      html  css  js  c++  java
  • 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照(颠覆性理论)

        

        在【.NET特供-第三季】系列博客中的第一篇《ASP.NET MVC系列:MVC与三层图形对照》发表之后,引起了领导的注意。同一时候,开发小组内部在交流MVC和三层之间关系的时候,也感到很的混沌。   

        在这里对上一篇文中所阐述的错误概念,向读者表示诚挚的歉意。同一时候,很感谢米老师辛勤指导。关于‘MVC与三层图形对照’将在本文中做出修正。


        学习是一个过程,对于概念的理解并非一蹴而就的,而是盲人摸象的理论,逐渐清晰。

        首先,给大家看一张图。


    接下来的内容,将对图中的观点做出论证:

    一、从三层->MVC,由链式结构->图形关系。(四步曲)


      1、三层:

      三层之间存在一种严格的调动关系:

    1、U层->B层,B层->D层。

    传递的是:命令流,或者理解为方法的调用,是主动的。

    2、D层- ->B层,B层- ->U层

    传递的是:数据流,或者理解为事件通知/数据传递,是被动的。

    • 总结为:
      • U、B、D仅仅能顺次调用,接口之间是向下依赖,U不能直接和D进行通信。逆向同理。
      • U、B、D之间的关系是平等的。
      • 充分体现了一种分层的思想。


      2、MVC错误一

     错误观点:

    1. U层=View + Controller            
    2. B层+D层=Model

    正解剖析:

    1. B层=IBLL+BLL
      • 三层中的B层,包括了两类信息:
        • 调用关系。简单理解为:接口IBLL,告诉我们:要做什么/我要调用谁。           
        • 业务关系。简单理解为‘实现’,告诉我们:详细的该怎么做。1-2-3……
    2. Controller=U层的一部分+IBLL
      • Controller是控制器,负责指挥*要干*,详细怎么干,他无论。
    3. View仅仅用于显示
      1. 能够通过‘映射文件URL引擎’的方式与Controller进行关联
    4. Model=BLL+D层
      • Model包括B层的实现+IDAL+DAL
        • 简单理解为:对象+操作(针对对象的)。比如:把‘一个班的信息,和对这个班级的正删改查’封装为一个对象,构成集合类。对于公共性的实现,构成了容器(这里不太清楚)。

    (大家来找茬:依据上述的观点,有兴趣的读者能够在图中标注出错误点。文末会给出正确答案)


      3、MVC错误二

    错误观点:

    1. MVC和三层一样,都是同级的调用关系

    正解剖析:

    1. MVC中Controller<控制器>决定性的作用
      • View和Model之间的通信,必需要经过C的允许!换句话说
        • 仅仅要Controller不允许,View和Model就不能进行通信
        • 仅仅有C允许了,View才干和Model进行通信。是直接通信
      • 举个样例:公司领导就是C控制器,掌管着公司的大小事物。员工想要预支薪水,须要经过领导的批准,然后交给会计部门处理。然后会计部门才干为员工发薪水。实际上运行任务的还是会计部门,前提是领导批准。
    2. 三层中,遵从严格的调用关系
      • U层调用B层,B层调动D层。依次调用,逆序返回。换句话说
        • U层和D层是不能进行直接通信的。(而MVC中能够)

    (大家来找茬:依据上述的观点,有兴趣的读者能够在图中标注出错误点。文末会给出正确答案)


      4、MVC正确

    1. 调用方式
      1. 三层:依次调用。
        • U层->B层,B层->D层。
      2. MVC:C是控制器(地位最高)
        • C负责控制View和Model之间的通信
    2. 效率方面
      1. 三层:效率低。
        • U层和D层之间不能进行通信。
      2. MVC:效率高
        • View和Model就能够进行直接通信,加快传输速度(前提是:C允许)。
    3. 界面的灵活性
      1. 三层:灵活性差。
        • 在ASP.NET中每个.aspx文件以下都耦合了一个.aspx.cs文件。不能单独替换界面
      2. MVC:灵活性好
        • 在C的统一管理之下,用户和数据操作进行有效的隔离。
        • V:C=多:1。一个View仅仅能相应一个C,一个C能够管理多个V。能够任意更换View(仅仅须要更改映射文件)。
    4. 适用场景
      1. 三层:适用于CS,可用于BS。
      2. MVC:仅仅能用于BS
    5. 分层方式不同
      1. 三层:‘代码’上解耦
      2. MVC :‘物理’上解耦
        • 瘦client,胖server。
          • View位于client。降低页面信息,变化降低,对客户机的要求低,仅仅要有浏览器就够了,不须要安装过多的插件
          • Controller、Model位于server。


    二 思维拓展(带给大家一种学习的方法)

     米老师常说‘一张图胜过千言万语’。这说明了什么呢?

    1. 图形的信息量非常大。
      • 所以在画图的过程中要有側重点。从本文的图形进行举例:
        • 突出完整实体。
          • UBD用不同的‘长方形’来区分边界,而不是‘线段’。
        • 耦合。
          • U和B之间有明显的界限,突出;‘解耦’的特性
        • 命令流和数据流分开。
          • 命令流:实线+箭头
          • 数据流:虚线+箭头
        • 对齐,便于比較。
          • 方便图形中的纵向比較
    2. 人类更擅长对‘图’的记忆。   
      • 抽象一点能够理解为:人对图形的记忆能力,或者说是理解能力,是远远超过文字的。由于在学习的过程中,多多的借助‘图’的概念去理解知识,更加有助于编制知识网。


    三 答案解析: 

      MVC错误一:

    1. C职责划分错误
      1. 由两部分组成:U层中的一部分+B层中的接口
    2. 对照:B层和C
      • B层:让你干什么+怎么干
      • C负责指挥:让你干什么!M:怎么干+数据。(构成容器)

      MVC错误二:

    1. C地位错误
      1. MVC:C<控制器>起决定作用
        • View能够和Model进行直接通信。(仅仅要C允许)
      2. 三层:遵从严格的调用关系。
        • 换句话说U层和D层是不能进行直接通信的。(而MVC中能够)


    总结:

        本文通过图形化的解说方式,从职责划分角度对三层和MVC进行对照。从三层的链式结构,逐渐过滤到MVC的图形关系。希望能为您带来一些帮助。

        同一时候强烈推荐:利用‘图’来整理自己的思维。绘图一定要有側重点,突出側重点。而不是让图中的无效信息宣兵夺主。

        文末给出了图中的错误观点的理由。也欢迎读者给出自己的见解,相互切磋。




  • 相关阅读:
    Oulipo
    伊吹萃香 (Standard IO)
    雾雨魔理沙 (Standard IO)
    帕秋莉·诺蕾姬 (Standard IO)
    射命丸文 (Standard IO)
    家庭作业 (Standard IO)
    数字游戏 (Standard IO)
    asp.net后台正则表达式验证手机号码邮箱
    ASP.NET实现Cookie功能的三个基本操作(写入,读取,删除)
    C# DateTime 月第一天和最后一天 取法
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4032554.html
Copyright © 2011-2022 走看看