我们在网上也可以看到很多关于高性能分页的方法,就是所谓的,Grid上显示时,只读取相应页的数据,每次分页提交,重新读取从第n条开始的共m条记录来提高访问的性能。
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】