这应该是一个主体基于论坛的社区吧,也就是说在数据库方面很像一个论坛。Board有ParentBoard,可以无限级创建子论坛,Board对Topic和Topic对Post都是一对多,Post也有ParentPost以成树装,一个最最基本的论坛大概也就这些了吧。然后我不同的板有不同的职能,所以它们或许要增加一些字段和逻辑(所以我会选择一个Board一张Topic表和一张Post表的做法)。例如假如我希望有个问答板块是好像CSDN那样有份数计算的,那么我就需要对Topic和Post增加分数相关的字段,在UI上提供发帖时给分的地方以及节帖的版面,然后还要增加对应的逻辑部分。同时,我希望把这样的一个“功能附加”做到好像论坛插件的形式,最好能够我可以脱离论坛按照一定的接口就能够编写插件,插件装到论坛的某一个Board后也能够轻易的Enable或者Disable。另外如果能够允许一个Board加多个插件就好了(在不冲突的情况下)。我暂时的设想是这样的,每一个Board都是相对独立的拥有自己的aspx但调用的主要WebControl都是相同的,这个有点类似Sharepoint里面List的概念——每一个List都是一个独立的目录,更改一个List的UI并不影响这个类型的其他List及新建同类型List的默认UI。然后所谓的插件就有点像WebControl,不过对它的引用信息不是放在aspx而是放在该Board的config文件。而说它类似WebControl,就是在于运行时aspx和插件的交互就有点像和WebControl的交互。例如在“发表新贴”(NewTopic.aspx)页面,它会检测插件是否支持INewTopicAddOn,支持的话就在Load的时候调用它的INewTopicAddOn.LoadAddOnInputRows(),例如类似CSDN论坛的插件就会在此函数中要求增加“给分”一栏。至于验证“给分”是不是合法,发帖成功可以保存数据了,则在INewTopicAddOn的其它函数中实现。还有就是到插件第一次被调用时应该像数据库增加什么字段等操作,也是在插件基类中指定了在某个virtual函数中实现的。我暂时能够想到的就这么多了,希望大家多给点建议吧。