打造颠覆你想象中的高性能,轻量级的webform框架-----如何替换webform的垃圾控件(第一天)
前文描述:
随着.net 推出 MVC框架以来,webform 与 mvc 的争论一直没有停止过,一直以来 mvc 的 拥护者远远高于 webform,但是webfrom的有些优势又是mvc而无法替代的。下面我们来看一下webform相比与MVC的劣势在什么地方,而我们要做的是如何解决这些劣势,同时在性能上要超过MVC。
1.大量的服务器控件,大量的垃圾代码,导致页面加载速度慢。
2.每次点击按钮或者一些操作 界面都会刷新,又不想写 ajax 。
3.每次调用后台前想先执行前台很难写, 前台 传参数到后台很困难
4.webfrom 自定义控件 效果很不好,也很难写
5.前台页面与后台代码紧密相连,无法分离,需要写很多重复的页面
6.没有像MVC那样的视图 引擎机制
7.没有mvc 那样的路由机制
. *****
当然 webform 的坏处还远不止这些,而作为一个开发人员这些问题我们都是知道的,但是我们依然在使用webform开发大型网站,下面来看下我们公司是如何避免这些问题的?在了解框架之前,我们得必须知道我们公司的框架的思想!!!!
什么样的前端架构才是最好的?
其实作为一个开发人员,除了关心性能之外,你最关心的是扩展性以及代码的可维护性,还有代码的简单易懂。而作为前端开发,你需要能控制到 每行代码都能自己去控制,下面是我的个人观点!
我认为 最接近原生 的 html 的代码 是最好的 前端,比如大家所谓的 easyui,bootstrap 等框架,虽然能减少你的开发周期,减少控件开发,但是问题也很多,如果需要扩展功能很难,整个页面的加载速度很慢,而且很难去控制,因为很多js代码不是你写的,里面一旦出现BUG很难去纠正,如果有条件 可以去自己开发控件,我推荐使用 jquery控件(jquery能很好的兼容各种浏览器)和 C#控件(这里指的是纯cs 输出 html代码的控件)。
问题一: .大量的服务器控件,大量的垃圾代码,导致页面加载速度慢。 如何解决?
我们要打招高性能的 webform,我们要明确一个思想,我们要抛弃一切服务器控件,界面布局全部使用 最原生的html,这样的好处很多,能很好的与美工 做出来的效果保证一致,但是我们依然要使用的 runat="server" ,还要写上id ,这样我们才能在后台获取到值。
有人会问,那分页控件怎么办(我推荐使用 c# 输出html 控件),很多特殊的控件怎么办?比如日历控件(我推荐使用js 日历控件),
我们常用repeater 控件怎么办?(我推荐 后台写写一个全局变量,前台 使用<% %> 的方式来进行 前台页面输出),例如:
<table>
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<%
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
%>
<tr>
<td>
<%=dt.Rows[i]["name"].ToString() %></td>
<td>
<%=dt.Rows[i]["age"].ToString() %></td>
</tr>
<%
}
}
%>
</table>
同样我们可以用 <% %> 的方式代替 razor 的视图引擎。
好了这样 ,这样的页面是否会觉得跟html 的原生页面很相似呢?这样你的页面 还会加载速度很慢吗?除非数据量很大,后期我们会讨论大数据的分页!!!
这样还会引来一个问题,我们如何与后台打交道啊,我可不想写 什么 ajax 和一般处理程序啊!!!!怎么办??
这个问题我们会在下期界面中去讲如何实现 js 直接与后台打交道!!!!
打造颠覆你想象中的高性能,轻量级的webform框架-----如何替换webform的垃圾控件(第一天)的更多相关文章
- 打造颠覆你想象中的高性能,轻量级的webform框架---js直接调后台的封装(第三天)
如果你没有看我第二天写的内容的,我想你是看不懂的!!!! 好了,废话不多说,怎么才能让我们的代码变得牛逼起来呢?怎么封装我们的代码呢?我们不可能 每个页面都需要那样写吧,那我们来一步一步来封装 我们的 ...
- 打造颠覆你想象中的高性能,轻量级的webform框架---无刷新提交后台并返回参数(第五天)
问题5: 使用aspx 页面执行后台方法,总是要刷新整个页面?我想提交后台不刷新页面,同时返回参数 执行前台的js 脚本,就是说类似于像 ajax 的效果一样,那我们该怎么做呢? 大家是否已经看了前 ...
- ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证
ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...
- 在网页中编辑报表的报表设计器Stimulsoft Reports Designer.Web报表控件
Stimulsoft Reports Designer.Web报表控件是一款网页报表设计器.您想在网页中编辑您的报表吗?现在是可能的! Stimulsoft Reports Designer.Web ...
- XAF 框架中,自定义参数动作(Action),输入参数的控件可定义,用于选择组织及项目
XAF 框架中,如何生成一个自定义参数动作(Action),输入参数的控件可定义? 参考文档:https://documentation.devexpress.com/eXpressAppFramew ...
- QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)
QT中获取选中的radioButton的两种方法 QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioBu ...
- PyQt学习随笔:Qt中tem Views(Model-Based)和Item Widgets(Item-Based)控件的用途和关系
在界面程序开发中,数据的展示主要包括表格.简单列表.树状列表以及纯文本等多种方式,在Qt中将界面表格.简单列表.树状列表称为"表项视图类(item view class)",并提供 ...
- .NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件
系列目录 [已更新最新开发文章,点击查看详细] 在我的博客<.NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件>中介绍了WinForm ...
- 将展示内容(div、iframe)放在Expand控件中
Expand是ArcGIS JavaScript API 4.3推出的一个widget(控件),用于承载一个HTML DOM元素,可以把一个自己编写的div或者是一个其他的Esri widget控件放 ...
随机推荐
- 给 asp.net core 写一个简单的健康检查
给 asp.net core 写一个简单的健康检查 Intro 健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是 docker 还是 k8s 还是现在大多数的服务注册发现大多都提供 ...
- CEPH安装教程(上)
环境拓扑 主机 配置 地址 运行服务 node CPU:1 内存:2GB 磁盘:vda(20GB) br-mgmt:92.0.0.250 br-ex:192.168.203.250/19 ntp an ...
- mysql 索引总结
一.MYSQL索引类型(共三种) 1).normal 正常 应用场景:普通的index 2).unique 唯一性的 应用场景:比如身份证的 3).full text 全文索引 应用场景:较长文字 二 ...
- flask-sqlalchemy中 backref lazy的参数实例解释和选择
官方文档:http://docs.sqlalchemy.org/en/rel_1_0/orm/basic_relationships.html#relationship-patterns 最近在学习到 ...
- Spring基本原理模拟(IoC部分)
package ioc; import java.io.File; import java.lang.reflect.Method; import java.util.Collections; imp ...
- cf811C(预处理&dp)
题目链接: http://codeforces.com/problemset/problem/811/C 题意: 给一个有n个人排队上车,去相同地方的人要么坐在同一个车厢,要不就不上车,问最大舒适度和 ...
- DNS 网关 路由 交换机 网桥 协议 服务器 这些都是什么关系?
来源:知乎 服务器:为你提供服务的机器.相当于马路边上的各种店面.虽然理论上任何一户人家都能开店为你提供服务,但是因为各种硬件资源限制而不适合开店.比如:小区道路比较窄(宽带带宽比较窄).家里地方太小 ...
- js中去掉字符中间空格和首尾空格
转载: https://www.jb51.net/article/109522.htm 1. 去掉字符串前后所有空格: 代码如下: ? 1 2 3 4 function Trim(str) { ...
- python模块之datetime方法详细介绍
datetime Python提供了许多内置模块用于操作时间日期,如calendar,time,datetime,这篇文章主要是对datetime进行汇总,datetime模块的借口实现原则更加直观, ...
- linux目录权限
linux中,有三种不同类型的用户可以对文件或目录进行访问:文件所有者,同组用户,其他用户.所有者一般是文件的创建者,文件所有者自动拥有对该文件的读.写和可执行权限.所有者能允许同组用户有权访问文件, ...