首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
tellmenow (22)
cutemouse (22)
softj (78)
iiprogram (69)
qdzx2008 (50)
goodboy1881 (14)
wangchinaking (58)
fancyhf (1)
harrymeng (41)
yjz0065 (113)
CSDN - 文档中心 - 其他 阅读:43026   评论: 3    参与评论
标题   做虚假的插件     选择自 ghj1976 的 Blog
关键字   做虚假的插件
出处  

做虚假的插件

最近一直在进行下一代CSDN社区的详细设计,其中各个社区都需要有自己的特色,苦恼的地方就是灵活定制和性能的取舍。

插件系统就是相当灵活的系统。

http://www.cnblogs.com/muddle/archive/2004/06/11/4762.html
这里对插件系统的描述就相当不错。摘抄几句:

插件系统就是指 当宿主程序开发好以后,可以开发一些符合自定义规范的程序(插件),来扩充宿主程序的功能。

插件系统的设计注意点为:
1. 宿主程序如何知道插件的存在;
2. 插件如何从宿主程序获得必需要的内容;
3. 插件之间如何交换信息;
4. 如何对插件进行扩充(也就是说每一个插件都可以作为一个宿主程序);
5. 考虑插件升级,等其它因素;

要实现以上灵活的插件系统,.net 下使用反射是必然。但是使用反射又有性能的问题。
反射的性能可以参看以下链接:
http://blog.csdn.net/leafwiz/archive/2004/10/18/141882.aspx
http://nickchen.mblogger.cn/posts/28131.aspx

另外,如果每个插件要用到自己的数据库的话,更麻烦。在社区设计中每个插件涉及到数据库就很明显,比如CSDN 社区的积分制可以被认为是一个插件。保存积分就需要数据表。而这个数据表又不是孤立的。

这样灵活的系统下,性能必然成为很大的问题,而社区一般都是众人集中的地方,性能、用户体验是第一要素。

考虑到以上的问题,在CSDN下一代社区开发中,我觉得采用一个中庸取舍方式比较好。

首先这个社区的插件应该都是由我们组织开发的,我们清楚有哪些插件。这样就不需要考虑特别灵活的扩创一个新的插件,而只需要考虑灵活的调用一个插件,同时调用时要考虑性能问题。
这样在新设计一个插件的时候,可能会比较麻烦。但好在这不是第三方完成的,我们是可以控制的。

我们在程序架构上,就可以假设这些插件都是存在的,只是调用不调用的问题。
这其实就变成配置参数的思想,而不再是插件的思想了。

只不过我们为了为了维护方便,仍然采用插件的思想,把每一个插件相关的操作,尽量集中到一个应用程序集中(这里仅仅是尽量而不是强制要求)。部署的时候,方便管理。

这个虚假插件系统中,甚至可能部分插件是混杂在一起的(比如数据库中,宿主数据表和插件用到数据表被集成到一个表中,宿主程序和插件程序对该数据表同一行不同列的操作,可能会被集中到一个函数中完成)。

这就是一个虚假的插件系统。但是他是照顾了性能,又有相当灵活性的。


结论:
以上的中庸取舍思想,其实在软件开发中很有意义,因为我们的实际项目需求,跟某个设计模式的理想状态总是有差别的。


附带说一下:网站的总体性能,总体体验,主要是由用户最常使用的功能决定的,如果你的一个优化把用户最常使用的功能反应速度提高了,而把不常使用的功能反应速度增大了,这仍然是一个好的性能方案。


相关文章
对该文的评论
tony1978 ( 2004-12-01)
最好的设计不一定是最理想的解决方案
CSDN 网友 ( 2004-11-26)
烂就是烂,现在连blog都进不了
nhconch ( 2004-11-25)
搞什么插件不插件的,先把现在东西做好再说吧。你看看Blog的图片管理功能,老是出错的。