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的方法来执行的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?