Rainbow Portal 架构

更多内容参见 Rainbow 学习

1.Portal架构

  • 一个Rainbow站点集合可以包括多个web站点
         多个站点能使用同一代码同一个数据库;所有的Portal共用一个web.config文件。但每个Portal都有单独的目录来保存上传的图片和文件。
  • Rainbow站点由多个页面(Page)构成
         页面分层管理,层次理论上是无限的,页面间的导航通过菜单实现。Rainbow内置许多不同类型的菜单,包括传统的下拉式菜单,Tabs等等。当然也可以使用自定义的菜单。每个页面根据是否有权限可以显示或隐藏。每个页面都通过动态加载用户控件生成的。
  • Rainbow页面有模块(module)构成
         每个模块通常提供某种类型的功能,如电子商务、讨论、文章等。Rainbow内置70多个模块。用户可以对每个模块进行单独授权,查看、编辑、增加、或是删除模块的内容。模块可以很方便的从一个页面移动到另外的页面。
    2.架构的实现
      2.1 .数据库结构
         让我们从数据库表结构开始,来分析架构是如何实现的。
           如图。图中只是和架构有关的部分数据库表。
         Rainbow在一系列有层次的表中保存Portal的结构。
         最上面的表是Portal,每个Portal都有独特的设计和自定义属性,以键/值的形式保存在rb_PortalSettings表中。
         每个Portal都包含页面,这些页面的构成类似树状结构,每个页面的自定义属性以键/值的形式保存在rb_TabSettings表中。
         页面包含模块;每个模块都有特定的功能。GeneralModuleDefinitions表中,包含所有的模块。模块可以用在特定的Portal中,其信息保存在ModuleDefinitions表中。Module表中保存模块实例,其权限也保存在表中。每个模块的自定义属性以键/值的形式保存在rb_ ModuleSettings表中。
         对数据库表的操作通过存储过程来实现的。
      2.2 .程序实现
         Portal的有关设置信息通过PortalSettings 类来处理。
         Portal的信息包括:
  • Portal ID
  • Portal 名称
  • 页面集合
  • Portal的自定义设置
  • 当前页面和其自定义设置
  • Portal和网站的一些属性
  • 当前采用的主题和页面布置
         在每个Web请求的时候,PortalSettings类实例都被更新,并保存在Context上下文中。在Global.asax.cs的Application_BeginRequest事件中,生成PortalSettings类实例:settings = new PortalSettings(pageId, portalAlias),参数pageId是当前的页面,portalAlias是Portal的别名。
         PortalSettings类实例保存在Context中,可以在应用程序任何地方使用,包括页面、组件、自定义控件等等。
         Portal页面保存在PortalSettings实例的公共属性中:DesktopTabs和MobileTabs中(以ArrayList的形式保存),每个页面的属性保存在TabStripDetails实例中。可以通过Context上下文的PortalSettings来获取页面集合。
    页面导航由Rainbow的页面布局来处理,通常在DesktopPortalBanner.ascx用户控件中,通过DesktopNavigation 和 MenuNavigation控件显示。DesktopNavigation 和 MenuNavigation控件遍历页面集合,检测当前的用户是否有权查看页面,如果有权限就增加到另外一个要绑定到DataList的集合中。
         当用户点击页面链接时,PortalSettings实例更新,设置当前页面。当DesktopPortalBanner.ascx加载的时候,DataList中的SelectedIndex属性设为当前页面的索引。
         前面讲的都是框架,Portal模块包含的才是Rainbow Portal的实际内容,每个模块处理一个特定的内容。所有的模块都是从PortalModuleControl基类中继承的,PortalModuleControl提供了模块和框架之间一些必需的通讯。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值