前文描述:

随着.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的垃圾控件(第一天)的更多相关文章

  1. 打造颠覆你想象中的高性能,轻量级的webform框架---js直接调后台的封装(第三天)

    如果你没有看我第二天写的内容的,我想你是看不懂的!!!! 好了,废话不多说,怎么才能让我们的代码变得牛逼起来呢?怎么封装我们的代码呢?我们不可能 每个页面都需要那样写吧,那我们来一步一步来封装 我们的 ...

  2. 打造颠覆你想象中的高性能,轻量级的webform框架---无刷新提交后台并返回参数(第五天)

    问题5:  使用aspx 页面执行后台方法,总是要刷新整个页面?我想提交后台不刷新页面,同时返回参数 执行前台的js 脚本,就是说类似于像 ajax 的效果一样,那我们该怎么做呢? 大家是否已经看了前 ...

  3. ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证

    ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...

  4. 在网页中编辑报表的报表设计器Stimulsoft Reports Designer.Web报表控件

    Stimulsoft Reports Designer.Web报表控件是一款网页报表设计器.您想在网页中编辑您的报表吗?现在是可能的! Stimulsoft Reports Designer.Web ...

  5. XAF 框架中,自定义参数动作(Action),输入参数的控件可定义,用于选择组织及项目

    XAF 框架中,如何生成一个自定义参数动作(Action),输入参数的控件可定义? 参考文档:https://documentation.devexpress.com/eXpressAppFramew ...

  6. QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)

    QT中获取选中的radioButton的两种方法   QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioBu ...

  7. PyQt学习随笔:Qt中tem Views(Model-Based)和Item Widgets(Item-Based)控件的用途和关系

    在界面程序开发中,数据的展示主要包括表格.简单列表.树状列表以及纯文本等多种方式,在Qt中将界面表格.简单列表.树状列表称为"表项视图类(item view class)",并提供 ...

  8. .NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件

    系列目录     [已更新最新开发文章,点击查看详细] 在我的博客<.NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件>中介绍了WinForm ...

  9. 将展示内容(div、iframe)放在Expand控件中

    Expand是ArcGIS JavaScript API 4.3推出的一个widget(控件),用于承载一个HTML DOM元素,可以把一个自己编写的div或者是一个其他的Esri widget控件放 ...

随机推荐

  1. SAS笔记(5) FLAG和计数器

    考虑这样一种场景:我们有一份患者入院检查的数据,我们知道一个患者有可能会多次去医院做检查,每次检查的结果可能为阳性,也可能为阴性.我们现在关注的是某一个患者在若干次检查中是否出现了阳性结果,在R中我们 ...

  2. CF70D Professor's task(动态凸包)

    题面 两种操作: 1 往点集S中添加一个点(x,y); 2 询问(x,y)是否在点集S的凸包中. 数据保证至少有一个2操作, 保证刚开始会给出三个1操作, 且这三个操作中的点不共线. 题解 动态凸包板 ...

  3. tomcat与jetty接收请求参数的区别

    [场景] 服务端点对点通知.A服务发起请求B服务,B同步返回接收成功:然后B开始处理逻辑:B处理完成后异步通知给A:A接收请求并处理,同步回写响应给B:完成. [先上代码] 服务端(接收端)代码: i ...

  4. Window安装配置Redis

    一.下载windows版本的Redis github下载地址:https://github.com/MSOpenTech/redis/tags 二.安装启动Redis Redis 支持 32 位和 6 ...

  5. SQL 日期函数转换

    1.转换函数 与date操作关系最大的就是两个转换函数:to_date(),to_char() to_date() 作用将字符类型按一定格式转化为日期类型: 具体用法:to_date('2004-11 ...

  6. Docker从入门到实战(三)

    Docker从入门到实战(三) 一:安装Docker 1. linux系统脚本安装 Docker基于linux容器技术,面向服务器端,Docker只能安装运行在64位计算机上(社区有对32位的支持), ...

  7. 为什么要问Servlet的初始化时间

    Servlet的init方法到底是在什么时候调用的? j2ee specification和java doc中有以下说明 如果load-on-startup设置为>=0, 部署的时候就会调用.  ...

  8. 两个线程分别打印 1- 100,A 打印偶数, B打印奇数

    package com.demo.thread; public class PrintNumber { private static Object lock = new Object(); priva ...

  9. Seven-segment Display 贪心选择,快速判断能否有解

    https://csacademy.com/contest/round-39/task/seven-segment-display/ 可以知道,只有1是无解 而且肯定是选出来的位数约小越好. 位数 = ...

  10. 解决Spring JdbcTemplate调用queryForObject()方法结果集为空时报异常

    JdbcTemplate用的时候发现一个问题:调用queryForObject()方法,如果没有查到东西则会抛一个异常:org.springframework.dao.EmptyResultDataA ...