请讨论一下高性能分页的必要性!

请讨论一下高性能分页的必要性!

 我们在网上也可以看到很多关于高性能分页的方法,就是所谓的,Grid上显示时,只读取相应页的数据,每次分页提交,重新读取从第n条开始的共m条记录来提高访问的性能。
 这种方法可以减少Client与Server之间的传递数据,可以从一定意义上提高页面速度,但实现起来都是会比较麻烦一点:
 1)页面上的Grid不能直接使用绑定功能,需要先访问数据库读取Count(*)条数,然后对Grid进行页数计算。
 2)无法使用Grid自带的分页功能,不管是MS的还是第三方的,都要求手写分页代码
 3)在界面上提供“显示每页n条”的功能的话,客户修改此N值时,系统就要重新统计Count等。

 在网上有个专门的存储过程,用于返回第N到M的记录,里面使用的是两次TOP方法,不知道这样的语句,速度怎么样?

而我的个有观点:
 采用黙认的方式,虽然系统一次载入数据会多一点,但目前的硬件设备发展很快,可以弥补一部分,而且在界面上,可以充分使用Grid的功能,开发相当方便。
 而且系统其实没有那个必要返回所谓的几万条,这样的记录数进行分页,首先是个不太现实的,估计很少有人会翻上几千页吧。因此,我感觉,对于客户来说,大数据量的返回,本身是没有多大意义的,而应该从前N条来考虑,就算是大数据量,我们也没有必要返回那么多,只要前N条就够受的了,如果实在要显示多的话,也可以使用分批载入的功能,比如先载入n条,客户发现数据太少,进行再载入n条。对于数据量很大的,应该建议客户进行数据查询,以减少数据量的返回。
 因此,在我的思想中,我一直是觉得,在Web上本身就没有必要显示大数据量的必要性,而且我还非常不建议进行分页显示,分页显示有时是非常不方便的。比如要进行一些数据的统计等。应该提倡组合查询与前N条的分批载入。
 如果只是几百条,我还是提倡不分页,让客户在页面上能看到所有的,要比一页页往下翻方便多了。

因此,我一直在思考,到底是否应该使用高性能分页??有这样的必要吗?我担心为了追求不是那么必要的性能,而放弃的更多。
希望大家讨论讨论。我也是忧郁不定啊。
补:思考的原因是想:要不要在SPL中添加这样的数据段返回功能??有没有必要性?

2005-03-04 16:25 作者: 听棠.NET 【评论:23】【阅读: 345】

实现类型化的数据绑定(列表)控件

    内容篇幅较长,请点击这里阅读全文

2005-01-18 15:55 作者: 春鱼 【评论:1】【阅读: 741】

DNN(DotNetNuke)研究手札系列5之DNN的未来(蓝图)

第一章介绍了DNN的前世,第二、三、四章简单介绍了DNN的今生,这章是作为国庆献礼,为大家带来最激动人心的DNN未来(蓝图),看看DNN到底会成为什么样的门户!

DNN官方称蓝图有3个阶段(Stage):

第一种是Build(编译),也就是当前正在研发的阶段,基本上功能都完成了,可能在进行一些不同的完善而已。

第二种是Design(设计),在这个阶段,所有想法都被彻底讨论、定案,每个任务都有负责人进行,耗时比较长。

第三种是Concept(想法),实际上是在社区论坛中,各位会员提出的功能增强要求,一般估计是猴年马月才进入设计阶段的,还或许以后都不会实现。

目前处于Build阶段的,主要有:
1、Friendly URLs(友好链接),这个在之前的章节介绍过了,大家自行参看;
2、Localization ( Static ) (本地化-静态),实际上只把传统的HTML的文本转成ASP:Label而已;
3、Portal Search(门户搜索),同1

目前处于Design阶段的,主要有:
1、Data Model(数据模型),改进DNN前身IBS的数据库设计的约束;
2、Document Security(文档安全),基于角色的上传文件管理。应用IIS的文件安全.resources扩展保护机制,因此不需要额外的数据库或者本应用目录以外的目录以减低其限制;
3、File Manager(文件管理器),实际上这个已经提前到2.2x实现,应该归于Build阶段,看来DNN的网站更新速度太慢了。这个全新的文件管理器将以类似Windows资源管理器的树+列表界面和风格来实现对文件的多层目录和角色管理:在原来只能上传和删除的基础上,文件将可以复制、移动、更名,更可以创建任意层目录来保存之。
4、Portal Module Definitions(门户模块定义),到目前为止,门户和模块之间的关联是通过PortalModuleDefinitions表来实现,而具体操作是必须使用用Host Fee来在不同的子门户间共享。现在要进行改造,让Host Fee作为可选;
5、SSL(安全套接字层),是的,门户实现SSL相当有必要;
6、Weblog Module(博客),看来博客实在是大热,连官方都要做自己的博客模块。看看啥时候自己也做了Wiki(维客):)
7、Windows Authentication(Windows身份认证),整合Windows的安全机制,包括域等;

目前处于Concept阶段的,主要有:
1、Authentication(增强型身份认证),看来网络太不安全,啥安全法子都想出来要实现安全的门户;
2、Browser/Device Support(对浏览器/设备的支持),(待续)
3、Core Modularization(核心模块化),(待续)
4、Localization ( Content )(本地化-内容),(待续)
5、Navigation Abstraction(浏览抽象化),(待续)
6、Portal Groups(门户组),(待续)
7、SDK Version(增进对其它非VS.NET环境的支持)?(待续)
8、Web Farm Support(增进对Web Farm的支持)?(待续)
9、WebPart Integration(Web部件整合),(待续)

2004-10-03 13:32 作者: 灵感之源:PSP团队Guru 【评论:4】【阅读: 785】

DNN(DotNetNuke)研究手札系列4-框架(硬伤) 1

对,这章我就要介绍我所理解的DNN存在的硬伤,大家看完了别骂我,更别伤心,因为我在实际开发的过程中提供解决方案。:)

我最近2个多月都在研发某系统,该系统是以DNN为原型。我在花了接近2个月的研究中,总结出:DNN存在几处硬伤。实际上,与其说硬伤,到不如说其目前的发展空间更好:)

虽然参考选型为DNN,不过我们仅仅是参考,出于独立发展和实际需求的考虑,我们并不“抄袭”DNN,仅仅是学习了其最大的特色:Skin技术,而且我们觉得其Skin技术已经相当成熟,因此我们用我们的实现方法,却兼容其Skin/Container格式,毕竟仅仅是XML/HTML的解释。

DNN最大的硬伤:过分松散。这个松散不是指其每个模块想积木那样可以自有放在任何栏目(Tabs)和任何位置,而是指其内容。

举个例子:发表公告。我们一般会一段时间就会发布一篇公告,而这个在DNN的实现似乎就只能:1、修改某公告模块实例的内容;2、隐藏该模块,新建一模块;3、直接删除该模块,新建一模块。

或许这个例子不明显,换一个:文章。文章应该是最常用的功能了,因为大部分内容都可以以文章的形式出现,包括公告、技术文档、新闻、FAQ等等。在DNN中,我们会怎样做了?似乎就只有每篇文章新建一个文章模块实例了,如果不希望显示出来呢(如过时等)?似乎就只能:1、隐藏;2、直接删除。如果使用方法1,隐藏多了,页面就很杂乱;如果使用方法2,假如哪天我想找出来看看呢?如果有深入一点研究的朋友,会提出使用隐藏栏目专门来“收留”这些“孤儿”,但数量一多仍然会杂乱啊!

还有,如果你想对所有同类型的模块进行检索和操作,怎么办?相信你会在各个栏目之间来回切换去寻找。

类似的,其它模块也一样。DNN内置的模块,都仅仅是演示其功能而已,因为它的目标是做一框架,不是做功能内容。实际上,你是否能想到怎样解决?我能想到的,是做集中的列表管理。列表管理的好处就是,随时对任何文章进行操作,不必在栏目之间来回切换,一目了然。

就这样?不,让我们更进一步吧:做个通用的文档管理系统!其实无论是公告、技术文档、新闻、FAQ等等,一般都包括:作者、出处、创建年月日、正文内容、简介、页面打开类型(如本页面、新开页面等)、状态(如未审批、已审批、隐藏等)、图标等。

就这样?不,让我们来再深入点吧:把类型管理都加上去!类型可以广泛地用在任意层子栏目、文章类型等等。这样,文章编辑的时候就可以选择所属类别,更加容易分类管理。

就这样?不,让我们来个彻底的革命吧:集合类型和通用文章,来整合出多个通用模块。如:
1、某类最新文章列表:你只需要把所有层次类型列出来,让用户定义哪个类型和要类多少个,按日期排序就行了。这样,一旦选择了某类型,该类型所属的Top N文章都列出来了。灵活吗?

2、最热文章推荐:这个更简单,选择某类型、然后选择某类型下的某篇文章、定义一个个性化图片,就这样。然后在具体的显示时候,左边弄个图标,右边就显示粗体标题和简介。灵活吗?

3、主题新闻:这个最简单了,跟上2是差不多的,唯一区别就是直接把该内容显示出来,效果就是类似微软首页的最大的那个Flash/Image效果了,点击就可以进入具体的栏目或者文章。还不够灵活?好吧,看下一篇吧:(

大家注意到好处了吗?无论模块有多少个,都只需要定义一次文章,任何文章都可以重现在任何模块,不必重复定义,也不用担心某个模块删除了,文章丢了。

鉴于DNN的可发展空间很大,现在只介绍第一个,接下来会有更加有趣的:)

2004-09-23 21:42 作者: 灵感之源:PSP团队Guru 【评论:10】【阅读: 871】

DNN(DotNetNuke)研究手札系列3-框架(概述)

从这章开始介绍DNN的框架,DNN的框架可以从以下角度分:
1、目录,中国Rainbow已经对各目录和各文件的用途写了比较详细了,我不再重复,我只从主要框架上说:
  a.管理(Admin):
   a1.容器(Container)
   a2.文件(File)
   a3.模块定义(ModuleDefinitions)
   a4.私用程序集上传(PAUpload)
   a5.门户(Portal)
   a6.外观/皮肤(Skin)
   a7.栏目/标签(Tabs)
   a8.用户(Users)
  b.功能组件(Components)
   b1.容错(Exceptions)
   b2.日志(Logging)
   b3.日程(Scheduling)
  c.UI控件:
   c1.HTML编辑器(FTB)
   c2.菜单(SolpartMenu)
  d.桌面模块(DesktopModules)

 从中可以看出,DNN的目录框架相当紧凑,你在根目录只能看见几个文件,而管理目录是整个门户的核心,功能组件是骨架,UI控件是核心应用,桌面模块是具体业务应用。

2、按核心功能,DNN可以分成以下几块:
  a、外观/皮肤(Skin),包括Skins、Tabs、Modules、ModuleDefinitions、Containers等;
  b、管理,包括Portal、Users、Log、Logging、Schedule、PAUpload、Security、Files等;
  由此看出,Skin的地位在DNN中是最核心的。

DNN的应用了颇多的.NET技术,如大量继承、重载、代理等,实现了如抽象的数据访问(DataProvider)、数据缓存(DataCache)、多线程日程(Scheduling)、错误处理(Exceptions)、空类型(Null)等功能,我稍后将逐一为大家深入介绍各种技术的特点、实现和应用。

2004-09-04 13:32 作者: 灵感之源:PSP团队Guru 【评论:18】【阅读: 1659】

DNN(DotNetNuke)研究手札系列2-背景、现状

首先,请不要忙着看这篇文章,尝试去官方网站下载一个最新版本的来安装看看,仔细看看安装说明文档、各种技术的白皮书,DNN做得很全很仔细,连版本代码差异都精细到每行代码。

为什么不去仔细研究呢?


DNN到底是啥来头?DNN可以追溯到ASP.NET Starter Kits的ASP.NET Portal,这个东西仍然可以在asp.net网站中找到。相关的文章我之前也写过,请自行搜索。ASP.NET Portal之后,出现了IBuySpy,也就是大家熟悉的IBS,这个比ASP.NET Portal进化了不少,使用了大量的.NET技术,也就是DNN的雏形。2002年,IBS給市场印证了其局限性不能满足用户需求,DNN1.x推出了,它在IBS的基础上主要改善了模块功能,接下来的DNN2.0.x更是把整个内核重写,带来了革命性的Skin。


DNN在外国到底有么受欢迎?
1、DotNetNuke:http://www.dotnetnuke.com/官方站点每天的注册/访问量,大家可以看看其首页右边的在线统计;
2、DNN论坛http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&ForumID=90是比较热的,相对ASP.NET网站上的其它论坛来说;
3、DNN在众多免费/收费Portal中应用甚广;
4、DNN2.0.x发布的时候,在微软VS-Live! Conference中演示过,呵呵;

在研究的2个多月中,我感觉,与其等待别人来喂自己,到不如自己去觅食,或许这样比喻不贴切,意思就是说,动手去研究,比等待别人来教自己来得实际。

DNN倡导的是一种准备就绪、动态的、100%互动的数据驱动网络门户框架。

DNN最大的特点是系统框架、DSL(数据存储层)、DAL(数据访问层)、BLL(业务逻辑层)、PL(呈现层)完全分离。系统开发人员、业务开发人员、美工和DBA(数据库管理员)都是“互不相干”的。

为了和.NET 2005尽量兼容,DNN应用了大量的所谓Provider(提供者)/Factory(工厂)模式来实现了其广泛的扩展性,可能你会觉得要仅仅实现一个数据的更新,要在3个类中实现,但当你要在MS SQL、ACCESS、MySQL、Oracle或XML之间自由切换,那么,你将会发现DNN这种模式是会令你愉快的。

DNN的另外一个特性是其Skin(外观),它实现了从Portal(门户)、Tab(栏目)到Module(模块)各个层次的动态外观,每个Skin分Skin和Container(容器),Container可以理解成DNN的模块区域,每个模块都包括在一个Container中。DNN的Skin和动态Module是密不可分的。DNN的Tab和Module定义已经到达了WYSIWYG这个层次了,不过我认为它不能做到集中处理。

DNN的每个Module都可以理解成一个积木,你可以随时把这个积木放到任何栏目的任何位置,你甚至可以隐藏它。不过DNN对每个Module的数据处理都没有做到集中,Module删除了,并不对自动删除对应的数据,时间一长就产生大量冗余数据。而且没有集中处理,非常不直观。

以上缺陷我都在实际应用中改善了。

如果你仅仅认为DNN的Skin仅仅是改变一下CSS和换一下图片,如果认为.Text可以和DNN比较,那么,你都错了。随着深入DNN的内核,绝对让你改观。

DNN接下来将会在10月份推出2.2x,改进包括:
1、门户搜索;
2、友好URL,路径不再显示/default.aspx?tabid=xx,而可能是/portal/0/tab/11/page/;
3、多语言;


在章3中,我会肢解DNN,按功能給大家介绍其框架。

2004-09-01 20:17 作者: 灵感之源:PSP团队Guru 【评论:24】【阅读: 1280】

DNN(DotNetNuke)研究手札系列1-资源

在过去的2个多月中,我的工作就是研究门户,参考模型有很多,DotNetNuke(以后简称DNN)是其中之一。关于DNN,或许大家对它或多或少有所认识。我所认识的DNN,一言蔽之:一流的门户框架。

今天先介绍一些比较好的相关资源,我也是从这些资源的挖掘中入门的:

1、DotNetNuke:http://www.dotnetnuke.com/
2、DNN入门经典,这里已经说得很好,虽然是英文的:http://www.devx.com/codemag/Article/21572/1954?pf=true
3、DNN文档:http://www.dotnetdoc.com/Default.aspx?tabid=29
4、论坛:http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&ForumID=90
5、DNNGuide:http://www.dnnguide.com/
6、DNN Related:http://netdatadesign.com/Default.aspx?tabid=42
7、dnnJungle:http://dnnjungle.vmasanas.net/
8、DNN Resource Portal:http://dnn.johndcooper.com/
9、KodHedZ Development and Support Network:http://www.kodhedz.com/ 
10、MagicModules:http://www.magicmodules.com/Default.aspx?tabid=1 
11、dnn.com.au:http://www.dnn.com.au/Default.aspx?tabid=1 
12、C#版DNN:http://www.csharpnuke.com/ 
13、DNN帮助:http://www.dotnetnukehelp.com/ 
14、DNN Nuked http://www.dotnetnuked.com/DesktopDefault.aspx 
15、http://www.schmidtsoftware.com/DotNetNuke/ 


章2:我将会为大家介绍DNN的背景、现状。
章3:我将会为大家介绍DNN的技术框架。
章4:我将会为大家全面深入剖析DNN的技术细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值