http://www.garrettdimon.com/archives/aspnet-vs-front-end-architecture
该文作者细数了他在使用ASP.NET进行开发的过程中遇到的6点不爽的地方,主要都集中在前台架构上,包括大量内联的风格标签、不同浏览器生成不同页面代码、失败的标记设计、缺乏语意一致性、服务器端label和客户端label的脱节、服务器端ID和客户端ID脱节等等。尤其当你想使用标准的CSS,构建数据结构和表现分离的清晰页面时,ASP.NET的一些默认的内部处理可以让你对ASP.NET为何这样做完全无语。比较有趣的是本文后面的回复,其中有不少与楼主同病相怜的网友,还有来自微软员工的为ASP.NET辩护的声音。
我一直对MS在很多设计思路和决定上心存疑虑,不明白为什么MS硬是要自成风格搞自己那一套蹩脚的所谓"规范"或"标准",似乎在鼓励大家follow一个并不清晰、多少有些混杂无章的设计架构,其实为了方便它实现更cool的WYSIWYG开发工具。就拿今天来说,本来我们项目定义好所有模块都按BO和UI分开,BO里面的类和UI里面的类各施其责,原则上UI依赖BO,而不是反过来,按照我的理解和期望,Windows.Forms命名空间应该是由UI层来依赖,而非BO层。很显然,因为我们的form都放在UI层,肯定是依赖Windows.Forms了,而我们尽可能把所有业务逻辑代码放到BO层。但是为了临时实现一个文本文件形式的log,因为我们的业务逻辑代码都在BO层,所以为了记录有意义的log,我们的log逻辑自然而然只能放在BO层。但是一个基本的获取程序运行路径的方法属于System.Windows.Forms.Application类,让我们不得不using System.Windows.Froms。这其实还好,我们也许不应该强求Windows.Forms一定就是只针对UI上的应用。问题是你每天都在面对类似的情况,每天都或多或少在和.NET API和框架其他部分在打架,当你使用.NET的API时间久了,自然而然你就被它带到它的那一套思路中,你的设计也就自然而然跟着它走了,业务逻辑和UI逻辑交织在一起,当你回过头来想把层次理清理顺已经成为Mission:Impossible。因为抛开MS推荐的方式,自己实现一套自认更清晰的架构,相较"官方"的blueprint设计,代价实在有些高。
所以虽然我没有真正开发过ASP.NET,尤其是2.0版,但我很能理解他们遇到的尴尬。
分享到:
相关推荐
【ASP.NET大作业】是一个基于ASP.NET技术完成的项目,主要展示了如何利用.NET框架和ASP.NET Web应用程序开发平台来构建一个高效、用户友好的Web应用。这个大作业可能包括了数据库交互、文档管理等多个功能模块,旨在...
这个期末大作业涵盖了ASP.NET一学期的学习内容,意味着我们将探讨一系列关键概念和技术,包括基础语法、页面生命周期、数据绑定、控件、状态管理以及安全性等方面。 首先,让我们从ASP.NET的基础开始。ASP.NET的...
asp.net大作业合集asp.net项目打包asp.net课程大作业asp.net期末大作业_ASP.NET-
六、ASP.NET安全性 ASP.NET内置的安全特性包括身份验证、授权、加密和解密等,确保了Web应用的安全。常见的身份验证模式有Windows、Forms、Passport和Windows集成认证等。授权机制可以控制用户访问特定资源的权限。 ...
这个"ASP.NET大作业"是你个人完成的一项实践项目,它实现了基础的数据操作功能,包括添加(Add)、删除(Delete)、修改(Update)和查询(Query),这些都是Web应用中最基本且重要的元素。 首先,让我们深入理解...
本卷从最易于理解和使用的那部分入手,介绍ASP.NET AJAX框架中能够与传统ASP.NET无缝对接的服务器端部分,包括服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit。这部分内容不需要读者有任何的客户端...
ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP...
实验六旨在帮助你掌握ASP.NET的核心概念和技术,进一步提升你的Web开发技能。 首先,ASP.NET的页面生命周期是理解其工作原理的关键。在这个实验中,你会学习到从用户请求一个网页到服务器响应的整个过程,包括初始...
ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP...
* 3.0 版:ASP.NET Core 的第六个版本,于 2019 年发布。 * 3.1 版:ASP.NET Core 的第七个版本,于 2020 年发布。 六、ASP.NET Core 的应用实践 * Razor Pages:ASP.NET Core 的 Razor Pages 框架,提供了一个...
ASP.NET技术就是由微软的.NET技术细化而来的,它跟ASP技术有些关系,然而又不是仅仅是一个继承,可以讲,ASP.NET跟ASP想比较的话,已经是变得面目全非了,当然好得至少是一个量级以上。 ASP.NET完全基于模块与组件,...
ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业...
六、ASP.NET 中的内置对象 * ASP.NET 中的七个内置对象:Request、Response、Server、Session、Application、HttpContext、Page 七、XML 和 DTD * URL 的中文意思是指统一资源定位器 * DTD 最大的作用就是验证 ...
asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典...
六、ASP.NET Core ASP.NET Core是ASP.NET的最新版本,它是一个跨平台的开源框架,可以运行在Windows、Linux和macOS上。ASP.NET Core引入了依赖注入、中间件和Kestrel服务器等新特性,提高了性能和可移植性。 七、...
基于ASP.net的大学生兼职管理系统源码基于ASP.net的大学生兼职管理系统源码基于ASP.net的大学生兼职管理系统源码基于ASP.net的大学生兼职管理系统源码基于ASP.net的大学生兼职管理系统源码基于ASP.net的大学生兼职...
asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统
ASP.NET core 5.0文档PDF(含目录,共5453页)。摘要: ASP.NET Core 文档及新增内容 ASP.NET 比较 .NET Core 和 .NET Framework 入门新增功能 5.0 版中的新增功能 3.1/3.0/2.2/2.1/2.0/1.1 版中的新增功能 教程Web ...
《ASP.NET设计模式》内容简介:这本独特的书通过强调松散耦合、高内聚的ASPNET Web应用程序架构设计,使得人们对高质量ASP.NET应用程序结构的认识更进一步。每一章内容分别解决企业ASP.NET应用程序中的一个层,同时...
[搜索链接].Net版智能自动链_bylinkacc.zip源码ASP.NET网站源码打包下载[搜索链接].Net版智能自动链_bylinkacc.zip源码ASP.NET网站源码打包下载[搜索链接].Net版智能自动链_bylinkacc.zip源码ASP.NET网站源码打包...