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

使用Glue4Net部署.NET应用的更多相关文章

  1. Glue4Net简单部署基于win服务的Socket程序

    smark 专注于高并发网络和大型网站架规划设计,提供.NET平台下高吞吐的网络通讯应用技术咨询和支持 Glue4Net简单部署基于win服务的Socket程序 在写一些服务应用的时候经常把要它部署到 ...

  2. [原]CentOS7.2部署node-mapnik

    转载请注明表作者think8848及出处(http://think8848.cnblogs.com) node-mapnik依赖项中要求g++ >= 5, toolchain (>= GL ...

  3. 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus

    最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...

  4. 通过Jexus 部署 dotnetcore版本MusicStore 示例程序

    ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...

  5. 结合Jexus + Kestrel 部署 asp.net core 生产环境

    ASP.NET Core 是微软的全新的框架.这一框架的目标 ︰ 跨平台 针对云应用优化 解除 System.Web 的依赖. 获得下面三个方面的优势,你可以把它认为是一个C# 版本的NodeJS: ...

  6. 4.Windows Server2012 R2里面部署 MVC 的网站

    网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/4822808.html#iis 后期会在博客首发更新:http://dnt ...

  7. Win10 IIS本地部署MVC网站时不能运行?

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 部署后出现这个错误: 打开文件目录后发现是可以看见目录的,静态页面也是可以打开的 ...

  8. 再部署一个 instance 和 Local Network - 每天5分钟玩转 OpenStack(131)

    上一节部署了 cirros-vm1 到 first_local_net,今天我们将再部署 cirros-vm2 到同一网络,并创建 second_local_net. 连接第二个 instance 到 ...

  9. 将 instance 部署到 OVS Local Network - 每天5分钟玩转 OpenStack(130)

    上一节创建了 OVS 本地网络 first_local_net,今天我们会部署一个 instance 到该网络并分析网络结构.launch 一个 instance,选择 first_local_net ...

随机推荐

  1. JAVA基础复习与总结<十> Ruannable和Callable

    程序运行原理  1.分时调度:所有线程轮流使用CPU的使用权,平均分配给每个线程占用CPU的时间. 2.抢占式调度:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性 ...

  2. BZOJ1431 : MLand

    考虑任意一棵生成树,它的代价是一个一次函数. 因此所有生成树的最小值随着时间变化呈现出的是一个上凸壳. 三分查找最大值即可. 时间复杂度$O(m\log m\log w)$. #include< ...

  3. PHP中使用CURL之php curl详细解析

    在正式讲怎么用之前啊,先提一句,你得先在你的PHP环境中安装和启用curl模块,具体方式我就不讲了,不同系统不同安装方式,可以google查一下,或者查阅PHP官方的文档,还挺简单的. 1. 拿来先试 ...

  4. 大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录

    一.背景介绍 最近几天,接到公司的一个将当前大数据平台数据全部迁移到阿里云ODPS平台上的任务.而申请的这个ODPS平台是属于政务内网的,因考虑到安全问题当前的大数据平台与阿里云ODPS的网络是不通的 ...

  5. 通过命令行操作MYSQL的方法 以及导入大的SQL备份文件

    运行  输入CMD 进入 命令行窗口 输入Mysql.exe的路径  如:c:/wamp/bin/mysql.exe  回车 这时出现 welcome to the mysql ...的提示  进入成 ...

  6. python练习题目

    1.查看本机安装python版本 2.用python打印"Hello World",给出源代码和执行结果 a.命令行窗口输出(前提:python程序加入PATH系统环境变量) b. ...

  7. ionic-基于angularjs实现的多级城市选择组件

    大家都知道在移动端的选择地区组件,大部分都是模拟IOS选择器做的城市三级联动,但是在IOS上比较好,在Android上因为有的不支持ion-scroll.所以就会出现滚动不会自动回滚到某一个的正中间. ...

  8. Anaconda虚拟环境

    创建虚拟环境:conda create -n env_name packages 例:创建名为env1的虚拟环境,并在其中安装numpy,conda create -n env1 numpy. 指定特 ...

  9. Qt5+MSVC2015编译器编译发布的Release程序运行崩溃,如何查找崩溃的原因??

    除了加log信息,还有什么方法?? ==================================2019/4/26============================= 1 常见的c++内 ...

  10. springboot整合mybatis和mybatis-plus

    问题 1 分页查询问题 2   mybatis的配置由mybatis变成mybatis-plus 3  Mybatis-plus中的Wrapper