Orchard中的Host和Tenant
Orchard的多个子站点特性
Orchard中可以支持多个子站点。当你运行Orchard的时候,通常一个网站运行在一个应用程序域中。这也是一般ASP.NET应用程序区分两个网站的方法,也就是说两个网站,就需要部署两套网站应用程序。然而,Orchard提供了另外一种区分两个网站的方法。在Orchard中引入了多站点的概念(multi-tenancy,直译为多租户,但我觉得翻译为多站点更贴切),允许你在一个ASP.NET应用程序域中同时运行多个站点。从内存使用率的角度来看这是非常有用的,因为应用程序域的初始化、卸载和回收都是非常消耗资源的。在一个单独的应用程序域中运行多个独立的Orchard网站,就可以在一台服务器上配置更多的站点。做为主机托管商无疑会十分青睐这种方式,这样可以大量节约成本。就一般主机空间的租赁用户来说,也可以在一个主机空间中部署多个站点,这样也能省钱。多站点的功能在Windows Azure环境中会表现的更好,因为部署到Azure中就可以轻松支持多个站点了。
Orchard中关于子站点的概念
host
一个host就是一个orchard站点。host是应用级别的单例,一个orchard站点只有一个host。
tenant
tenant代表了一个子站点。一个orchard站点可以有多个子站点。当一个orchard站点启动时,会有一个默认的子站点,名字是default。
shell是子站tenant点级别的单例。一个shell代表了一个子站点,一个host代表了一个orchard站点。
一个orchard站点可以有多个子站点,接一个host可以有多个shell,每个shell对应一个shellsettings。默认情况下,一个orchard站点有一个默认的子站点,即一个host有一个默认的shell
子站点的配置
子站点的配置其实就是orchard中的ShellSettings的配置。每一个子站点都有且仅有一个ShellSettings。
shellSetting是Orchard.Environment.Configuration.ShellSettings.
ShellSettingsManager:该类负责读取Setting.txt文件和保存shellSetting到Setting.txt。
ShellSettingsSerializer:该类负责将Setting.txt文件中的内容序列化为一个shellSetting对象。
相关类的源码解析
AppDataFolder
对App_Data文件夹的抽象,所有的传进来的或返回的虚拟路径都是基于"~/App_Data".
AppDataFolderRoot
对根目录"~/App_Data"的抽象.主要是为了可以对appdataFolder进行单元测试
ShellSettingsManager
用来从Setting.txt中读取文件内容到shellSetting对象,或者将shellSettings对象的信息写入到Settings.txt文件中。
IEnumerable<ShellSettings> IShellSettingsManager.LoadSettings()
void IShellSettingsManager.SaveSettings(ShellSettings settings)
ShellSettingsSerializer
shellSettignManager类做的事情在内部调用的都是ShellSettingsSerializer的方法来执行的
Orchard中的Host和Tenant的更多相关文章
- Orchard中的多语言功能
在Orchard中支持了两种本地化的方法: 1.对Orchard应用程序和模块中的一些文本字符串进行本地化.这个就相当程序本身的多语言支持,大多数的CMS系统都支持这一功能,如:DotNetNuke. ...
- Orchard中如何配置远端发布
Orchard中默认安装是有Blog功能的.下面介绍如何配置Remote Blog Publishing功能,使用Windows Live Writer客户端发布博客. 一,开启Remote Blog ...
- Orchard中的命令行工具
在Orchard中提供了一个命令行工具,我们可以使用这个命令行工具创建用户.创建博客.生成代码.配置网站.打包模块等.并且这个命令行工具是可以扩充的,只要我们在自己开发的模块中创建一个Command类 ...
- golang中设置Host Header的小Tips
前言 笔者最近时间一直在学习和写Ruby和Go,尤其是Go,作为云计算时代的标准语言,写起来还是相当有感觉的,难过其会越来越火. 不过写的过程中,也遇到了一些小问题,本文就是分享关于go语言设置 HT ...
- 【转】nginx中proxy_set_header Host $host的作用
nginx为了实现反向代理的需求而增加了一个ngx_http_proxy_module模块.其中proxy_set_header指令就是该模块需要读取的配置文件.在这里,所有设置的值的含义和http请 ...
- RestTemplate中headers中添加Host不生效
在使用restTemplate访问内网接口时,不打算指host,支持ip访问,所以我们需要再header中指定host.但经调试,发现HttpURLConnection中Host无法覆盖.解决方案: ...
- 深入理解 OWIN 中的 Host 和 Server
The Open Web Interface for .NET (OWIN),注意单词为大写,之前好像都写成了 Owin,但用于项目的时候,可以写成:Microsoft.Owin.*. OWIN 体系 ...
- Orchard中codegen相关命令
Orchard开放了命令行功能,用于在快速创建代码. 由于该功能默认没有开启.系统中提供两种开启方式: 1.进入管理后台->Modules->找到[Code Generation]-> ...
- ORCHARD中文文档(翻译)
众所周知,Orchard是.net领域最好的开源CMS之一,他使用了微软最先进的技术,有一群先进理念的支持者,但是,所有的事情在国内总得加个但是,Orchard也不例外,中文资料相对比较少,官网提供的 ...
随机推荐
- SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
原文:SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器 上期回顾: SSIS从理论到实战,再到应用(2)----SSIS包的控制流 首先我们来看看包里面的变量 SSIS ...
- Hadoop之——CentOS构造ssh否password登录注意事项
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46388809 前提配置:使用root登录改动配置文件:/etc/ssh/sshd_ ...
- .NET中lock的使用方法及注意事项
lock就是把一段代码定义为临界区,所谓临界区就是同一时刻只能有一个线程来操作临界区的代码,当一个线程位于代码的临界区时,另一个线程不能进入临界区,如果试图进入临界区,则只能一直等待(即被阻止),直到 ...
- 从头开始学JavaScript (六)——语句
原文:从头开始学JavaScript (六)--语句 一.条件分支语句:if 基本格式: if (<表达式1>){ <语句组1>}else if (<表达式2> ...
- Tomcat剖析(三):连接器(1)
Tomcat剖析(三):连接器(1) 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三):连接器(1) 4 ...
- HDU 3639 Hawk-and-Chicken(Tarjan缩点+反向DFS)
Problem Description Kids in kindergarten enjoy playing a game called Hawk-and-Chicken. But there alw ...
- sql server int 列 NULLIF,isnull 判断是0还是1 ,如果是0就变成1
SELECT ISNULL(NULLIF(col1,0),1) ISNULL: 第一个表达式 是 null 返回 第二个表达式,否则 返回 第一个 , ISNULL(表达式1,表达式2) if(表达 ...
- lambda 表达式 自定义查询
遇到 这样的 问题 常用 EF . 实现 like 用 Contains("asd") 搞定 他生成的是 %asd% . 如果 我希望 生成 asd%,怎么搞呢? Start ...
- json.net 比jsonIgnore 更好的方法 修改源码
关于 JsonIgnore 问题, EF T4 模板 中 存在主外键关系 namespace WindowsFormsApplication1{ using System; using ...
- Google Maps API Web Services
原文:Google Maps API Web Services 摘自:https://developers.google.com/maps/documentation/webservices/ Goo ...