Register  |  Login

推荐系列:DNN Gallary,UDT, DotNetNuke Blog等(2008年第3期)

1) DNN Gallary ( http://dnngallery.net/ )
这是本月刚上线的一个DNN站点资源库, 主要收集和展示(也就是我们经常说的ShowCase)一些设计极为优秀的DNN站点, 你可以提交自己的网站或推荐其他网站, 只要你认为它足够优秀, 当然最终还得审核. 其概念类似于Best Web Gallary (http://bestwebgallery.com/) 和 ShowCase (http://www.dnnsun.com/Resources/ShowCase.aspx).
2) 再见了, 用户定义模块( UDT )
这是一个DNN核心模块, 缩写为UDT, 其主要功能为实现用户可以定制各种业务表单无需修改数据和程序,从而实现一定程度上的可复用性和灵活性. 目前发布了这一模块的最终版本UserDefinedTable (UDT) 3.5.1,同时也是下一代DNN 5.0之前的最终发布, DNN 5.0(代号"Cambrian")之后将被升级为下一代模块,与此同时名称也修改为"Forms and Lists" (简称为F+L) ,在此基础上将扩展和增加更多功能, 比如私有列, 邮件提示,元数据等等,把这一模块的真正威力发挥到极致.
http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryID/1895/Default.aspx
3) dotnetnuke blog荟萃站点 ( http://dotnetnukeblogs.com/ )
这是一个专门聚合DNN相关博客RSS内容的站点, 其目的则是方便DNN爱好者对信息的归类查看, 算是提供获取DNN信息的捷径. 同时, 该网站提供了类似上边提到的dnnGallary的理念, 那就是互动性, 你可以提交自己博客的RSS Feed或推荐其他优秀的RSS Feed, 当然最终也得被审核.
4) DNN模块代码自动生成框架 ( http://www.codeproject.com/KB/aspnet/ModuleFactory.aspx )
这是一个极为有趣的项目, 也许在你模块开发过程可以节省不少工作量, 有兴趣不妨看看.
5) 如果你忘记了DotnetNuke站点的host和admin密码… (http://www.k4ng.com/archives/244)
初学DNN难免出现束手束脚, 犯错误也是难免的, 比如误删皮肤,没有备份数据库就直接更新, 忘记管理员(admin)甚至Host(超级管理员)的密码等等, 对于这些灾难性的事件一般也有补救措施, 并非束手无策, 不过也许比较绕弯和费劲, 下边就推荐一篇文章讲述丢失密码到寻找密码的探索之旅, 作者算是海外人士, 蜗居澳洲的华人留学生, 这说明了DNN还是蛮有影响力的.
6) 临近DNN Open Force '08, 难免会有跟风之嫌, 我也不例外, 故在此分享一些DNN下一代版本"Cambrian"的资源, 算是聊解我对它望眼欲穿的期盼. (考虑到这一话题比较庞大, 可说的地方也很多, 资源也在不断更新中, 故已被单独出来作为一个专题, 敬请查看详情:Cambrian和 Open Force '08专题 )

站点更新日志-相册库模块

不知你是否注意到没, 本Blog已添加一个新成员, 那就是相册模块, 作为传播信息和承载交流的平台, Blog本身就该给与更多的手段或方式去把信息展示给读者, 并增加与读者的交互, 而所谓"一图胜千字"的理念也应该得于体现, 故此相册模块也就是应运而生了, 主要是利用目前很火的silverlight技术来搭建(后续文章将分享如何在DNN整合silverlight, 如何开发silverlight模块等等, 敬请关注), 同时现在也正值DNN Open Force '08即将隆重登场, 该相册将重点展示一些关于大会的照片和相关DNN的图片, 希望你们也可以分享一下自己看到的, 觉得很有看头的DNN图片(如果有的话), :)
目前该模块还在测试阶段, 图片将陆续更新....

DNN核心API简述

DotNetNuke本身可以看作是一个框架, 类比于.net  framework, 你可以在基础上扩展并实现各种功能, 而其中不可或缺的就是核心API, 它是你在开发过程中最有力的辅助工具, 而了解API最基本的步骤就是API组织起来的命名空间, 废话少说, 在此简单介绍一下DNN模块开发过程中最经常使用到的命名空间列表:
DotNetNuke.Common: 可被用于整个DNN应用程序的所有类, 比如其中的global实例就是荟萃了所有DNN全局的静态方法, 可被直接用于整个DNN应用程序, 而global就位于命名空间DotNetNuke.Common.Globals之下.
DotNetNuke.Data: DNN核心数据层, 可被用于扩展数据层, 比如我们最熟悉的DataProvider基类及其API就位于命名空间DotNetNuke.Data之下.
DotNetNuke.Entities: DNN核心实体类, 主要负责实例化和管理组成DNN Portal的核心实体, 其中包括Host, Portals, Tabs, Users, Profile, and Modules. 每一实体都独立分支并形成自己的二级命名空间, 比如负责管理模块的实体类位于DotNetNuke.Modules之下.
DotNetNuke.Framework: DNN框架类, 主要管理一些DNN框架的扩展辅助类, 比如DNN对Ajax的支持, 对CDefault的衍生等等.
DotNetNuke.Security: 主要用于DNN的授权及其验证. 其中包括了页面权限(tab permissions), 模块权限(module permissions), 文件夹(folder permissions), 角色管理(roles manage)等等.
DotNetNuke.Services: DNN核心服务, 比如异常处理, 本地化支持, 用户定制(personalization), 搜索引擎, 缓存优化, Mail分发等等.
DotNetNuke.UI: DNN核心UI, 比如DNN特有的Skin 和 Container就分别位于DotNetNuke.UI.Skins.Skin 和 DotNetNuke.UI.Containers.Container之下, 除此之外,还包含一下些UI设计扩展的辅助类DotNetNuke.UI.Utilities, 大名鼎鼎的ClientAPI就位于该命名空间.
相关链接:
DNN模块开发之利器篇:七种武器

如何在DNN创建类IGoogle效果的模块

借助Blog的一个扩展模块展示如何在DNN实现类IGoogle模块?算是抛砖引玉,为大家提供一种新的思路,感兴趣着不妨看看...

不一样的分页算法

分享一下最近研究分页算法的心得,也就是发现一个比较有意思的算法,也许不是最优的,也不是最好,当然也不推荐使用,但是在此列举一下以博各位一哂...

DNN Skin旅程之琐碎杂想

一直有人跟我提为何不做一些DNN皮肤教程什么的,本人甚为惭愧,当初曾夸下海口说没问题,可一拖再拖,倒不是自己没有时间,只是姑且不论自己设计能力的肤浅,光是那一系列教程制作就得花费不少心思,至少得简单易懂吧?至少得图文并茂吧?至少得符合CSS,W3C吧?我可不想随便拿出一样拷贝别人的皮肤来炫耀自己的水平。故折中的做法只能随时分享自己设计开发皮肤的一些经验或想法,希望能满足部分读者的口味。

拥抱PNG(如何在DNN应用PNG格式图象)

png demoPNG 是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图 形格式(Portable Network Graphic Format,PNG)这一名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可 存储多到16位的α通道数据.

在DNN中处理回车键事件

分享项目开发中的小技巧:如何处理回车键事件, 特别是在同一个页面可能同时存在多个通过回车键提交表单时执行特定的button按钮事件的情况下. 详情请查看原文...

推荐系列:Scheduler,Reset skin等(2008年第2期)

[1] DNN Scheduler Mechanism,翻译过来即为调度任务机制。
调度管理是DNN提供给开发者在一定的时间间隔实现调度任务的一种机制。利用你可以定制开发满足需求的调度任务,它也是在DNN典型模式(提供者模式)的基础上实现的,故可不更改核心代码就创建新的或修改原有的调度服务。关于如何使用DNN调度任务机制请查看我曾经在博客园的相关文章:
DNN调度管理解析(一)-----简单介绍及其API
DNN调度管理解析(二)-----自定义调度任务
DNN调度管理解析(三)-----如何运用DNN调度服务
相关链接:
How to Write a Custom DotNetNuke SchedulerClient (i.e. a Scheduled Task)
Programmatically Add, Delete, and Update Scheduled Tasks
[2] 重置皮肤
有时我们在配置皮肤时可能会出现一些莫名其妙的问题,比如找不到皮肤文件,或不小心删除皮肤文件夹可是还有某一页面仍然引用这一皮肤。这可能会使得DNN站点无法访问,当然修改管理皮肤也就无从谈起了.这时可通过以下类似URL重置皮肤,请注意参数SkinSrc之后的链接,我想你应该也猜到了,这就是DNN默认的皮肤dnn-blue!
http://localhost/dnnsun/Admin/Skins/tabid/49/Default.aspx?SkinSrc=[G]/skins/dnn-blue/Horizontal Menu - Fixed Width
[3] 如何创建一个符合XHTML标准的皮肤
应该承认DNN一直到现在的版本依然很难符合XHTML标准,但也无可否认它一直在往这个方向靠拢,不管是从模块开发还是皮肤设计都能看出这种努力的尝试。下边这篇文章就是列举了一些我们在设计符合XHTML标准的皮肤需要注意的原则或要点:
XHTML Skinning Uncovered
[4] 一种新的升级DNN的方式
说实在话,我也一直觉得DNN升级是一件很让人费心劳力的事情,需要考虑的东西太多,包括数据库的备份,SQL语句的执行,文件的备份等等,其中无法控制的就是web.config的修改,你需要明了其中配置的变化,不然你的站点也许无法正常运行,而可喜的就是自从DNN 4.6.2分布以来,DNN提供一些系列的方法让你可以在模块级别控制web.config的修改,包括增删改等操作,有兴趣者不妨看看这两篇文章,也许你从此找出答案来:
Core members feel the pain of upgrades too
XmlMerge - what is it?
[5] CodeSmith 开发模版下载
我只记得当初刚开始学习DNN的时候一直都在用CodeSmith 开发模版来生成代码,特别是在数据库表和业务逻辑层之间的代码生成的过程中特别有用,这可以节省很多的时间,后来才有了XX_StarterKit.vsi的出现,而现在由于DNN增加了IHydratable接口(关于IHydratable,不妨参看我之前的文章"王者归来—再谈CBO"),最初的CodeSmith 开发模版也许不再适用,这里提供最新的CodeSmith 开发模版下载,共享一下:
IHydratable CodeSmith
关于如何使用这一模块可参看这一文章:
Easily Create DAL for Your DNN Modules

读书杂感--开源与我

昨儿闲着无聊,看了看6月份的程序员杂志,发现有一个专题《开源在中国》, 主要介绍开源社区和开源软件在国内的一些发展历程,毋庸置疑,开源如今在国人的分量越来越重了。其间有些奇怪的是,似乎这些开源都是linux或java的专属权,我在所有文章中看不到任何关于Microsoft或衍生产品的开源的字眼,更别提我目前倾心的DNN框架了。不知这之间有啥不为人知的缘由,也许是Microsoft一直都在扮演霸主,“不开源”的典型代表吧,故此也就无从位列开源队伍了。:)
不管如何,至少我觉得有些文章写得还是不错的,我想开源精神都是一致的,DNN也是一种开源,尽管不为众人所知,故文章中提及的经验及其心得还是对我颇为裨益,故在此列举一些作为记录,也算是对自己倾心于DNN的鼓励和鞭策。同时在此有所呼吁,结交更多志同道合者(加盟dnnsun.com),希望DNN能够在国内真正的成为一个正规的开源社区,而不停留于本地化及其一些表面工作。
选择一个开源产品的标准:
1)目前的功能及其Roadmap
2)软件本身的架构
3)开发的活跃度及其社区的支持力度
4)该开源软件是否是遵守该领域的国际规范
5)与同类产品相比,可能存在移植的代价
我想补充的一点是: 6)可扩展性(这是DNN的优势)
开源之三重阶段(境界):
1)敞开心胸,拥抱开源( Open to Open Source)
2)深入开源,了解开源( Gig into Open Source)
3)融入开源,贡献开源( Get involved in Open Source )
对想做开源社区或参与开源项目的爱好者的三条建议:
1)要有激情,一定要热爱你做的项目。
2)要具备良好的语言能力,英语要达到一定的交流水平。(看来,这点并非独对DNN所特有, ^_^)
3)要真正理解开源运动的本质--共享精神,舍得把自己好的想法共享,放得下自己的名利,不能为了突出个人的贡献或个人在社区的地位就太突出自己。有些东西即使你能做,如果别人能做要尽量交给他人去做,这样才能形成一个团队,或者一种社区的精神--共享精神。(觉得这是DNN在中国最缺陷的)。
可从开源所获益的有:
1)阅读开源代码,有利于从理论到实践的平滑过渡。
评语:我想这像是对学生讲的,^_^ ,希望哪位读者如果还是在校学生的话,不妨在大学期间对代码实践有一定的重视。这不妨以我个人为例讲讲,本人对DNN的情缘也是从大学开始的,当时在一家公司实习,由于采用DNN作为底层框架,故而结识了DNN,而这一切来源于DNN当初很炫的“拖拽”功能。直至毕业前夕,论文的题目就毫不犹豫定位于DNN,尽管当初DNN资料相对缺陷,但是自己还是完美的搞定毕设,同时也有了dnnsun.com的诞生,而很让我觉得骄傲和自豪的是,答辩之间老师们看到我演示的站点竟然是一个在线站点,而且功能如此齐全,似乎有些“震撼”。
2) 阅读开源代码,与高手交流
评语: 的确,阅读高质量的代码,自己的代码风格,编程技巧和设计方法都在潜移默化得于提升,这在DNN模块开发中极为必要,因为核心代码或核心模块有很多地方可以借鉴。 这在我之前的文章曾累次提及到。
3)阅读开源代码,紧跟技术潮流。
使用开源的较高境界:(不大恰当的比喻:作者语)
开源项目多如牛毛,就像漫天的繁星,天空中有那么多美丽的星星,每一颗可能都是一个开源项目。我们在面对一个具体的需求,应该能像找到上帝的感觉,在信手挥洒之间,把这些星星组合成一个又一个不同的美丽星座。
评语: 有些赞同,具体到我个人,对开源该有些理想主义,特别是做一个非盈利的开源网站,就拿dnnsun.com来说,尽管我一直在撰写一些自己开发DNN的心得或文章,可却激不起多大的波澜,大家也没有什么交互的留言,这也许是国人的"习惯", 自不敢有所奢望。我更多还是一种自得其乐的心态,想做点事,踏踏实实做点事情,想到也许一些成果会对某个不知身在何处的DNN爱好者带来一些好处或帮助,我就心有所欣慰了。

解除DNN的传参枷锁

在上一篇文章中曾提及在DNN模块开发中传参的两种方式,其中包括ASP.NET中经典的URL传参方式,然而尽管如此,对于一些DNN初学者来说还是无从下手,这里我就简单解析其中道理及其如何在页面跳转,模块交互过程中最有效地传递参数,从而达到解除DNN之枷锁的功效。

剖析DNN架构-开篇之作

本Blog将新增一个栏目,暂时取名为"剖析DNN架构",名号似乎有些大了,但考虑到这也算是鞭策所写文章质量的一种手段,故最后暂且不做更改了。对于为何出现这一栏目,主要是一直以来跟一些DNN爱好者们的交流所促使的。曾有几位朋友所在公司想利用DNN这一开源平台或开发产品,或与现有系统整合,或优化框架以便满足需求等等,故他们都愿意招聘能真正担当起这一重担的“千里马”,想想这将要求所聘之人具备以下一些条件: 1) 熟悉DNN核心架构和框架脉络。 2) 有一定的架构经验,懂得设计模式相关知识。 3) 精通DNN模块开发流程及其皮肤机制。 等等,“DNN架构师”也就从此诞生了,当时我听到他们的招聘要求之后,唯一的想法是在国内,此等“千里马”实在是凤毛麟角,恐怕他们只能望梅止渴了。因为想想国内研究DNN的氛围,人气之淡,交流之稀,凭何能促进DNN这一开源平台的兴盛呢? 对于DNN入门的门槛,就我个人的观点还是蛮高的,当然你想借助DNN搭建一个网站倒是及其容易的,也就是1-3分钟即可,而目前DNN模块及其皮肤资源还是蛮多的(其中包括免费或商业的),只要你合理利用还是可以满足大部分需求的。但如果你想定制业务或布局修改的话,那就必须得了解一些编程技巧或HTML,CSS布局原理等。对于非专业人员,恐怕是力所不及的。而对于刚入门的开发人员,你需要了解的更多,其中包括DNN基本架构,模块开发流程,API调用等等,想真正开发一个高级模块,也不是一蹴而就的。最不幸的是,由于国内相关资源的欠缺,一些刚入门者屡屡碰壁也就不足为怪了,在此我还是鼓励大家,如果你想真正好DNN,那么请你耐着性子看看英文资料吧,其中包括DNN官方的第一手资料。相反,可喜的是如今大家已经逐渐看好DNN,各方面应用不断涌现,比如电子商务,游戏站点,社区论坛,ERP整合,电子政务等等,可以这么说,DNN应用在国内这一潜在市场正在形成中,群雄逐鹿,看看你是否可以在此市场中分得一杯可观的羮。 最后,再聊点本人认识的DNN,DNN可算是.net下最大的开源平台,其优势是显而易见的,其地位也是举足轻重的,DNN可谓为Microsoft也作出了相当大的贡献,想想DNN本身是VB.Net开发的,这也可以理解为留住VB开发人员的一个诱饵吧,更深的一层就是由DNN带动的.net项目不在少数,曾有官方数据对此进行佐证,可惜我没有记得链接,似乎是DNN OpenForce '07大会 ...

About the author
Baldwin's Status
 Contact Me
Baldwin Sun
Senior Developer for dnn solution & founder of SunBlog module...
网站主页
dnnsun
最新评论
  1. Re: "暴力"解决DNN无法登陆的问题

    你好 有个问题 我改了登录界面后能登录 但是一点注册 就跳到了HOME页 这个怎么解决

    --zl24622

  2. Re: 你的dnn站点慢了么?

    需要你把旁边的checkbox勾选上再执行 :)

    --Baldwin

  3. Re: 你的dnn站点慢了么?

    为什么,我将你的代码copy到host>sql中去执行之后,报错呢,语句是不是有问题哦?

    --claire

  4. Re: 剖析DNN架构-开篇之作

    很好

    --vling83

  5. Re: SunBlog更新:增加3D Tag Clouds插件

    在以上评论已说明, SunBlog已经是一个成熟的商业模块,如果需要授权或下载请邮件联系我们, 感谢你的关注, 我们即将推出一个demo的站点(这周之内).

    --Baldwin

  6. Re: SunBlog更新:增加3D Tag Clouds插件

    这个没地方下载的吗,要怎么才能下载到,谢谢

    --Sun key

  7. Re: SunBlog更新:增加3D Tag Clouds插件

    已经电邮您了,请注意查收

    --sunny0315

  8. Re: 如何添加DNN模块的自定义权限

    你只要设置好该节点即可, 比如:DnnSun.SunBlogNuke.Business.InterfaceController, DnnSun.Modules.SunBlogNuke 其他的请再详细看看本文,我觉得说得蛮清楚的 :)

    --Baldwin

Blog搜索
Rss Feed
feedsky
抓虾
pageflakes
newsgator
哪吒
相册库
更多照片请查看相册库
我们的服务
  • DotNetNuke 咨询
  • Web设计及其模块开发
  • 免费建站
  • 电子商务
  • 开拓市场
我们致力于开发定制的web 2.0 ,所服务的客户主要包括小中型企业,社区俱乐部及其非盈利机构组织。我们将利用开源的DNN作为我们核心的系统机制,更多相关信息...
版权声明
本站任何言论仅代表个人观点,与作者所在的公司没有任何关系,所有贴子皆以“现状”提供且没有任何担保,同时也没有授予任何权利。