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);}}

启动项目后可以查看启动日志

7b2f84d4b606fbdf1f5200f672a0e6b7.png

接下来就可以通过浏览器访问进程管理页面

c0a5408e7ae33269ca4635d26a64060e.png

如果有需要还可以把当前示例项目发布成windows service

54344c11a2987956f31bf67bbd4b9cdd.png

发布后即可以使用sc命令来创建、启动、停止和删除服务。

完整示例代码

https://github.com/beetlex-io/BeetleX-Samples/tree/master/Web.ServiceManagement

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

server 2008 服务器不能访问 java项目,Java 8上的SQL Server JDBC错误:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接...

我在一个Linux实例上的Java 8 JVM中启用了SSL记录,从而再现了这个问题.使用-Djavax.net.debug ssl&#xff1a;handshake&#xff1a;verbose打开SSL日志记录.这显示了一些有用的信息.我们在生产中使用并已证明可以为我们工作的解决方法是在JVM上设置此参数&#xff1a;-Djdk.…

自动上传下载

#!/bin/bashftp -n<<!open 192.168.1.171user guest 1234561. -n 不受.netrc文件的影响。&#xff08;ftp默认为读取.netrc文件中的设定&#xff09;2. << 是使用即时文件重定向输入。3. !是即时文件的标志它必须成对出现&#xff0c;以标识即时文件的开始和结尾#!…

升级总代分享思路_桃生企业至尊七郎瓷砖新展厅全新升级惊艳亮相

桃生企业至尊七郎瓷砖新展厅惊艳亮相&#xff0c;将艺术和时尚完美融合&#xff0c;即将成为晋江天工建材城的新地标&#xff01;2020年桃生企业逆流升级进行中&#xff0c;全新展厅即将揭幕&#xff01;全新空间 对话年轻轻奢于行&#xff0c;优雅于里&#xff0c;全新一楼的…

常胜游戏系列:填满硬币

题目&#xff1a; 有个桌子&#xff0c;两个人交替往桌子上放硬币&#xff0c;当桌子被填满时&#xff0c;最后一个放硬币者获胜。求常胜策略。 方法&#xff1a; 每次都第一个先放&#xff0c;放在桌子中心&#xff0c;之后始终放在对方的对称位置。 转载于:https://blog.51ct…

烧脑又过瘾!关于c²= b² + a²,你不知道的N个事实

全世界只有3.14 % 的人关注了爆炸吧知识勾股定理你真的懂吗一般人看来&#xff0c;勾股定理只存在于特定的三角形或几何图形中。但实际上&#xff0c;绝大多数人都小看了这条有2600年历史的公式&#xff0c;很多看似不可能的图形&#xff0c;只要涉及到了平方数&#xff0c;勾股…

[snmp++]读取cisco路由交换机信息[一] - 环境搭建

首先从网上下载gn3这个摸拟器以及cisco路由器的bin. 如图&#xff0c;下面的clouds里添加本地连接&#xff0c;这样表示路由器与本机的网卡桥接。即在R2里的接口设置一个与本机的IP地址同一网段。这样局域网的机就可以与R2通信 R2的配置如下 snmp-server community public RO 读…

小手拍拍机器人_幼儿园互动儿歌游戏,小朋友瞬间变听话!

原标题&#xff1a;幼儿园互动儿歌游戏&#xff0c;小朋友瞬间变听话&#xff01;幼儿天生好玩好动&#xff0c;儿歌是孩子最喜爱的互动之一&#xff0c;在幼儿园的一日常规中&#xff0c;巧用儿歌互动&#xff0c;既有利于幼儿智力开发&#xff0c;又能让幼儿配合活动&#xf…

Dapr + .NET 实战(六)绑定

什么是绑定处理外部事件或调用外部接口的功能就是绑定&#xff0c;绑定可以提供以下好处&#xff1a;避免连接到消息系统 ( 如队列和消息总线 ) 并进行轮询的复杂性聚焦于业务逻辑&#xff0c;而不是如何与系统交互使代码不受 SDK 或外部库的强耦合处理重试和故障恢复Dapr提供了…

c#web服务器 虚拟目录,C#建立自己的Web服务器

C#建立自己的Web服务器个人珍藏,仅为存档.今天整理磁盘,没处放.扔BLOG.看不懂,别问我.自己研究.webserver.csnamespace cnnbsun.webserver{using System;using System.IO;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading ;class MyWebSer…

对象中multipartfile 空报错_Python 为什么会有个奇怪的“...”对象?

我想到一种特别的写法&#xff0c;很多人会把它当成 pass 语句的替代。在文章发布后&#xff0c;果然有三条留言提及了它。所谓特别的写法就是下面这个&#xff1a;# 用 ... 替代 passdef foo():...它是中文标点符号的半个省略号&#xff0c;也即由英文的 3 个点组成。如果你是…

XP硬盘安装Fedora14图文教程

XP硬盘安装Fedora14图文教程发表于&#xff1a;2010年11月03日 分类&#xff1a;Fedora 26 条评论 5,044 次阅读 昨天是Fedora 14的发布&#xff0c;这篇文章介绍的是如何在windows XP下硬盘安装Fedora 14。 之前写过2篇文章&#xff1a; Linux下硬盘安装Fedora 13&#xff1a;…

oracle使用sqlplus查询sql格式

连接sqlplus 显示表结构&#xff1a; desc acceptuser 列表显示表或者视图acceptuser 所有的列 Name Type id number value varchar(200) createdata date 输入命令: col id formate a10 //表示只显示10个宽度 不换行 col value format a…

用wamper打开php源码_php源码该怎么设置数据库

php源码该怎么设置数据库php源码修改数据库的设置方法&#xff1a;首先在源码中找到程序的配置文件&#xff1b;然后用文本编辑器打开&#xff1b;之后修改数据库地址、数据库名、用户名、连接密码、数据库前缀等参数&#xff1b;最后保存即可。这里以织梦程序为例&#xff0c;…

豆瓣评分9.0+,这几部纪录片看一部少一部!

纪录片是以真实生活为创作素材&#xff0c;以真人真事为表现对象&#xff0c;并对其进行艺术的加工与展现的&#xff0c;以展现真实为本质&#xff0c;并用真实引发人们思考的电影或电视艺术形式。好的纪录片就像打开了一扇新世界的大门&#xff0c;让我们了解更多世界的奇妙之…

记一次 .NET 某纺织工厂 MES系统 API 挂死分析

一&#xff1a;背景 1. 讲故事这个月中旬&#xff0c;有位朋友加我wx求助他的程序线程占有率很高&#xff0c;寻求如何解决&#xff0c;截图如下&#xff1a;说实话&#xff0c;和不同行业的程序员聊天还是蛮有意思的&#xff0c;广交朋友&#xff0c;也能扩大自己的圈子&#…

Windows7下注册OCX的注意事项

文章首发于&#xff1a;博客园 今天要测试一个几年前基于.NET Framework1.1做的软件在Window7下的工作情况&#xff0c;发现Windows7很体贴的已经默认安装了最新版的Framework3.5.1。程序跑的很顺畅&#xff0c;看来Win7的向下兼容性果然不错。 不过途中发现有一个用到的OCX控件…

获取iOS 设备上崩溃日志 (Crash Log)的方法

1. iTunes同步获取 大部分用户会使用iTunes软件来管理iPhone&#xff0c;这样同步的Crash日志就会同步到电脑上&#xff0c;我们需要在特定的路径里面查找 Mac OS X&#xff1a;~/Library/Logs/CrashReporter/MobileDevice 2. 使用第三方软件 &#xff1a; itools等 使用itool…

python求斜边上的高_直角三角形斜边上的高怎么求

展开全部 直角三角形斜边32313133353236313431303231363533e78988e69d8331333431336666上的高的求法&#xff1a; 1. 直角三角形斜边上的高等于两条直角边的乘积除以斜边的商。 例如&#xff1a;直角三角形的两个直角边分别为a和b&#xff0c;斜边为c&#xff0c;那么&#xff…

[设计模式]桥接模式

桥接模式可以把抽象类和实现类进行各自封装和扩展&#xff0c;目的在于解耦。由于桥接模式可以增强了组合性&#xff0c;我们可以很灵活地修改类&#xff0c;并且很好地重用。我们可以先看一下简单的片断&#xff1a; //这是一个演示简单的桥接模式片断(本例子只假设在标准浏览…

使用identity+jwt保护你的webapi(一)——identity基础配置

前言用户模块几乎是每个系统必备的基础功能&#xff0c;如果每次开发一个新项目时都要做个用户模块&#xff0c;确实非常无聊。好在asp.net core给我们提供了Identity&#xff0c;使用起来也是比较方便&#xff0c;如果对用户这块需求不是非常个性化的话&#xff0c;identity是…