DotNetNuke疑惑

类似一种准入限制,最近客户提出了近一段时间内的开发框架:使用DNN和Atlas。我除了郁闷,无话可说。我只能在两者中作出选择:一是可以拂袖而去,从而放弃我对我所服务的公司的一贯承诺;一是可以委曲求全,继续在郁闷中承认眼前商业社会的现实。
对于Atlas我一直备加关注,就象当年一直备加关注Orcas一样。但“Atlas”还只是一个代号,我无法想象将一个还在代号状态的东西用在项目中。而对于DNN我却是相当的抵触。虽然从IBuySpy时代就有所接触,了解其中的一些表面的东西,但一直对这个东西没有什么兴趣。看到中国DNN网站自诩为“几近完美的内容管理系统”,我满身的鸡皮疙瘩。虽然我也会比较在意Microsoft的认可,但是我决不会故作媚态。
用户就是上帝,就是商业利益,我暂时还无法回避。近日花了些时间研究,未曾想,越是研究,疑惑越多。
疑惑一:为什么没有C#开发者研究DNN?
虽然.net是没有语言壁垒的,但是DNN有,因为DNN提供的网站模板还只有VisualBasic。其实将DNN全面移植到C#并且提供C#的网站模板并不是一件难事。但是的确没有听说有人在做,就是说我还没有看到C#开发者来花时间研究DNN。那么,DNN就成为一个VisualBasic者建立的一个自娱自乐的天地了。
疑惑二:DNN的设计及代码质量是否可取?
大略看了一下DNN的代码,觉得作为《.net设计规范》的反面教程是再合适不过了。所以我估计.net的设计者们并不会看好DNN,因此Microsoft不太可能通过某种方式收编DNN。我随便举出几点:(1)DNN的接口设计不够完美,很多功能是通过单一接口来完成而不是通过多个接口的协作来完成。这是典型的“冒面向对象之名行结构化编程之实”的表现。因为这种设计无法按需要实现不同层次的多态。(2)DNN接口过于雍肿,例如DataProvider类一共提供了225个public的抽象方法供派生类实现。这种方式真是令人惊奇!可想而知,随着DNN功能的不断升级,这些接口也必须通过不断地增加方法来随之升级。这种设计的草率贯穿DNN的整个框架之中。
疑惑三:DNN为什么不签名?
DNN和Microsoft企业库一样没有提供签名,这样会引发一系列问题。虽然用户加上自己的签名是不困难的。但是10000个DNN的使用者不得不重复10000次这样的过程。
最讨厌中国DNN网站和DNN官方网站将Taiwan列为一个国家。还好新版本的DNN中的CountryListBox将“台湾”列为“Taiwan, Province of China”,要不然我会严重抗议了。

posted on 2006-10-04 12:31 双鱼座 阅读(3248) 评论(19)  编辑 收藏

评论

#1楼  2006-10-04 12:51 嘻哈呵嘿      

我也是一样。最近公司有些国外单子也是使用DNN的,让我也很郁闷。一直很怀疑DNN的架构和他的效率。。但又不得不使用。汗一个。   回复  引用  查看    

#2楼  2006-10-04 14:53 ZergTant      

赞同你的意见不过c#的我倒觉得没什么,那种语言的差别好像不大吧,关键是编写人的水平,vb一样可以写出效率高的程序,dnn的商业化太重了,虽然框架是免费的但好用的插件都收费,所以如果用它制作一个不大的站点,一些基本功能插件都是要钱的,我想主要是这个导致的普及率比较低吧   回复  引用  查看    

#3楼  2006-10-04 19:35 呆在呆呆的家      

同感!!!一方面是效率,另外一方面是模块与模块之间,不能很好地串起来。一堆server control的动态布局,呵呵,速度太慢,没有前途。不过,对于小公司的企业门户,很合适!!!我自己也拿来玩:http://soft.glassoo.com,就是用的DNN.一个字:慢;两个字:很慢;三个字:非常慢
我看好:castle+monorail。不过好像现在研究的人太少了,我对BS又不懂,郁闷中   回复  引用  查看    

#4楼  2006-10-04 21:16 Zhongkeruanjian      

它自然有他的独到之处,虽然效率低,但还是灵活多变的,很适合企业的门户。特别是国外的硬件与网络环境是国内无法比拟的。

关于《.net设计规范》,它是针对框架的设计规范。不必在所有的程序都得遵守。比如,因为框架的使用广泛,规范里就规定”不使用接口而使用抽象类“以便框架扩展。

我想这条原则在普通的项目里可能是毒药了。哈


  回复  引用  查看    

#5楼  2006-10-04 21:59 AlphaWu      

比较同意楼主。
我一开始关注PHP,觉得XOOPS是个很好的CMS系统,后来准备迁移到.Net平台,试图找一个类似的CMS系统,搜索到了DNN,可是一直没喜欢上它,从开始安装好的界面就不喜欢,DNN是OPENSOURCE的,可是很多优秀的模块却收费,虽然DNN提供的模版很多,可是看起来还是不是太舒服。
于是我继续寻找,结果找到了CS(CommunityServer),一安装上就喜欢上他了,虽然不是全部开源,但是关键模块(Forum,Blogs,Gallary)是开源的,虽然提供的模版不是很多,可是都比较不错,特别是Blogs模版。
Http://www.xuevb.net,我一开始采用的xoops系统。
Http://xuevb.net,CS架设的。
  回复  引用  查看    

#6楼  2006-10-04 22:00 深瞳      

我也很烦DNN的龟速,不过好象它是有C#版的。   回复  引用  查看    

#7楼  2006-10-04 23:49 kiler      

DNN和CS之类的东西最多也就是给个人玩玩,想用来做项目,一点也不现实。   回复  引用  查看    

#8楼  2006-10-05 01:05 嘻哈呵嘿      

CS也不怎么样,严重怀疑效率。。   回复  引用  查看    

#9楼  2006-10-05 11:21 Vincent Yang      

# re: DotNetNuke疑惑 2006-10-04 22:00 深瞳
我也很烦DNN的龟速,不过好象它是有C#版的。 回复


怀疑你是否用过DNN, 什么时候出来过C#版了?   回复  引用  查看    

#10楼  2006-10-05 12:10 kiler      

@Vincent Yang
DNN确实有c#版,不过是其他人做的,sf上面有一个开源项目叫sharpnuke就是把dnn的代码转成c#,好像是dnn2。1版的   回复  引用  查看    

#11楼  2006-10-05 23:35 木野狐      

因为 DNN 的 C# 版是别人做的,所以跟不上核心团队开发的的版本发展。不看好。

曾经好几次尝试研究一下 DNN, 但是因为 VB 代码的原因,以及某些代码风格的确不怎么样,放弃了。   回复  引用  查看    

#12楼  2006-10-06 00:55 Seraph      

其实没什么疑惑的。Free的东西,特别是M$下面的,都一个德行。

CS,DNN在内都如此。

他们做的还是有可取的地方,利用部分模块,利用部分框架,构建自己的东西才是要招   回复  引用  查看    

#13楼  2006-10-08 09:45 xjb      

Rainbow (http://www.rainbowportal.net/site/3326/download.aspx">http://www.rainbowportal.net/site/3326/download.aspx)是c#的,和dnn是同宗的.
我安装过dnn确实比较麻烦,运行起来也不快
  回复  引用  查看    

#14楼  2006-10-11 01:04 杨发达      

我觉得dnn 是一个很好的框架, 当然还不是完美的.
你说的问题却是确实存在, 但是 dnn 的好处不是更多吗( 我不是怀疑我们自己开发的framework差)? 但是上万人在一个平台下开发,互相借鉴不是更好吗?

在2.0 没有出来前, 没有webpart/master page 之前, dnn 的思路是相当好的.

语言绝对不是问题,就像你说的.

[虽然.net是没有语言壁垒的,但是DNN有,因为DNN提供的网站模板还只有VisualBasic。 ]
这个问题是很小的问题. 如果你们同事有很熟悉dnn架构的人, 你应该就没有这个问题了.


我还是同意 Seraph 的意见, 如果实在不爽, 可以借鉴思路,自己开发. 系统是死的,人是活的.哈哈.




  回复  引用  查看    

#15楼 [楼主] 2006-10-11 15:21 双鱼座      

非常感谢大家的关注!

@Zhongkeruanjian
还望赐教dnn的独到之处在哪里?
关于《.net设计规范》,我觉得对于dnn这样的框架应该完全遵守,毕竟dnn本身就是框架,与你说的“所有的程序”不是一个概念。事实上,我觉得即使所有的程序都符合《.net设计规范》也不至于会产生坏的效果。

@杨发达
“但是 dnn 的好处不是更多吗”
这仅仅是你的看法而已,并不是事实。
从设计的角度看,不管是webpart/master page 之前还是webpart/master page 之后,dnn的设计都是糟糕的。我觉得它的设计可能比较适合从VB6这样的基于对象开发环境过来的人员的某种思路,与面向对象思路是完全脱节的。
我可以再举一个例子:在dnn的底层框架中,几乎每一个接口都是返回IDataReader接口,事实上IDataReader并不是一个工具接口,而是System.Data的接口。如果直接引用ADO.NET模块,当然使用IDataReader是最方便的,然而事实上并不是这样的,在实际项目中直接使用这个接口的地方是很少的。另外,dnn多处直接返回ArrayList这个硬接口,而不是象《.net设计规范》所倡导的ICollection或者ICollection<T>这样的软接口。
关于模板,也许你就是一个VisualBasic开发者,你应该很难理解这个问题对我的影响。
我也部分同意Seraph 的意见,不同意的是:借鉴dnn。我觉得dnn完全没有什么值得借鉴的。   回复  引用  查看    

#16楼  2006-10-14 17:31 二十四画生      

@双鱼座
说DNN有很多问题,我不反对。但说毫无值得借鉴的地方我决不赞同。
DNN做为一个免费的开源项目,确能实现很大的商业价值。如果没有优点,会有人去开发DNN Skin和DNN module卖。如果不好用,会有人出钱买吗。不要怀疑客户的智商,他们是不会花钱买没用的动西的。何况买的人还很多。

就像你说的“dnn的设计都是糟糕的”,难道可以借鉴的只有设计模式和程序架构吗?

我也实在是不觉的VB和C#道底有多大区别,我不认为C#程序员会看不懂VB,完全不会用它来编程。只是习惯问题,用久了就好了。多学一门手艺没坏处的。   回复  引用  查看    

#17楼  2006-10-17 09:38 奔放      


从事情的发展观来说,不能一味的去评论一个东西的好坏。

DNN确实有很多设计上的缺陷,但它存在了这么多年,也体现了不小的商业价值。
DNN使用了provider模式,这正是Microsoft推崇的。虽然我也不太喜欢Provider模式的大量应用。不过,借鉴的价值还是有的。

还有,DNN作为开源的Portal,也有助于我们理解Portal的概念。   回复  引用  查看    

#18楼 [楼主] 2006-10-19 14:42 双鱼座      

@二十四画生
相信你的确是一名DNN的大佬,但是我没有从你这里得到DNN到底有什么可以借鉴的这样的信息。
至于VB和C#的区别,对于你可能不存在什么问题,对于我等毫无VB背景的人还是有明显区别的。我不觉得我学会VB很困难,但是我一定不会去学。这是我自己的原则。
@奔放
请不要糟蹋Provider模式。不要看到“Provider”这个词就认为是Provider模式。
关于Portal,DNN基本上没有什么可以借鉴的。如果有的话,我不会认为“dnn完全没有什么值得借鉴的”。不过我所谓的没什么可借鉴的是针对我自己,而不是针对你或者别的什么人。   回复  引用  查看    

#19楼  2006-11-04 21:49 Beewolf      

有点意思。
我是一个门外汉,因为关注的地方不一样,体会也不一样。我是作为用户来说的,并不是开发者。当然我也关注开源项目,因为我们用户的开发能力实在有限,期望有开源的能快速应用。
最近,我们公司的某个部门需要制作一个网页,我推荐了“DNN”框架,我把网站的构架搭好后,把一些基本的应用方式告诉他们,仍然我就去忙其他的事了。反响还不错,一些基本的模块足够了,如果他们需要专用模块,我想以后会给他们定制开发。
我想说的是:如果我不选择“DNN”,我能选择什么呢?JAVA对我来说,研究成本太高,所以我只考虑.net。如果基于楼主的观点,那也可以用到java和.net上来,如果你的用户限制你必须用.net,是否也是类似的答案呢?
也许是MS害了我们,但是应用为本,有应用才有生命力。DNN有许多不是,那就希望有人能提出一个好的方案,进化他就对了。
谢谢楼主的爱国。   回复  引用  查看    

导航

<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

与我联系

搜索

 

常用链接

留言簿(30)

我参与的团队

我的标签

随笔档案

文章分类

相册

芸芸众生

最新评论

阅读排行榜

评论排行榜