易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

bl-mid-proxy,中间件   [复制链接]

    2021-01-07 10:41:47
    高级教程源码
    易语言资源网
    2763 次浏览
    来源链接

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/

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

SDK:

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

  1. e语言

  1. python

  1. php

  1. java

感谢:

  • 服务端组件: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



点我下载 (已有 63 次下载)

引用模块


源码文件名 模块文件名
crontab-run-demo.e
精易模块.ec
Crontab模块v1.2.e
zyJsonValue.ec
Logging.e
精易模块.ec
packMap.e
HashMap.ec
精易模块.ec
redisClientPool.e
精易模块.ec
完成端口.ec
倒计时提示框.e
精易模块.ec
bl-mid-proxy-sdk.e
zyJsonValue.ec
精易模块.ec
bl-mid-proxy.e
bl异常处理.ec
HPSocket For E 5.4.3.ec
log class.ec
MySql连接池.ec
zyJsonValue.ec
精易模块.ec
倒计时提示框.ec
packMap.ec
Crontab 定时任务工作.ec
redisClientPool.ec


引用支持库


源码文件名 支持库文件名 支持库标识
crontab-run-demo.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
Crontab模块v1.2.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0
应用接口支持库 3.1 F7FC1AE45C5C4758AF03EF19F18A395D
Logging.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
多线程支持库 2.0 5F99C1642A2F4e03850721B4F5D7C3F8
packMap.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
多线程支持库 2.0 5F99C1642A2F4e03850721B4F5D7C3F8
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0
redisClientPool.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
E2EE互联网服务器套件2.7.2 2.0 AA50CDD5A14C4C5DB81BAE05DE4DDE6D
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0
zyJson2.2.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
倒计时提示框.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
扩展界面支持库一 2.0 27bb20fdd3e145e4bee3db39ddd6e64c
bl-mid-proxy-sdk.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
bl-mid-proxy.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
XP风格界面库 2.0 7F54B9CE8887428dBA9CEEB94CEF4C72
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0
应用接口支持库 3.1 F7FC1AE45C5C4758AF03EF19F18A395D
扩展界面支持库一 2.0 27bb20fdd3e145e4bee3db39ddd6e64c
超文本浏览框支持库 2.2 5014D8FA6DCA40b68FA626D8183666EB
操作系统界面功能支持库 3.0 52F260023059454187AF826A3C07AF2A


[错误报告]   上一篇:模拟csgo开箱     下一篇:【苏汉UI】第二期:元旦特供!支持韩文的...