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进程服务管理组件应用的主要内容,如果未能解决你的问题,请参考以下文章

BeetleX.FastHttpApi之控制器调度设计

BeetleX.WebFamily之ElasticSearch搜索集成

BeetleX.WebFamily之Markdown编辑器

BeetleX之XRPC远程委托调用

BeetleX服务网关授权配置

BeetleX实现MessagePack和Protobuf消息控制器调用websocket服务详解