开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3479|回复: 11
收起左侧

[易语言软件开源] bl-mid-proxy,中间件

[复制链接]
结帖率:89% (8/9)
发表于 2020-12-31 20:10:44 | 显示全部楼层 |阅读模式   山西省太原市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
本帖最后由 Mruos 于 2020-12-31 22:11 编辑

bl-mid-proxy,中间件代理端

目前本中间件,主要实现mysql连接池redis连接池crontab任务定时器三大功能。

本中间件实质为一个服务端,通过http请求进行通信,任何编程语言都可以对接

提供简单的SDK(e、python、php、java),其他语言可自行组装http请求进行通讯。

初衷与目的:

  1. mysql数据库的增删改查基本是后端编程的核心代码,占据很大的代码工作量。开发者需要去找寻合适的支持库,在代码中引用支持库,建立与管理连接、特定语言框架还有数据库模型语法等等,对于初学者难于上手;

    本中间件为独立的http服务端,其内部有数据库连接池进行mysql管理,接受http请求执行sql,并返回json数据,方便各语言直接转成适用本语言的对象使用。

    开发者只需要把要执行的sql语句作为参数,发送一个post请求到本中间件即可执行并获得json数据结果。无需去管其他任何与数据库相关的代码,只需要知道日常使用的增删改查的sql语句即可;

  2. redis缓存与mysql同样的道理,开发者只需要知道redis的命令即可,无需去管所在的语言使用什么redis库,怎么引用库,如何操作等等;

  3. 定时器,程序总免不了存在定时执行、周期执行的任务。在以往的编程中,我们可能是创建一个线程来去定时 执行周期事件,或者死循环等等方式,对于一些语言(尤其解释型语言)来说,不当的方式可能代码逻辑上难处理,系统资源占用还高;

    本中间件提供类似Linux的crontab功能,可以通过http去回调周期代码、运行指定程序、执行sql语句等,完成定时执行功能;

优势:

  1. 应用服务端代码不需要再引入和编写比如数据库连接管理类代码,降低工作量。易于初学者上手,比如对于通常使用的数据库增删改查,你只需要知道sql语句怎么写即可;
  2. 便于对接,任何编程语言皆可,只要实现了http请求到本中间件,即可得到结果;
  3. 小巧,相较其他解释型编程语言实现本系列功能,本独立中间件效率更高、系统资源占用小,受环境依赖基本无(windows系统运行即可,无需任何依赖);

劣势:

  1. 因为本中间件通过http通信,而这必然有一个网络传输的过程。如果应用服务端与本中间件在本地同一IP下(同一电脑上)那么这个带来的时间损害极低(建议在一起)。如果是分布式分布,不在同一局域网中,便存在网络的影响,速度受网络条件影响;

  2. 可能存在技术盲区。比如数据库执行查询的sql语句存在字节集字段的,因为sql查询返回的是json数据,无法包含字节集数据,所以字节集字段无法使用(可考虑修改源码,对字节集进行base64成文本添加到返回json中或者以字节集文件形式等);

  3. 大型应用请自行测试本中间件是否够用,本中间件定为小型应用快速成型开发;

权限验证:

整个中间件程序仅有一个IP白名单。所以,终端用户直接与本中间件进行http通讯,将会使比如mysql等面临风险。(当前成品版要求必须有白名单,若自行修改源代码取消白名单限制,请注意风险!)

强烈建议,白名单仅限本机内网或指定IP进行连接。

使用安装:

  1. 下载本中间件;
  2. 启动mysql、redis(不知如何安装mysql、redis等,可通过phpstudy,一键安装启动。);
  3. 运行中间件exe,配置mysql、redis连接信息;
  4. 重启中间件,中间件的mysql与redis连接成功即可(不需要的功能,配置文件关闭即可);
  5. 编写其他程序时,使用SDK(或自己封装post请求)对接本中间件即可;

注意:中间件包含3个示例的定时任务,可以删除。

推荐:

不知如何安装mysql、redis等,可通过phpstudy,一键安装启动。

phpstudy:https://www.xp.cn/

phpstudy1.png

phpstudy2.png

API示例:

sql语句执行示例,其他请参考help文档。

url: /api/mysql     (默认,修改后以修改为准)

method: POST

data:

{
        "sql":"select * from userinfo limit 0,2"
}

success:

{
        "errcode":200,
        "errmsg":"success",
        "data":[                          //  查询语句,将包含data数据结果
        {
            "id":1,
            "name":"小明",
            "age":10
        },
        {
            "id":2,
            "name":"小李",
            "age":14
        }
    ]
}

fail:

{
        "errcode":401,             // sql语句执行错误,返回401
        "errmsg":"1146:Table 'test_db.userinf' doesn't exist"
}
{
        "errcode":501,             // 中间件因为繁忙未能受理
        "errmsg":"server busy."
}

其他api接口,请参考help
help.png

SDK:

提供e、python、php、java的SDK,内容较为简单,仅是封装了请求。其他语言自行参考help的请求方式发送post对接。

  1. e语言

e-sdk.png

  1. python

py-sdk.png

  1. php

php-sdk.png

  1. java

java-sdk.png

感谢:

  • 服务端组件:HPsocket     官网

  • redis:使用的是E2EE的redis同步客户端。   官网

  • crontab:使用的为vSpear所开源贡献的定时器。     主页

关于:

本程序遵从BSD开源协议,谢谢使用与参与改进,丰富功能。有问题欢迎留言,期望大佬们有使用到的不断完善与分享~

Github:https://github.com/Mruos/bl-mid-proxy

Gitee:https://gitee.com/burnlord/bl-mid-proxy

百度云: https://pan.baidu.com/s/1qt-i73s8_rWrx5VmASpMEg 提取码: yjjk

by:Mruos

QQ/wechat:812465371

web:burnlord.com

软件、插件、APP、小程序、网站……,可联系~














补充内容 (2021-1-5 19:53):
HPsocket5.43.ec     mysql连接池模块,请去Github、Gitee里下载

补充内容 (2021-1-18 20:04):
最新版,Github、Gitee更新,请去下载,百d网盘已过期。。。
main-window.png

评分

参与人数 2好评 +1 精币 +4 收起 理由
ghost12 + 1 支持开源~!感谢分享
易语言资源网 + 1 + 3 支持开源~!感谢分享

查看全部评分


结帖率:81% (26/32)

签到天数: 2 天

发表于 2022-5-31 08:01:31 | 显示全部楼层   上海市上海市
欢迎常来帮助新人,谢谢~
回复 支持 反对

使用道具 举报

结帖率:81% (26/32)

签到天数: 2 天

发表于 2022-5-14 12:00:53 | 显示全部楼层   上海市上海市
感谢发布原创作品,精易因你更精彩!
回复 支持 反对

使用道具 举报

结帖率:81% (34/42)
发表于 2021-11-2 22:29:20 | 显示全部楼层   广东省湛江市
学习了,谢谢
回复 支持 反对

使用道具 举报

结帖率:89% (8/9)
 楼主| 发表于 2021-1-18 20:04:19 | 显示全部楼层   山西省太原市
最新版,Github、Gitee更新,请去下载,百d网盘已过期。。。
回复 支持 反对

使用道具 举报

结帖率:89% (8/9)
 楼主| 发表于 2021-1-5 19:53:46 | 显示全部楼层   山西省太原市
土豆拌螃蟹 发表于 2021-1-5 14:29
还差HPsocket和MySql连接池两个EC模块,可以提供一下吗?

HPsocket5.43.ec     mysql连接池模块,请去Github、Gitee里下载
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2021-1-5 14:29:18 | 显示全部楼层   广东省广州市
还差HPsocket和MySql连接池两个EC模块,可以提供一下吗?
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2021-1-3 22:31:03 | 显示全部楼层   北京市北京市
如果再有上传文件和下载文件就完美了!!!
回复 支持 反对

使用道具 举报

结帖率:89% (8/9)
 楼主| 发表于 2020-12-31 21:30:43 | 显示全部楼层   山西省太原市
不苦小和尚 发表于 2020-12-31 21:01
例子都没有吗?至少给个调用例子吧

刚才图片未能上传,现在ok了
回复 支持 反对

使用道具 举报

结帖率:89% (8/9)
 楼主| 发表于 2020-12-31 21:29:06 | 显示全部楼层   山西省太原市
回复 支持 反对

使用道具 举报

结帖率:60% (15/25)

签到天数: 19 天

发表于 2020-12-31 21:01:59 | 显示全部楼层   江苏省苏州市
例子都没有吗?至少给个调用例子吧
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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