Skip to content
This repository has been archived by the owner on Dec 20, 2022. It is now read-only.

Zongsoft/Zongsoft.Web.Launcher

Repository files navigation

Zongsoft.Web 宿主程序

license download version github stars

README: English | 简体中文


注:该项目已归档,对应的替代版本请参考:https://github.com/Zongsoft/Framework/blob/master/hosting/web

这是 Zongsoft 插件应用的 Web 宿主程序。

这只是一个普通的 ASP.NET Web API 应用程序,在实际生产中应该为你的产品或项目创建自己的 Web 宿主程序 (譬如:{Organization}.Web.Server,以便增加一些辅助代码和其他资源文件。

启动

插件应用宿主程序的运行机制:在宿主进程的启动点调用插件应用的启动方法 (如下所示)

/*
 * https://github.com/Zongsoft/Zongsoft.Web.Launcher/Global.asax.cs
 */
namespace Zongsoft.Web.Launcher
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            Zongsoft.Plugins.Application.Start(Zongsoft.Plugins.Web.ApplicationContext.Current, null);
        }
    }
}

更多插件应用的加载机制、运行原理等信息请参考 Zongsoft.Plugins 项目的相关文档。

部署

部署文件

项目根目录的 .deploy 文件是一个 INI 格式的部署文件,它定义了需要将哪些源文件拷贝到本项目的相应目录中,供 Zongsoft.Utilities.Deployer 部署工具解析使用。

提示:可以参考 Zongsoft.CoreLibrary 核心库的 Zongsoft.Options.Profiles 命名空间了解 INI 配置文件的解析。

部署命令

部署命令即调用 Zongsoft.Utilities.Deployer 部署工具进行一系列文件复制。在宿主项目的“设置”-“生成事件(前)”中添加命令行 (如下所示),以便每次重建 (Rebuild) 时自动更新部署:

cd $(ProjectDir)
$(ProjectDir)\deploy-$(ConfigurationName).bat

注意: 宿主项目本身没有多少代码,而当宿主项目没有代码变更时,在某些 Visual Studio 版本中重新生成项目是 不会 激发“生成事件”的,因此也就没有执行在项目设置中定义的部署命令,所以这种情况下当一些插件项目编译更新后,务必手动执行一遍宿主项目根目录中的部署命令,以确保更新后的插件被正确复制过来了再运行宿主程序。

  • deploy-debug.bat 命令文件
Zongsoft.Utilities.Deployer.exe -edition:Debug ".deploy"
  • deploy-release.bat 命令文件
Zongsoft.Utilities.Deployer.exe -edition:Release ".deploy"

插件

执行部署命令之后,本宿主项目的 plugins 目录结构大概如下所示:

[plugins]
├── Main.plugin
├── Web.plugin
│
└── Zongsoft
    ├── Community
    │   ├── Zongsoft.Community.dll
    │   ├── Zongsoft.Community.option
    │   ├── Zongsoft.Community.plugin
    │   ├── Zongsoft.Community.mapping
    │   ├── Zongsoft.Community.Web.dll
    │   └── Zongsoft.Community.Web.plugin
    │
    ├── Security
    │   ├── Zongsoft.Security.dll
    │   ├── Zongsoft.Security.option
    │   ├── Zongsoft.Security.plugin
    │   ├── Zongsoft.Security.mapping
    │   ├── Zongsoft.Security.Redis.plugin
    │   ├── Zongsoft.Security.Web.dll
    │   └── Zongsoft.Security.Web.plugin
    │
    ├── Data
    │   ├── mssql
    │   │   ├── Zongsoft.Data.MsSql.dll
    │   │   └── Zongsoft.Data.MsSql.plugin
    │   │
    │   └── mysql
    │       ├── MySql.Data.dll
    │       ├── Zongsoft.Data.MySql.dll
    │       └── Zongsoft.Data.MySql.plugin
    │
    └── Externals
        ├── Json
        │   ├── Newtonsoft.Json.dll
        │   ├── Zongsoft.Externals.Json.dll
        │   └── Zongsoft.Externals.Json.plugin
        │
        └── Redis
            ├── StackExchange.Redis.dll
            ├── Zongsoft.Externals.Redis.dll
            ├── Zongsoft.Externals.Redis.option
            └── Zongsoft.Externals.Redis.plugin

插件部署

  • 移除插件:将待移除的插件目录或插件文件(.plugin)删除;
  • 添加插件:将新插件的相关文件复制到宿主程序的 plugins 子目录中。

部署文件

下面是本宿主项目的 .deploy 部署文件的内容:

[plugins]
/Zongsoft/Zongsoft.Plugins/Main.plugin
/Zongsoft/Zongsoft.Plugins.Web/Web.plugin

[plugins Zongsoft Data]
/Zongsoft/Zongsoft.Data/.deploy
[plugins Zongsoft Data mssql]
/Zongsoft/Zongsoft.Data/drivers/mssql.deploy
[plugins Zongsoft Data mysql]
/Zongsoft/Zongsoft.Data/drivers/mysql.deploy
[plugins Zongsoft Data oracle]
/Zongsoft/Zongsoft.Data/drivers/oracle.deploy
[plugins Zongsoft Data postgres]
/Zongsoft/Zongsoft.Data/drivers/postgres.deploy

[plugins Zongsoft Community]
/Zongsoft/Zongsoft.Community/src/.deploy
/Zongsoft/Zongsoft.Community/src/api/.deploy

[plugins Zongsoft Security]
/Zongsoft/Zongsoft.Security/src/.deploy
/Zongsoft/Zongsoft.Security/src/api/.deploy

[plugins Zongsoft Externals Json]
/Zongsoft/Zongsoft.Externals.Json/.deploy

[plugins Zongsoft Externals Redis]
/Zongsoft/Zongsoft.Externals.Redis/.deploy

对照插件目录结构和部署文件内容,不难发现部署文件的定义:

  • Section 段(方括号内部)表示目标位置的相对目录,目录层级之间以空格分隔;
  • Entry 条目(方括号后面)表示源文件的路径,如果源文件扩展名为 .deploy 则表示源文件由该源部署文件定义并以此类推。

如果你需要部署自己的插件,建议在宿主程序根目录添加对应的部署文件 (譬如:xxx.deploy,然后编辑 “deploy-debug.bat” 或 “deploy-release.bat” 命令文件,在命令参数部分加上你的部署文件名即可,大致如下所示:

Zongsoft.Utilities.Deployer.exe -edition:Debug ".deploy" "xxx.deploy"

其他

最后,希望你能喜欢 Zongsoft 面向服务的插件架构和插件化开发方式。

贡献

请不要在项目的 Issues 中提交询问(Question)以及咨询讨论,Issue 是用来报告问题(Bug)和功能特性(Feature)。如果你希望参与贡献,欢迎提交 代码合并请求(PullRequest) 或问题反馈(Issue)。

对于新功能,请务必创建一个功能反馈(Issue)来详细描述你的建议,以便我们进行充分讨论,这也将使我们更好的协调工作防止重复开发,并帮助你调整建议或需求,使之成功地被接受到项目中。

欢迎你为我们的开源项目撰写文章进行推广,如果需要我们在官网(http://zongsoft.com/blog) 中转发你的文章、博客、视频等可通过 电子邮件 联系我们。

强烈推荐阅读 《提问的智慧》《如何向开源社区提问题》 和 《如何有效地报告 Bug》《如何向开源项目提交无法解答的问题》,更好的问题更容易获得帮助。

支持赞助

非常期待您的支持与赞助,可以通过下面几种方式为我们提供必要的资金支持:

  1. 关注 Zongsoft 微信公众号,对我们的文章进行打赏;
  2. 加入 Zongsoft 知识星球号,可以获得在线问答和技术支持;
  3. 如果您的企业需要现场技术支持与辅导,又或者需要特定新功能、即刻的错误修复等请发邮件给我。

微信公号

知识星球

About

这是 Zongsoft 插件应用的 Web 宿主程序。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published