.Net Core 没有 WebForm 是 历史 的 退步, MVC 是一个 糟糕 的 设计
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 是一个 糟糕 的 设计的更多相关文章
- 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 ...
- ASP.NET Core 中文文档 第四章 MVC(4.6)Areas(区域)
原文:Areas 作者:Dhananjay Kumar 和 Rick Anderson 翻译:耿晓亮(Blue) 校对:许登洋(Seay) Areas 是 ASP.NET MVC 用来将相关功能组织成 ...
- ASP.NET Core 中文文档 第四章 MVC(2.1)模型绑定
原文:Model Binding 作者:Rachel Appel 翻译:娄宇(Lyrics) 校对:许登洋(Seay).何镇汐 模型绑定介绍 ASP.NET Core MVC 中的模型绑定从 HTTP ...
- Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- 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 创 ...
- .NET Core快速入门教程 2、我的第一个.NET Core App(Windows篇)
一.前言 本篇开发环境?1.操作系统: Windows 10 X642.SDK: .NET Core 2.0 Preview 二.安装 .NET Core SDK 1.下载 .NET Core下载地址 ...
- .NET Core快速入门教程 3、我的第一个.NET Core App (CentOS篇)
一.前言 本篇开发环境?1.操作系统:CentOS7(因为ken比较偏爱CentOS7)2.SDK版本:.NET Core 2.0 Preview 你可能需要的前置知识1.了解如何通过Hyper-V安 ...
- .NET CORE学习笔记系列(2)——依赖注入[4]: 创建一个简易版的DI框架[上篇]
原文https://www.cnblogs.com/artech/p/net-core-di-04.html 本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章从 ...
- 从ASP.Net Core Web Api模板中移除MVC Razor依赖项
前言 :本篇文章,我将会介绍如何在不包括MVC / Razor功能和包的情况下,添加最少的依赖项到ASP.NET Core Web API项目中. 一.MVC VS WebApi (1)在ASP. ...
随机推荐
- webdriver的三种时间等待( sleep(); implicitly_wait(); WebDriverWait();)
https://blog.csdn.net/HeatDeath/article/details/71774572 基于<Selenium 2自动化测试实战>的学习笔记(11)—— 设置等待 ...
- WebApi--------找到了与该请求匹配的多个操作问题解决
错误信息: {"Message": "出现错误.","ExceptionMessage": "找到了与该请求匹配的多个操作: \r ...
- Linux 安装python3.4
不要动现有的python2环境! 不要动现有的python2环境! 不要动现有的python2环境! 默认yum好用 默认环境不全 1. 安装环境 yum -y install zlib zlib-d ...
- 绘客708s的设置
平时也有画画的想法,虽然画的不好,但是装备还是少不了的.因此,在大概一年之前就入手了绘客的708s的绘画板,10寸乘6寸的,很大,手绘方便多了. 在这段时间内,使用绘画板的时候还是遇到了一些问题,最主 ...
- Idea常用功能汇总
1.格式化代码:Ctrl+Alt+L 2.重命名变量:光标停留在变量上,Shift+F6 3.打开文件或者项目所在目录: 右键>Show in Explorer 4.添加包围代码块的快捷键:Ct ...
- 抛开visual studio,纯手工创建asp.net mvc遇到的问题
脱离Visual Studio,只用文本编辑器..NET Framework.IIS Express创建ASP.NET MVC应用时,需要精简~/View目录下web.config文件内容,之前创建的 ...
- 使用Axure做验证码之校验验证码(二)
本次作业,输入验证码,并校验验证码是否正确.上篇文章,介绍了如何获取验证码,本次作业在上次作业的基础上,做进一步的深究. 1.在上次作业中,增加新的元件: 文本框,命名:输入验证码: 增加热区,命名为 ...
- 搭建vue的开发环境
随手笔记:win7 64bit 1.安装node,直接从node官网下载,安装即可. 2.命令行输入 node -v 查看是否安装成功,显示node的版本号即安装成功.安装成功后,输入node,进入n ...
- Charles Map Local 中文显示乱码问题
最近在迁移客户端的业务,用React Native实现,在用本地数据测试Android的时候,遇到到中文乱码的问题.是因为编码问题. 一.首先看看文件编码是否是UTF-8,我的电脑是安装了Sublim ...
- 利用 SPICE 分析理解心电图前端中的右腿驱动
[导读] 心电图(ECG)学是一门将心脏离子去极(ionic depolarization) 后转换为分析用可测量电信号的科学.模拟电子接口到电极/患者设计中最为常见的难题之一便是优化右腿驱动 ( ...