BeetleX进程服务管理组件应用
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BeetleX进程服务管理组件应用相关的知识,希望对你有一定的参考价值。
有些时候需要在程序中启动和管理其他应用进程,当碰到这样的需求的时候可以通过Process对象来完成;为了让使用和管理更方便在这基础上封装 了BeetleX.ServicesProcess组件,通过组件的管理中心让进程操作更方便,同时还集成了Web套件可直接集成在BeetleX.FastHttpApi中进行Web管理。
BeetleX.ServicesProcess组件提供了ProcessCenter对象来添加,管理,启动和停止等进程管理功能。具体功能方法如下:
public class ProcessCenter : IDisposable
{
public ProcessCenter();
public ProcessCenter(ILogHandler logHandler);
public ServiceManagementConfig Config { get; }
public void Add(string name, string file, string path, string args, bool autoStartup = false);
public void Add(ProcessInfo info);
public void AutoStartup();
public void ChangeUser(string admin, string pwd);
public void Delete(string id);
public void Dispose();
public ServiceProcess GetProcess(string id);
public void Modify(string id, ProcessInfo info);
public void Start(string id);
public void StartAll();
public void Stop(string id);
public void StopAll();
}
以上是组件封装的方法,使用起来非常简单。
接下来主要介绍如何在BeetleX.FastHttpApi中集成它的web管理功能;创建一个控制台项目,引用BeetleX.WebFamily组件;引用后编写以下代码:
class Program
{
static void Main(string[] args)
{
WebHost host = new WebHost();
host.IsWindowsServices = true;
WebHost.Title = "Service Management";
WebHost.HeaderModel = "beetlex-process-header";
WebHost.HomeModel = "beetlex-process-home";
WebHost.TabsEnabled = false;
host.RegisterComponent<Program>();
host.RegisterComponent<BeetleX.ServicesProcess.ProcessCenter>();
host.UseFontawesome();
host.UseElement(PageStyle.Element);
host.Setting(o =>
{
o.SetDebug();
o.Port = 80;
o.LogLevel = LogType.Info;
});
host.Initialize((http, vue, rec) =>
{
BeetleX.ServicesProcess.WebController controller = new BeetleX.ServicesProcess.WebController();
controller.Init(new logHandler(http));
http.ActionFactory.Register(controller, new BeetleX.FastHttpApi.ControllerAttribute { BaseUrl = "process" });
rec.AddCss("website.css");
vue.Debug();
});
host.Run();
}
}
class logHandler : BeetleX.ServicesProcess.ILogHandler
{
public logHandler(BeetleX.FastHttpApi.HttpApiServer sever)
{
mServer = sever;
}
private BeetleX.FastHttpApi.HttpApiServer mServer;
public void Error(string message)
{
mServer.GetLog(LogType.Error)?.Log(LogType.Error, null, message);
}
public void Info(string message)
{
mServer.GetLog(LogType.Info)?.Log(LogType.Info, null, message);
}
}
启动项目后可以查看启动日志
接下来就可以通过浏览器访问进程管理页面
如果有需要还可以把当前示例项目发布成windows service
发布后即可以使用sc命令来创建、启动、停止和删除服务。
完整示例代码
https://github.com/beetlex-io/BeetleX-Samples/tree/master/Web.ServiceManagement
以上是关于BeetleX进程服务管理组件应用的主要内容,如果未能解决你的问题,请参考以下文章