大社区型网站的架构总结之如何标示用户在使用哪个功能程序篇(草稿)

人是最会模仿的动物,很多先进的发明创造,并不是人类凭空想象出来的,而是仿造出来的,仿造的对象不是各种神奇的动物就是大自然的现象。
所以其实在软件开发中也是这样,真正的专家是最善于应用经验证明是有效的解决方案的人,我们每一个人都崇拜专家,却没有一个人能意识到,其实很多东西我们换个其他领域的解决其他问题的解决方案的思路,一样可以解决很多问题。
这段时间在做一个社区,社区的功能并不是固定的,就是说会有很多的功能推出来,就像Google那样的模式,而有一些会仍然处于测试阶段就会释放出来。即使你有很多功能,却不是每个用户都需要全部的功能,所以你不能简单地做个控制中心来让用户操控全部的你的网站所拥有的功能。
让每个网站的功能程序都独立的存在和管理不是最佳的解决方法,你的大部分用户会迷失在你的网站中,而且对用户来说,他使用的你的网站的功能越多,他操作所需的繁琐性就越大。

我的方案是提供用户一个类似Windows控制面板的东西,上面只会列出用户订阅了的功能程序,如果用户没有订阅某个功能程序,则它肯定不会显示在用户的控制面板上。而确认用户订阅了该功能程序的数据则保存在用户中心的数据库中,仅仅是简单的为功能程序定义一个全局统一标识符,类似于Windows的注册表的软件记录机制。每当网站新增加了一个功能,就相应的在网站基础数据库中记录一个代表该功能的标识,这样当用户订阅了该功能程序时,我只需要在用户中心数据库确认而不是到各个功能程序库里去确认用户是否建立了数据。


对每个应用模块都进行用ApplicationKey标记的编码(如Guid类型),通过ApplicationKey找到对应的ApplicationID,这样就可以将用户使用过的程序进行记录(记录到UsersInApplications表中)

这样当用户下次访问时,依然能够看到自己曾经参与过的应用.

原文地址:https://www.cnblogs.com/csharpsharper/p/portaldesign_howensureusersubscribemodule.html