百宝云论坛

 找回密码
 立即注册
查看: 930|回复: 2

百宝云支持动态加载源文件啦

[复制链接]

92

主题

197

帖子

2012

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2012
发表于 2016-7-29 16:32:04 | 显示全部楼层 |阅读模式
应用中心已经发布已经告一段落
百宝云的工程师们再次发力让云应用支持源码文件的动态加载并调用内部方法,可能大家有点不是太明白没关系接下来听我静静道来
首先我们来看下
本次更新的三个功能函数

加载源文件(源文件路径,错误信息)

把源码文件加载到内存到当中,可以理解成window系统下的loadlibrary一样的作用
源文件路径:就是源码文件所在的位置,源码文件可以存放在云应用的文件目录,资源目录,全局文件目录三个位置中,在这里要注意,源码文件不能在云应用的源码目录,因为放在这个目录没有意义,只有重启云应用才能加载调用
错误信息:加载文件功能函数执行失败的时候,此参数会返回详细的错误说明
返回值
功能函数返回文件加载成功后的句柄,如果句柄为0,表示加载源码文件失败,需要检查一下源码中是否有语法错误

执行功能(句柄,功能名称,返回结果,...)
通过源码文件的句柄,执行源码文件中对应的
功能函数,并得到返回结果,用过TC的同学应该知道dllcall,此功能函数与dllcall方式接近
句柄:通过 加载源文件
功能函数得到的文件句柄
返回结果:源码文件中对应的
功能函数,执行完成后,通过 return 方式返回的功能函数结果
...:源码文件中
功能函数的的实际参数列表

释放执行句柄(句柄)
最后大家一家要记住,长时间不使用的时候,一定要调用  释放执行句柄 来释放

看下面举列,讲解几种比较常见的情况调用方式
1、传统方式
源文件
功能函数
  1. 功能 fun1(a,b)
  2.     返回 a+b
  3. 结束
复制代码
功能函数调用方式
  1. 变量 result
  2. 执行功能(1,"fun1",result,10,20)
复制代码
2、参数引用传值
源文件
功能函数
  1. 功能 fun1(a,&b)
  2.     变量 tmp = b
  3.     b = 200
  4.     返回 a+tmp
  5. 结束
复制代码
调用方式
  1. 变量 result,b = 20
  2. 执行功能(1,"fun1",result,10,b)  //这里我们的参数 b使用的是引用传值的方式,所以参数必须定义为变量
  3. //10,b 对应源码功能函数中的参数 a,b
  4. //result 的执行结果是210,参数b的结果是200
  5. //不明白的同学,赶紧复制实例,运行查看一下执行效果
复制代码

3、默认参数
源文件功能函数
  1. 功能 fun1(a,b = 50)
  2.     返回 a+b
  3. 结束
复制代码
调用方式
  1. 变量 result
  2. 执行功能(1,"fun1",result,10)
  3. //10 对应源码功能函数中的参数a,参数b在功能函数原型中,使用的默认值50,在这里参数可以直接为空
  4. //result 执行结果是60
  5. //不明白的同学,赶紧复制实例,运行查看一下执行效果
复制代码
4、调用参数与功能函数原型参数不对应
源文件功能函数

  1. 功能 fun1(a,b = 50)
  2.     返回 a+b
  3. 结束
复制代码
调用方式
  1. //调用方式1
  2. 变量 result
  3. 执行功能(1,"fun1",result)
  4. //本示例中,没有填写任何参数,但是这并不影响功能函数的正常执行功能函数内部已经做过异常优化,如果你没有填写对应的参数,那个参数的内容以默认值为0来进行处理
  5. //result 执行结果是 50

  6. //调用方式2
  7. 变量 result
  8. 执行功能(1,"fun1",result,10,20,30)
  9. //示例中的参数超过了,功能函数原型的参数中的数量,但是这并不影响功能函数的正常执行功能函数内部已经做过异常优化,如果出函数原型部分的参数,都为无效参数,功能不会做任何处理
  10. //result 执行结果是 30
  11. //不明白的同学,赶紧复制实例,运行查看一下执行效果
复制代码

执行功能函数 几种常规的参数调用方式在这里就讲解完了



下面以简单实例为大家介绍 加载源文件、执行功能、释放执行句柄的具体使用

1、创建一个外部源码文件
1.png

2、封装调用外面源码文件的功能函数,封装好了以后,外部源码的
功能函数实现可以随意修改,修改会实时影响返回值的结果,云应用中的代码并不需要做任何改动或者重启云应用
2.png

3、演示效果,简单加密 _commoninterface 返回值的内容
4.png

4、客户端结果,当云应用的外部源码文件 自定义算法.t 文件中的
功能函数实现做任何改动,可以直接影响客户端得到的结果
5.png


从上面 动态定义加密算法示例 的演示 , 大家可以联想到更多的应用场景
例如
百宝云功能的热更新(热更新,在不重启云应用的情况下直接更新功能)
动态自定义百宝云执行逻辑等等功能
更多的应用场景需要大家多多发掘

同时,再次感谢工程师,为我们新增了一个如此强大的功能


演示代码下载
云端代码下载: 动态定义加密算法示例_百宝云.rar (1.42 KB, 下载次数: 59)
回复

使用道具 举报

0

主题

14

帖子

208

积分

钢铁侠

Rank: 3Rank: 3

积分
208
发表于 2016-7-29 20:50:42 | 显示全部楼层
支持支持
很强大
适合平时调试云应用用 很方便
回复 支持 反对

使用道具 举报

0

主题

13

帖子

229

积分

钢铁侠

Rank: 3Rank: 3

积分
229
发表于 2016-7-29 22:04:34 | 显示全部楼层
把TLL也给捎上
回复 支持 反对

使用道具 举报

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

本版积分规则

技术支持
关闭
售后
在线客服
QQ群:309604797
在线客服

小黑屋|百宝云论坛 ( 湘ICP备15007281号-2 )

GMT+8, 2018-9-25 14:10

Powered by bby! X3.4

© 2015-2018 baibaoyun

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