开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 30075|回复: 178
收起左侧

[易语言纯源码] 【开源】bl-api-cloud,可扩展轻云服务端框架

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

bl-api-cloud,轻云服务端


为轻量级可扩展的API服务端框架,主要用于响应http请求,开发者可通过开发自己的功能插件(.dll)进行加载以达到扩展。


丨前言


之前发过帖子《【框架】bl-api-cloud,高性能可扩展的API服务器》 https://bbs.125.la/forum.php?mod=viewthread&tid=14191272&extra=

且获得了不少网友的认可,最近几天就行了大的优化、更新,并全部开源出来。




丨用途


为其他程序、应用,提供便捷的http接口搭建功能,开发者从而不再需要使用大型、复杂框架。

(毕竟很多时候为了一个小接口不值得用主流语言的比如java的Spring或python的Flask去搭建服务端)

举个最简单的例子,有时在授权、防破解等应用中,我们需要获取准确的北京时间。一般我们为了方便会通过第三方来获取:

  • 找个提供北京时间的第三方web页面;
  • 写个模块或DLL,提取页面里的北京时间;

弊端:如果第三方页面出现问题,或web页面源码有变动,那么获取就会失败,进而影响了所有使用了此模块/DLL的程序。

其实,很简单,我们让自己的服务器自动同步了时间(一般都默认开启着),然后提供一个http接口即可,用自己的最稳定。

网页_访问 (“http://192.168.1.1:6680/api/sup/bjtime/10”)

我自己使用本框架已应用的领域:

  • 如取北京时间等实用接口;
  • 搭建自己的网络验证系统(用户注册、登录、程序使用授权);
  • 搭建微信公众号后台程序(没错,完全没问题);
  • web页面搭建,只要有能力,你可以搭建出任意页面;(当然搭建企业级或大型复杂些的建议使用主流语言的主流框架,毕竟使用这个费劲死了,需要自己建设的方面太多)



丨特色


1、通讯组件使用的为HPsocket,强大、稳定

HP-Socket,是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统。

其Server 组件:基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,支持超大规模、高并发通信场景。

应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。
   

2、双服务端支持(http、https)

服务端启动端口自定义,默认http服务端80端口,https服务端443。当然本框架出发定性小众领域使用,可以设置其他端口,以免占用重要的web框架接口。



3、扩展便捷

扩展(插件)为DLL文件,只需放入根目录下的/plugins即可。DLL支持热加载与释放,无需终止服务端主程序即可进行DLL更新。

开发模板简单,一目了然,因为全部开源,开发者依然可以自主向插件传递更多可操作的主程序指针(通常模板自带功能足够使用了)。
每个插件都有自己的http访问请求处理域且可以是多个,插件之间不会互相冲突;

在两个示例demo中,对于/api/sup/bjtime根址的http请求,服务端只push到了bjtime.dll插件,对于/web的http请求,服务端只push到了web-demo.dll插件。


提供有2个扩展开发模板demo:

(1)bjtime

示例如何返回Get请求,功能性代码不足20行即可实现;



(2)web-demo

示例web页面返回,提供Get静态web目录文件回执和向服务端Post数据处理示例;

1、访问页面(http与https)



2、post数据



4、集成实用便捷功能

自带集成多色日志输出、debug消息模式、访问频率保护等功能;

(1)多色日志输出

主程序的日志消息窗口,可以对应不同的日志显示不同的颜色,方便开发者一目了然的找到查看消息。如:

灰色(gray)的为debug消息;
红色(red)的为异常或错误信息;
绿色(green)的为收到的事件;
黄色(yellow)为重要系统消息;

当然可以自己设置其他颜色,以及如何输出。

注意: 多色输出使用的是超级编辑框组件,在高并发下是否对程序效率影响有待考证(组件可能拖累程序),请自行进行取舍、替换。


(2)日志记录

主程序集成一个简单日志记录模块,主程序运行每一次运行后都会在/log目录创建一个日志文件(名称以运行开始时间-运行结束时间.txt为名,方便开发者查找时段消息)。

开发者也可以在自己开发的插件中加入独立的日志记录。


(3)debug消息模式

主程序启动后通过输入sys debug on、sys debug off可开关debug模式,在debug模式下,会输出显示更多的日志消息(修改主程序文件可以自己定义显示什么内容为debug类型的消息),以便于程序调试。

(4)访问频率保护

主程序自带了一个频率保护功能,可以自行设置频率。如对于同一IP的访问限制在最近n秒内不可以超过i次。此功能用的自己简单设计的一个Belt模型,小众使用足够,高度使用下,开发者可根据实际需求决定是否自己去设计类似功能。

5、心跳包异常监测

为了应对服务端布局在云服务器上异常退出的情形,用户可以通过发送Get心跳包的请求来确认服务端运行状态,发生异常可重启它。本框架目录下有个示例demo。

用户可以自己设置心跳包地址,默认/api/this/heart



6、web服务端

可以用于构建简单web页面,与web页面交互,理论上只要你精通web前端及后端处理逻辑,可以搭建(不过有这能力肯定不是用易语言搭建了)。

示例开发demo(plug-demo-web.e)提供了一个示例参考,可以搭建web页面,当然专业web设计等请移步使用主流语言的成熟框架。

参考上面图片。


7、命令行式操作

最大化简化了服务端的UI界面(毕竟后端的东西),提供命令行式命令输入操作,除了系统前缀的命令,其他可推送到每个插件;

开发者可以在自己的插件里获取主程序输入的命令,然后进行相关处理。


8、开发难度低

完整开源,包含主程序在内上手难度极低,代码注释齐全,结构明晰;也可以作为网络应用、DLL插件类型热加载释放等学习参考项目。




丨使用协议


本框架遵从BSD开源协议

可以任意使用本框架及代码进行二次开发,开发后产品可以闭源,开发源码主文件需要注释版权引用说明;
不可以使用本框架作者信息进行推广、营销;


丨下载



Github:https://github.com/Mruos/bl-api-cloud

百度云:https://pan.baidu.com/s/1TBIpAHSv6sV2B7rO-fNEzg


丨案例贴图


1、微信公众号后台程序





2、网络验证系统,用户登录


丨其他


by: Mruos

QQ/微信: 812465371

QQ群: 465021903

web: www.burnlord.com

使用问题、建议、Bug反馈,跟踪更新等欢迎加群交流~

本程序依然存在不足之处,欢迎各大佬批评、指出,一起完善。




丨支持一下,给个打赏~






评分

参与人数 20好评 +18 精币 +31 收起 理由
烫了个发 + 1 感谢分享,很给力!~
Qmoon + 1 支持开源~!感谢分享
位与 + 1 + 1 支持开源~!感谢分享
idomine + 1 + 2 支持开源~!感谢分享
丿Mrs°戮默 + 1 + 2 支持开源~!感谢分享
xiexiecm + 1 + 2 支持开源~!感谢分享
单色 + 1 + 2 感谢分享,很给力!~
louxu163 + 1 支持开源~!感谢分享
为了生活 + 1 + 2 新技能已get√
zlw310282 + 1 + 2 支持开源~!感谢分享
Hooksafe + 1 + 2 支持开源~!感谢分享
LovelyA72 + 1 支持开源~!感谢分享
116154801 + 1 支持开源~!感谢分享
以小兵 + 1 + 2 支持开源~!感谢分享
六升臣 + 1 + 2 感谢分享,很给力!~
已注销482053 + 1 + 2 支持开源~!感谢分享
怪兽叔叔 + 1 + 2 支持开源~!感谢分享
Joniak + 1 + 2 感谢发布原创作品,精易因你更精彩!
static101 + 1 + 2 支持开源~!感谢分享
jxxypxh + 1 + 2 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

结帖率:70% (7/10)
发表于 2021-11-10 16:17:16 | 显示全部楼层   广东省惠州市
BSD开源协yi是一个给于使用者很大自由的协yi。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协yi的代码,或者以BSD协yi代码为基础做二次开发自己的产品时,需要满足三个条件:

如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协yi。
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协yi。
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
回复 支持 反对

使用道具 举报

结帖率:100% (55/55)

签到天数: 1 天

发表于 2021-3-15 03:39:11 | 显示全部楼层   浙江省绍兴市
回复 支持 反对

使用道具 举报

结帖率:91% (192/212)

签到天数: 14 天

发表于 2021-3-12 18:13:44 | 显示全部楼层   福建省漳州市
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 9 天

发表于 2020-3-2 03:49:37 | 显示全部楼层   山东省菏泽市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2020-2-26 12:03:20 | 显示全部楼层   甘肃省兰州市
下载地址断了
回复 支持 反对

使用道具 举报

结帖率:22% (2/9)
发表于 2020-2-14 22:23:28 | 显示全部楼层   广东省中山市
回复 支持 反对

使用道具 举报

结帖率:22% (2/9)
发表于 2020-2-14 22:22:55 | 显示全部楼层   广东省中山市
不错,收藏了
回复 支持 反对

使用道具 举报

结帖率:22% (2/9)

签到天数: 7 天

发表于 2019-12-27 10:21:13 | 显示全部楼层   广东省汕头市
怎么下现在都搞这呢
回复 支持 反对

使用道具 举报

结帖率:50% (2/4)

签到天数: 1 天

发表于 2019-10-14 16:28:20 | 显示全部楼层   山东省济南市
先试试好用回来打赏
回复 支持 反对

使用道具 举报

结帖率:100% (21/21)
发表于 2019-7-3 18:28:57 | 显示全部楼层   河南省郑州市
易(wo)语(xiang)言(yao)的(jing)发(bi)展
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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