使用Glue4Net部署.NET应用
Glue4Net是一款.NET平台下的应用部署管理容器,可以配置N个不同目录下的.NET应用并加载到不同的应用域中,并提供自动识别应用文件的变更来重新加载应用。通过Glue4Net应用加载容器可以大大节省.NET应用的部署和更新维护工作。
容器结构
支持功能
- 自动加载目录的.NET程序.
- 支持加载多个.NET程序应用
- 自动加载目录下的代码文件并添加到应用域中.
- 提供自成定义模块定义,加载应用的时候执行.
- 自定义监控文件变更,变更重新加载相应的服务.
服务安装使用
容器提供命令行和windows服务模式,可以通过install.bat注册到windwos服务中运行,容器可以通过以下连接下载
http://www.ikende.com/files/file/Glue4net.rar
托管应用
应用可以是编写好的DLL或直接相应的代码文件(.cs或.vb)可以存放到任意容器可以访问的目录下.通过编辑domains.config文件把应用添加到容器中(修改文件后并不需要重启Glue4Net,容器会自动加载).
<domains> <add name="test" compiler="true" path="test" updateWatch="true" watchFilter="*.cs|*.config"/> </domains>
只需要在domains配置节添加相关应用的信息.
- name
应用名称,在容器中是唯一 - path
应用所在的目录,如果不是全路径的情况则会从当前容器目录下查找相应的子目录 - compiler
是否开启编译源代码功能 - updateWatch
是否开启文件更新监控,如果发现文件变更则重启应用 - watchFilter
监控的文件类型
添加运行模块
容器只会根据配置信息把应用加载到相应的域中,是不会执行任何相关代码.如果需要容器加载应用后执行某些功能,则在编写应用的时候需要有类实现IAppModule接口.容器会遍历所有这些接口的实现类实例化并执行.
public interface IAppModule { string Name { get; } IEventLog Log { get; set; } void Load(); void UnLoad(); }
应用配置信息
在编写应用的时候很多信息都依赖于配置文件,那当容器加载应用后,应用相应的配置文件是如何处理呢?只需要把配置信息存放到应用目录下的app.config即可.
如添加一个AppSetting
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="username" value="bbq"/> </appSettings> </configuration>
代码里直接通过ConfigurationSettings访问
using System; public class TestModule : Glue4Net.IAppModule { public string Name { get {return "TEST"; } } public Glue4Net.IEventLog Log { get; set; } public void Load() { string name = System.Configuration.ConfigurationSettings.AppSettings["username"]; Log.Info("Test Module Load !"); Log.Info("UserName:{0}", name); } public void UnLoad() { Log.Info("Test Module UnLoad!"); }
Glue4Net核心库:https://github.com/IKende/IKendeLib/tree/master/Glue4Net
访问Beetlex的Github