经过前几天的努力,已经完成了“保证支持库的向下兼容性”的处理,并通过了初步测试。
为什么要保证“支持库的向下兼容性”呢?不保证支持库向下兼容性会有什么后果呢?具体原因又有什么呢?采取什么方案应对呢?这都是值得我们探讨和解决的问题。
不保证支持库向下兼容性的后果
我们开发的一个易语言支持库,发布了版本1.0,后来升级为2.0,如果2.0版本和1.0版本不兼容,将导致以下结果:
- 使用1.0版本支持库编写的易语言源程序,打开后一片混乱,无法编译
- 使用1.0版本支持库编译的易语言可执行程序,无法正常运行
导致支持库不向下兼容的原因
通过易语言支持库开发手册,我们知道,支持库中的所有命令和方法定义信息都集中依次存储在一个连续的内存块中(命令/方法信息定义数组),它们的相对位置非常重要;而在易语言源代码文件和易语言编译出的EXE文件中,记录的正是命令或方法在该内存块中的索引位置。在支持库升级时,如果不小心在该命令/方法信息定义数组中间插入了一个或多个命令或方法,必然导致后面的命令或方法的索引位置发生变化。最终的结果是,易语言源程序或EXE程序中本来记录的是命令或方法A的索引,支持库升级后,该索引却指向了命令或方法B。支持库不再向下兼容的现象,就这样发生了。
数据类型信息的定义,也存在相似的问题。
修改命令或方法的参数定义信息,或修改数据类型的成员定义信息,以及其它等等,都可能导致影响支持库的向下兼容性,但这并不是很大的问题,只要支持库开发者稍加留意即可避免。
如何保证支持库向下兼容
简单的说,就是只在命令或方法定义信息数组的最后添加新的命令或方法,只在数据类型地的定义信息数组的最后添加新的数据类型。
使用C/C++或汇编开发易语言支持库时,之所以没有特别提出“保证支持库兼容性”问题,是因为开发太底层,所有这些细节都由支持库开发者来保证,保证不了就是开发者的责任。而使用“易写易库(EXEK)”开发易语言支持库时,因为进行了更高层次上的封装,例如把每个数据类型的方法都分别定义在一起而又保持逻辑上的独立,必须进行这方面的处理。
解决方案
我最终采取的解决方案是,在定义时为每个方法或命令指定一个整数型“版本号”,在最终生成支持库定义信息时,对所有版本号进行排序,按从小到大的顺序依次添加到信息定义数组中。这来,在升级支持库时,只要开发者提供比上次更大一些的版本号,即可保证支持库向下兼容性。在实践中,该“版本号”可以采用“年月日时”的格式,如:2008080820,无需再记忆其它附加信息。
分享到:
相关推荐
易语言源码易写易库梦优勿扰版源码.rar 易语言源码易写易库梦优勿扰版源码.rar 易语言源码易写易库梦优勿扰版源码.rar 易语言源码易写易库梦优勿扰版源码.rar 易语言源码易写易库梦优勿扰版源码.rar 易语言源码...
易写易库梦优勿扰版源码.zip
易写易库(EXEK)用户手册,版本0.2,2008.10.31,PDF格式。主要内容:介绍使用易语言模块“易写易库(EXEK)”开发易语言支持库。更多信息:http://blog.csdn.net/liigo/category/445859.aspx
主要介绍如何在易语言中使用“易写易库(EXEK)”模块开发易语言支持库。
易写易库模块封装版ekmk.zip
教你傻瓜式编写易语言的支持库 小刀易写易库教程
读易库到超级列表框1.0.rar 读易库到超级列表框1.0.rar 读易库到超级列表框1.0.rar 读易库到超级列表框1.0.rar 读易库到超级列表框1.0.rar 读易库到超级列表框1.0.rar
最简单的开源易写易库,分分钟钟搞定支持库开发,使用易语言开发支持库,让开发支持库不在成为难题
易语言我吃了作品。 先看test.e里的 再看ctrlib.e里的 test.e 里增加了几个简单的命令,方便大家进一步了解如何获取传过来的参数 ctrlib.e 则写了几个控件来展示如何编写支持库控件,基本上演示了支持库控件的所有...
易语言源码易库转到Access数据库模块.rar 易语言源码易库转到Access数据库模块.rar 易语言源码易库转到Access数据库模块.rar 易语言源码易库转到Access数据库模块.rar 易语言源码易库转到Access数据库模块.rar ...
完整版读易库到超级列表框1.0.rar
易语言易写易库梦优勿扰版源码,易写易库梦优勿扰版,Dll入口函数,GetNewInf,ExekLib_ProcessNotifyLib,全部改C调用方式,建立命令分类,建立命令信息,建立数据类型,建立窗口组件,建立常量信息,命令分类_添加,生成_命令...
易库转到Access数据库模块.zip易语言项目例子源码下载易库转到Access数据库模块.zip易语言项目例子源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业设计参考 3.适合小团队开发项目参考
读易库到超级列表框1.0.zip易语言程序源码资源下载读易库到超级列表框1.0.zip易语言程序源码资源下载 1.适合学生做毕业设计用 2.适合程序员学习研究用 3.适合新手自学研究使用
易写易库模块化封装,里面有模块源码和测试例程。这不是简单的封装,重点是实现了类模块跟易库的“类”、“组件”的对接。并对组件接口函数进行了智能化处理。源码改变自“易语言我吃了”的模板,通过本模块的封装,...
本易写易库由梦优勿扰个人完成,部分内容参考网络。 特别鸣谢:易语言 我吃了的例程、易语言支持库开发手册、云外归鸟易编支持库所提供的返回程序集命令、以及学易不精提供帮助。 本源码中封装了几乎易语言支持库...
易语言源码易语言写易库简化例程源码.rar
易语言模块易库浏览编辑器模块.rar 易语言模块易库浏览编辑器模块.rar 易语言模块易库浏览编辑器模块.rar 易语言模块易库浏览编辑器模块.rar 易语言模块易库浏览编辑器模块.rar 易语言模块易库浏览编辑器模块....