WebForm 自面世以来,  广受广大开发人员的欢迎 。

当然, WebForm 有一些 著名的 弊病,  比如 笨重的 ViewState 。

不过 我们 可以 用 一些 更加 先进 和 灵巧 的 方式 来使用它 。

比如,   《WebForm Anyway》  https://www.cnblogs.com/KSongKing/p/9455143.html  ,

WebForm  优秀 的 控件模型, 很方便, 很好, 很优秀 。

比如  UserControl,  后来者 没有 超越的,  包括  MasterPage,  当然 MasterPage 也是 WebForm 的, 不过我顺便说两句,

MasterPage   把   Web 简单草根 自由清新 的 传统  的 乡村空气    完全 搅浑了,   搅成一塘泥巴  。

明明在  页面  里   放一个   Header  和 一个  Footer   的  UserControl  就完事 的 事,  非要 搞一个 不透明 的 框(MasterPage) 框起来 ,,,

MVC 即使有 多种 方式 插入一个 局部界面, 比如   RenderPartial()  什么的,  没有一样 比得上  UserControl 。

后来者     没有    超越  UserControl  的 。

后来者 也  没有   超越   GridView   的 。

后来者 也  没有   超越   HttpModule   的 。

后来者 也  没有   超越   HttpHandler(.ashx) 的 。

Aspx 、 HttpHandler(.ashx)、HttpModule   三剑客 的 灵活性 无与伦比,  跟 后来者 比起来,  强大到让人 想哭 。

就 灵活性 这一点 而言,  堪称  Web 界  的   C 语言 。

Asp.net Core  的    Middle Ware ,  只不过是  新瓶 装 旧酒,   仅此而已 。

把  “观察者”  变成  “职责链”,  这是 创新 还是 革命 ?

Web 开发模型 在  WebForm 时代 就已经 达到 完备 了,

Aspx 、 HttpHandler(.ashx)、HttpModule    可以做 任何事 。

实际上, 如果按照 上面提到的 《WebForm Anyway》,   WebForm 可以容易的和 各种 前端框架 结合起来 。

So  ……    Any Problem    ?

从 其它方面 来看,  WebForm 快速开发 的 特性 使得 WebForm 可以用于 科研教育 事业,  可以编写 Demo,  可以用于 软件工程 里的 原型开发(Prototype) 。

WebForm 应该 扬弃,  而不是 抛弃,   抛弃 WebForm 等于 “因噎废食” 。

MVC 是要 改良 WebForm 的 弊端, 但是 自己 又 搞了 一套 蹩脚 的 规则 把 自己 套了 起来, 还不如 Web Pages 。

首先, 强迫使用 所谓的 “显示(View) 控制(Control) 模型(Model)”  分离 又 对应 的 这个 架构 本身 就是 失败 的, 非常失败 。

WebForm 对 3 层 架构 的 支持 很好, 把 UI 和 BL 分离 的 很清楚, 前端 后端 也 分离 的 很清楚 。

WebForm 非常经典, 非常优秀 。

而 反过来 看,  相比于 WebForm 直观 清晰 易用 的 3 层架构,  MVC 的 什么 “View 和 模型”  简直 是 为设计而设计, 就是 所谓的 “过度设计” 。

什么 View 和 模型(Model), 根本 不需要 这些 概念 。

要 这些 概念 做什么?

Web -> BL -> DAL

这很清楚 。

MVC 把 Web 分成了 View, Control, Model ,,,,,这 光 Web 层 都 变成 3 层 架构 了 。

MVC 里 还有一个 更糟 的 地方 是,

Model 还会跟 View 挂钩,  意思是 “某某 页面 涉及到 的 业务实体 是 xx ,yy ……” ,

这 挂钩 简直 是 纯粹 是 设计人员 和 开发人员 的 负担, 累赘  。

有 网友 提到 MVVM,    MVVM 我也反对 。

MVC 是 破坏 3 层架构 的,   从 MVVM 上 更加 清楚 的 可以看出来 。

MVC 表面上 分层 ,实际上 把 BL 和 DAL 削弱了, 并 把 BL 和 DAL 的 职能 混杂 进 了 UI 层, 这 非常 糟糕 。

MVVM 用来 做控件 可以, 做架构 不行 。

WebForm 的 前后端 分离 的 很清楚,

WebForm 可以 自由 的 使用 前端 渲染, 没有问题 。

前后端 架构 很清楚 。

WebForm 提供了 清晰 的 架构 和 灵活性, 可以在 后台(服务器端) 处理 UI 逻辑, 也支持 纯前端, 也支持 前端 和 后台 结合处理 UI 逻辑 。

所以说, WebForm 的 架构 是 很清晰 和 灵活 的,

WebForm 可以 简化 轻量化, 并和 前端 结合起来,

我认为 这样 很 完美 。

其实 MVC 更像 cgi, 只是比 cgi 更高级, 可以 方便 的 和 静态资源 混合 渲染 。

还可以参考:

《WebForm AnyWay》  https://www.cnblogs.com/KSongKing/p/9455143.html  ,

《我发起并创立了一个 .Net 平台上的 Web 业务系统 基础库 开源项目 WebEasy》  https://www.cnblogs.com/KSongKing/p/10249997.html  ,

《我发起并创立了一个 Javascript 前端库 开源项目 jWebForm》  https://www.cnblogs.com/KSongKing/p/10326119.html  。

.Net Core 没有 WebForm 是 历史 的 退步, MVC 是一个 糟糕 的 设计的更多相关文章

  1. Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  2. ASP.NET Core 中文文档 第四章 MVC(4.6)Areas(区域)

    原文:Areas 作者:Dhananjay Kumar 和 Rick Anderson 翻译:耿晓亮(Blue) 校对:许登洋(Seay) Areas 是 ASP.NET MVC 用来将相关功能组织成 ...

  3. ASP.NET Core 中文文档 第四章 MVC(2.1)模型绑定

    原文:Model Binding 作者:Rachel Appel 翻译:娄宇(Lyrics) 校对:许登洋(Seay).何镇汐 模型绑定介绍 ASP.NET Core MVC 中的模型绑定从 HTTP ...

  4. Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  5. 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】

    Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...

  6. .NET Core快速入门教程 2、我的第一个.NET Core App(Windows篇)

    一.前言 本篇开发环境?1.操作系统: Windows 10 X642.SDK: .NET Core 2.0 Preview 二.安装 .NET Core SDK 1.下载 .NET Core下载地址 ...

  7. .NET Core快速入门教程 3、我的第一个.NET Core App (CentOS篇)

    一.前言 本篇开发环境?1.操作系统:CentOS7(因为ken比较偏爱CentOS7)2.SDK版本:.NET Core 2.0 Preview 你可能需要的前置知识1.了解如何通过Hyper-V安 ...

  8. .NET CORE学习笔记系列(2)——依赖注入[4]: 创建一个简易版的DI框架[上篇]

    原文https://www.cnblogs.com/artech/p/net-core-di-04.html 本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章从 ...

  9. 从ASP.Net Core Web Api模板中移除MVC Razor依赖项

    前言 :本篇文章,我将会介绍如何在不包括MVC / Razor功能和包的情况下,添加最少的依赖项到ASP.NET Core Web API项目中. 一.MVC   VS WebApi (1)在ASP. ...

随机推荐

  1. pytest自动化4:fixture之yield实现teardown

    出处:https://www.cnblogs.com/yoyoketang/p/9401554.html 前言: 上一篇介绍了fixture通过scope参数控制setup级别,我们一起来温故下fix ...

  2. 【javascript小案例】从0开始实现一个俄罗斯方块

    写在前面得话: 这篇文章主要记录了我是怎么一步一步写出俄罗斯方块,整个代码用的函数编程,主要是为了让一些不熟悉es6, 面向对象写法得 新手能更容易看明白,全部得代码中都是一些js的基础知识,很容易理 ...

  3. centos6 升级安装openssh7

    1.准备工作: 查看下当前SSH版本: [root@bogon ~]# ssh -V OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 或者 [root@b ...

  4. C语言的AT指令

    今天跟人聊嵌入式,对面是某国际硬盘生产商的嵌入式软件工程师,问了我很简单的问题,如何快速将一个变量赋给某个特定的地址. 按我们思路就是unsigned *a = address1:  *a = add ...

  5. json模块

    dic = {"name":"boke","age":"18"} #字典 data = json.dumps(dic) ...

  6. 2018-2019-2 网络对抗技术 20165228 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165228 Exp4 恶意代码分析 1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...

  7. 【EMV L2】GPO响应以及AIP、AFL

    [GPO命令] 终端通过GPO(Get Processing Options)命令 通知卡片交易开始.命令数据为PDOL指定的终端数据. [GPO响应] 卡片在GPO命令的响应中返回AIP和AFL:A ...

  8. CSS-图片占位的技巧

      图片占位技巧,防止动态获取图片 网络慢,页面一跳一跳的情况发生 .food .image-header {                position: relative;  width: 1 ...

  9. Vue基础之内部指令(上)

    v-if.v-else-if.v-else以及v-show 条件指令v-if.v-else-if.v-else 类似于JavaScript里的if.else-if.else,这三个指令根据表达式的值对 ...

  10. PA教材提纲 TAW10-1

    Unit1 SAP systems(SAP系统) 1.1 Explain the Key Capabilities of SAP NetWeaver(解释SAP NetWeaver的关键能力) Rep ...