递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 56814|回复: 106
打印 上一主题 下一主题

[视窗] 【解决方案】火山视窗服务器插件化开发研究_部件DLL案例

  [复制链接]

452

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
42662
跳转到指定楼层
楼主
发表于 2023-2-13 14:51:19 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 创世魂 于 2023-2-13 21:21 编辑


火山视窗服务器插件化开发研究。


现在火山并没有出服务器插件,比如火山java,火山php,火山nodejs 等服务器开发。
比如:php虽然已经快丢进垃圾桶了,但是有个很好的优点,服务器更新基本上直接丢进去php文件覆盖就可以了。可以非常方便实现动态更新。
(夸张一下请勿较真,毕竟php依然坚挺)震惊php排名第十


火山没有这些服务器开发,只能依靠windows开发服务器,这就面临一个问题,如何动态更新。


毕竟exe程序想要更新必须关闭软件才能实现,关闭软件也就意味着服务器关闭。

不过还好有另外一条路,那就是通过dll热加载实现,业务逻辑放进dll。需要修改的时候就修改dll文件即可。

但是这又面临一个问题,如果只想某个业务模块停止,如何做?


其实也很简单,这就需要在软件服务器开发初期,对服务器所需要的功能模块拆分。
比如:注册dll、登陆dll、等等……如果注册dll需要维护就单独停止注册dll业务。


于是乎就有了下面的案例。
本案例客户端和服务器是基于HP_pack通讯协议实现,实现了服务器注册登陆业务分离,当某个模块需要维护的时候停止此模块即可。
因为案例写的比较简单,仅供演示参考,请勿用于生产环境。








下载例子后,注意将“登陆DLL”和“注册DLL”两个项目右键,进行编译发布版,然后运行主服务器才能使用。







服务器插件化开发后:
      优点:可以对模块进行动态更新,方便服务器维护升级。
      缺点:
            1、开发周期较长,对服务器程序逻辑思维有较高的要求。
            2、需要提前规划好各个模块业务。
            3、最大的缺点是,如果需要新增插件,需要停止整个服务器。因为插件逻辑是在“主服务器”源码中实现,新增插件必须对主服务器进行修改重新编译。
         
最后:至于能不能实现真正的热更新,新增插件也热更新?因为服务器插件是基于部件DLL实现,并不是自己通过类库动态载入的,所以就目前这个源码来说不能实现。

至于通过部件DLL能不能实现动态插件,比如放一个dll到目录中刷新插件列表,就可以直接加载新插件功能。。
目前好像部件不太好实现,如果有大佬有部件DLL的相关解决方案,欢迎贡献案例。




游客,如果您要查看本帖隐藏内容请回复











评分

参与人数 2金钱 +2 收起 理由
a25926 + 1 PHP还是比火山好,他能跨平台啊.
东子 + 1 哈哈,什么叫PHP“快丢进垃圾桶”,那请问.

查看全部评分

安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

40

主题

470

帖子

2724

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2724
107#
发表于 昨天 08:40 | 只看该作者
6666
回复

使用道具 举报

0

主题

8

帖子

36

积分

新手上路

Rank: 1

积分
36
106#
发表于 昨天 00:26 | 只看该作者
学习学习
回复

使用道具 举报

6

主题

138

帖子

807

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
807
105#
发表于 2025-3-16 11:23:46 | 只看该作者
666666666666666666
回复

使用道具 举报

14

主题

153

帖子

776

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
776
104#
发表于 2025-3-15 03:26:59 | 只看该作者
学习                              
回复

使用道具 举报

15

主题

348

帖子

1824

积分

金牌会员

接单Q:413795326

Rank: 6Rank: 6

积分
1824
QQ
103#
发表于 2024-11-27 13:08:34 | 只看该作者
PHP一时半会 丢不了
(\__/)
( •ᴗ•)
/> 软件 小程序 APP POST 脚本 建站 QQ:413795326
回复

使用道具 举报

27

主题

216

帖子

1550

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1550
102#
发表于 2024-11-27 00:18:03 | 只看该作者

来学习下。。。。
回复

使用道具 举报

32

主题

571

帖子

3501

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3501
101#
发表于 2024-10-26 22:47:46 | 只看该作者
能不能 部件dll加载部件dll?

主服务器只负责加载一个'加载管理.dll'的部件
需要加载哪些部件,由'加载管理.dll'部件来定义及管理
但需要新增部件时,只需要更新'加载管理.dll'部件及新增的那个部件即可

没有实操,只是理论构想
Inverse
回复

使用道具 举报

5

主题

153

帖子

1800

积分

金牌会员

Rank: 6Rank: 6

积分
1800
100#
发表于 2024-10-26 22:27:11 | 只看该作者
看看怎么做的
回复

使用道具 举报

3

主题

34

帖子

100

积分

注册会员

Rank: 2

积分
100
QQ
99#
发表于 2024-10-16 19:41:41 | 只看该作者
6666666666666666666666666666666666666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-4-4 02:43 , Processed in 0.102371 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表