Rainbow Portal 架构
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提供了模块和框架之间一些必需的通讯。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1478472
分享到:
相关推荐
【Matlab实现Rainbow画图】是针对科研和学习者的一种可视化技术,主要适用于本科及硕士阶段的学生。在Matlab 2019a版本中,可以利用特定的函数和编程技巧来创建色彩丰富的Rainbow色图,这种色图常用于显示数据的连续...
"Rainbow"是一个机器学习工具包,其名称可能源于它所涵盖的各种算法和技术的多样性,就像彩虹包含多种颜色一样。这个工具包可能是为了方便数据科学家和机器学习工程师整合不同的学习算法,进行模型训练和评估。从...
"Rainbow Brackets"是IntelliJ IDEA的一个插件,它为编程语言中的括号提供了颜色编码,使得在复杂的代码结构中更容易追踪和理解括号的配对关系。 标题"intellij-rainbow-brackets-5.28.zip"表明这是Rainbow ...
华为Rainbow hConvertor OpenStack-VRM迁移工具操作指导书.pdf 华为Rainbow hConvertor OpenStack-VRM迁移工具操作指导书.pdf是华为技术有限公司发布的一份操作指导书,旨在指导华为工程师使用Rainbow hConvertor...
其中,"Rainbow Brackets"是一个非常实用的插件,特别是在处理复杂代码结构时,能够显著提高代码可读性和编辑效率。标题中的"intellij-rainbow-brackets-6.10.zip"即表示该插件的一个特定版本,版本号为6.10。 ...
Rainbow A fork of Processing for Android Guide What can I do with Rainbow? With Rainbow you can easily draw graphics (interactive or not) in your Android application. How to do it? Import it on...
"Rainbow Brackets"是IntelliJ IDEA中的一个流行插件,它的最新版本为5.35,这个压缩包“intellij-rainbow-brackets-5.35.zip”正是包含了这个插件的安装文件。 "Rainbow Brackets"插件的核心功能是将代码中的括号...
2023.3.6 版本,找到idea插件安装目录,将此插件里面的intellij-rainbow-brackets-2023.3.6.jar 替换为附件中的jar Rainbowify各种类型的括号(圆形、波浪形、方形、角度) Rainbowify更多语言的变量&使用颜色...
RainBow是一个基于websocket的支持多种QOS的消息转发服务器及客户端SDK。使用RainBow可以让您业务逻辑与链接管理完美的分离开来,且可以继续使用您最熟悉的方式(HTTP)来接入业务逻辑。以下是概览图,绿色部份为...
unity 插件 Rainbow Folders 2(彩色文件夹)
"Rainbow.2.0(补充的文件)"这个标题暗示了这可能是一个软件更新或扩展包,专门设计用于补充之前发布的"Rainbow.2.0"版本。Rainbow.2.0可能是一个软件系统、框架或者应用,其核心功能在前一版本的基础上得到了增强...
Rainbow SDK 是一款专为开发者设计的工具包,主要用于构建和集成通信功能到Web应用中。这个SDK使得开发者能够轻松地在自己的应用中添加语音、视频通话,以及丰富的即时通讯功能,如消息传递、文件共享等。从提供的...
彩虹字典Completed Rainbow Tables
"Rainbow鼠标指针"是一个主题性软件,它主要用于改变计算机操作系统的默认鼠标指针样式,使其呈现出彩虹般的色彩效果。这种视觉上的变化不仅能够增添桌面的个性化元素,还可以为用户带来更有趣的交互体验。在了解这...
华为Rainbow hConvertor系统迁移工具操作手册.pdf 知识点: 1. 华为Rainbow hConvertor系统迁移工具简介:Rainbow hConvertor是华为技术有限公司推出的系统迁移工具,旨在帮助用户迁移业务系统,实现业务连续性和...
rainbow1.3
Rainbow是一款专为Android开发者设计的开源库,它简化了在Android应用中添加渐变色和自定义颜色处理的过程。这个库的目的是让开发者能够快速、便捷地为UI元素如按钮、背景等添加丰富多彩的视觉效果,提升用户体验,...
由于上传大小限制,所以只好把文件分成两部分(有一部分是免费的... 使用说明:把两个压缩包都解压后,只需将“Rainbow2.0(补充的文件).rar”里的那两个文件复制到名叫“Rainbow2.0”的文件夹里里,即可使用。
"Rainbow Folders" 是一个实用工具,它允许用户自定义电脑中文件夹的颜色,以实现更加个性化和高效的文件管理。这个程序的核心功能是通过改变文件夹图标背景颜色,使得在众多文件夹中能快速识别出特定的文件夹,这...