• 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对象。

    image

    image

    image

    image

    相关类的源码解析

    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的方法来执行的

  • 相关阅读:
    BPM平台在企业业务系统中使用的价值讨论
    零售餐饮行业的信息化建设
    LINQ 与Oracle应用 :转帖
    k2之于.NET流程应用开发者
    利用xslt导出复杂样式的excel,支持多个worksheet
    利用偏移量快速定位数据内容
    简单天气项目中观察者模式解析
    作业3:基于墨刀的:视频剪辑软件原型设计
    必做作业2:视频剪辑软件调研
    .Net Core项目依赖项问题
  • 原文地址:https://www.cnblogs.com/leiwei/p/3451120.html
Copyright © 2020-2023  润新知