2023年11月26日发(作者:)
李青森何丕廉董旭源
, ,
()
天津大学电信学院计算机系天津
, 300072
摘 要版本控制与版本的自动更新功能对于系统的开发和维护有着十分重要的意义和
: M IS
作用。 该文介绍了利用 提供的技术实现版本控制、维护以及自动更新。 详细介绍了
Pow e r B u ilde r
设计与实现的思想对大型数据库系统的维护与升级提供了一个好的解决方案。
, M IS ,
关键词管理信息系统版本控制版本更新大型数据库
: Pow e r B u ilde r; ; ; ;
中图分类号文献标识码
: T P 311. 11 : A
文章编号
: 1002- 2279 200401- 0030- 04
()
D e s ig n a nd R e a liza t io n o f S o f tw a re S y s tem V e rs io n A u to U p d a te
-
L I Q in gsen H E P ilian DON G X u yu an
- , - , -
(, 300072, )
T h e E lec t ron I nf orm a t ion E ng inee r ing I ns t itu te of T ianj in U n iv e rs ity C h ina
A bstra c tV e r sio n co n t ro l an d ve r sio n au to up da te ac t an im po r tan t ro le in M IS deve lopm en t
: -
an d m a in ten an ceT h is p ap e r in t ro du ce s how to u se PB tech n iqu e s to rea lize ve r sio n co n t ro l an d
.
au to up da te an d in t ro du ce s it s de sign an d op e ra t io n in de ta ilan d th a t p ro v ide s a p rac t ica l p lan
- ,
fo r m a in ten an ce an d up da te o f M IS b a sed o n la rgesca le da tab a se
- .
Key word sPow e r B u ilde rM ISV e r sio n Co n t ro lV e r sio n U p da teL a rgeSca le D a tab a se
: ; ; ; ; -
1
引言
Pow e rB u ilde r PB
( ) PB
以下简称 作 为 一 种 可 视 化
的、面向对象的数据库前端开发工具已经被很多数
,
如果 系统能够自动进行版本检测与版本
M IS
更新功能那么将给用户和开发方都带来极大的方
,
便。 该 文 就
如 何 在 基 于 大 型 数 据 库 以
(
O RA CL E M IS
为例的 系统中实现版本检测与版
)
本自动更新功能做一简单介绍。 据库应用开发人员所认可在客户机/服务器应用市
,
场 上一直处于领先地位特别是在 管理信息
, (
M IS
系统的开发中得到了广泛的使用。
)
在系统的开发和使用当中由于系统的复
M IS
,
杂性以及开发和测试过程中的疏漏系统中的有些
,
错误是需要经过一段时间的使用之后才能发现的
;
而且在经过一段时间的使用后用户可能会提出新
,
的需求甚至用户的一些业务流程也可能发生变化。
,
因此整个系统不可避免的要经过数次修改和
,
M IS
补充也就是版本的更新。
,
如果开发方对系统的客户端软件进行了修改和
补充也就是系统的版本发生了改变那么就要对客
, ,
户端软件进行更新。通常情况下都由开发方的客户
,
服务人员带着安装盘到客户端对软件进行更新或 更新表 包含字段为
; , (
者由开发方在某个服务器上发布新版本的软件让 代 码如 、版 本 号、模
, , m is2003b u ildno m o du le
客户下载。但是专用的系统安装时往往要设置 块文件名称、升级时间、
M IS up da tet im e a llow m a rk
一些参数对于一些不太熟悉计算机操作的客户来
,
讲可能相对会有一些困难而且往往客户端数量很
,
庞大如果要开发方亲自对每一个客户端的软件进
, )
行版本更新的话势必增加开发方的负担。
, app id b u ildno
2
基本原理
使用 可以将应用程序编译成动态库的形式
PB
—— 包括 和 动态库的概念与
PBD DL L W in dow s
,
动态库的概念十分相似动态库中包含了相应
,
PB
库文件中所有编译好的代码。将系统划分成几
M IS
个模块每一个模块对应于一个 应用库文件不
, ,
PB
但容易划分应用程序方便了应用程序的管理工作
, ,
而且增加了系统的可维护性开发人员修改了应用
,
程序的某些功能后无须重新发行整个应用程序或其
他文件只需分发包含该功能的动态库即可。
,
在 的服务器数据库中创建一个系统模块
M IS
sy sup da teapp id
_ _
应用系统
)( )(
_
)()
_ _
()( ,
备 注 说 明、类 型已 二 进 制 形 式
m o du lef ile b lo b
( , 1)
是 否 允 许 使 用 的 标 志如“”表 示 允 许、
rem a rk
存储实际的对应该模块的动态库文件。其中关键字
为 和 。
_ _
李青森
( )
1975- , , , , :
男辽宁本溪人硕士研究生主研方向人工智能。
收稿日期
: 2003- 04- 04
当开发人员修改了对应某个模块的库文件后
,
例如学期计划模块 则由系统管理人员控 分存入 中
p land llb lo b tem p
. ,
制在 表中增加一条记录对应每一个字
sy sup da te
_
,
段的具体内容分别为“”、“”、“
m is2003000016p lan.
、“”、“”、“修改了学期 ”/累 积 到 /
2003- 01- 01 00: 00: 001= +
d ll lb to tb lb to tb b lo b tem p
执行计划的打印功能”。在字段以二进制
m o du lef ile
/每 次 读 入 部/
FO R lico u n te r to liloop s
_ _
= 1
_
llb y te sread F ileR ead lif ilen um b lo b
_ _ _ _
= ( ,
tem p
)
_ _ _ _ _
形式存储 文件。其中版本号 字段
p lan. d ll b u ildno
_
的值是由 表中对应应用系统代码的最
sy sup da te
_
大版本号再增一取得的。 如原来对应 的最
m is
2003
大版本号是“”则本次增加记录的版本号是
000015,
“”。
000016
在客户端首次安装完软件后需要在客户端计
,
算 机 的 注 册 表 中 存 储 系 统 的 安 装 信 息例 如 在
,
H K E Y L O CA L M A CH IN E So f tw a re
_ _
天大软件
m isL o ca t io n B u ild (2)
2003 "" "" ,
下建 立 字 串和分 别 存
lb to tb
_ _
lln ew po s = lln ew po s + llb y te sread
_ _ _ _ _ _
//
得到下一次文件读入位置
F ileSeek lilln ew
(
_ _ _
f ilen um , po s,
FROM B E G IN N IN G!
)
//移动文件指针到下一个邻接的读入位置
,
N EX T
5, F ileC lo se lif ilen um
) ( )
关闭文件
_
6,
)
返回该文件的二进制对象
re tu rn lb to tb
_ _
将某个库文件读入到一个大二进制 的
b lo b
储客户端应用程序的安装路径和当前版本号。
当用户成功连接到数据库后首先在本机注册
,
表中取得此系统的当前版本号然后检索
M IS sy s
,
_
up da te in t re t
表对应此系统的记录中是否存在比当前
变量 。
lb b lo b
_
st r in g lsp a th lsn am e
_ _
,
b lo b lb b lo b
_
re t Ge tF ileO p enN am e ls
= (" " ,
选择程序文件
_
版本号更大的记录如果存在则将这些记录对应的
, ,
库文件从 字段中读取出来保存在客户
m o du lef ile
,
端应用程序的安装路径下。 这样就实现了版本的自
动更新而且对用户来说完全是透明的。
,
p a th lsn am ed llPow e rb u ild R u n t im e f ile s
, , " " , "
_
(. ) , . , , . " )
3 3 3
PBD d llex eex e
lsp a th
_
IF re t T H EN
= 1
//得到要上载的动态库文件的 路 径 和 文 件 名
3
版本自动更新的实现方法
主要有两部分。 ①管理员将修改后的动态库文
件存入 表②用户进入主程序前的版
sy sup da te
_ ;
本检测与更新。
3. 1
动态库文件的上载
()
1fen d if
需 要 声 明 一 个 全 局 函 数
_
readf ileto
_ _ _
b lo b st r in g a rf ilen am e, ( 3)
( )
_
功能为读入指定的文件 将 存入数据库 表对应
/读 /
lb b lo b freadf ileto b lo b lsp a th
_ _ _ _ _ _
= ( )
入库文件到 中
lb b lo b
_
e lse
re tu rn
lb b lo b sy sup da te
_ _
到一个大二进制对象当中。 参数 为要
a rf ilen am e
_
转换成二进制对象的文件路径和文件名返回值为
, up da teb lo b app
一个二进制对象。 下面简单介绍一下此函数的实现
方法
:
1 llf ile len , st r ing lsbu ildno
) llf ile len = = " 000016"
得 到 文 件 的 长 度
_ _ _
_
f ile len g th a rf ilen am e U PDA T EBLOB A P P M ANA GER SYS
()" ". "
_ _ _
2liloop sU PDA T E
) "
确定读入文件需要的次数 。 因为在
_
w in dow s ll
系 统 每 次 读 入 字 节所 以 如 果
32765 , SE T A P P M ANA GER SYSU PDA T E
_
_ _
f ile len liloop s llf ile len M ODU L E F IL E lbb lo b
能 被 整 除则 /
32765 , = " = :
_ _ _
32765; = 32765+ 1 W H ER E A P P M ANA GER SYSU PDA T E
否则 /。
liloop s llf ile len
_ _
3 ) , BU ILD NO " : lsbu ildno and A P P M ANA GER.
以 形式读 入 文 件得 到 文 件 句
st reamm o de
的记录当中。数据库支持存储大二进制对
O RA CL E
象需要用到 语句假设用户名为
, ,
_
m an age r, g sapp id ,
全局变量 存储应用系统代码
_ _
如
"2003":
m is
" ". " ". "
" ". " ". "
_ _
SYSU PDA T E. A P P ID = : g sapp id;
_ _ _ _
_ _ _ _
=
柄
lif ilen um lif ilen um F ileO p en a rf ilen am e
_ _ _
, = ( ,
ST R EAM M OD E R EA D L O C KR EA D up da teb lo b sq lco de
! , ! , ! ):
4
)
循环读入文件
//注意命令无法用 来判断是否成
功需要用 来判断
,
sq ln row s
end if
3. 2 new syn tax
用户程序的版本检测与更新
声 明 一 个 全 局 函 数 来 实 现 此 功
fup g rade
_
( )
能返回值表示更新成功表示无可用升级信
, : 1 , 0
息表示升级失败。 具体实现如下
, - 1 :
模块的多个版本的问题。
_
= SQL CA. Syn taxF rom SQL new sq l,
(
_
’S ty le T yp e= G r id’, e r ro rsyn taxf rom SQL
() )
_
//取得生成 的语句
da ta sto re
IF L en e r ro rsyn taxf rom SQL TH EN
() > 0
_
m e ssagebo x ’ ’, ’ -
(
警告 模块升级操作
生成数据存储
错误
’ e r ro rsyn taxf rom SQL
+ )
_
EL SE
d snew. C rea te new syn tax, e r ro rcrea te(
_ _ _
( )
//生 成 数
( )
1
从注册表里面取得程序安装位置和当前版
本号。
S t r ing lsp a th lsbu ildno lsm o du le
_ _ _ _
, ,
R eg ist ryGe t H KE YLO CAL M A CH IN E
"
_ _
So f tw a re
天 大 软 件
m isL o ca t io n R egS t r ing
2003 " , " " , ! ,
lsp a th () > 0
_
)
R eg ist ryGe t ( H KE YLO CAL M A CH IN E
"
_ _
So f tw a re
天 大 软 件
m isB u ild R egS t r ingls
2003" , " " , ! ,
_
bu ildno
_
)
据存储
d snew
_
IF L en e r ro rcrea teTH EN
_
m e ssagebo x ’ ’, ’ -
(
警告 模块升级操作
生成数据存储
错误
’ e r ro rcrea te
+ )
_
END IF
END IF
d snewSe tT ran sO b ject SQL CA
_
. ()
lo ng llrow co un t
_
llrow co un t = d snew. R e t r ieve
_ _
( )
//取得检索出的记
//判断从注册表里面取出的系统路径在文件系
统里面是否存在
boo lean lb ex ist
_
lb ex ist F ileE x ist s lsp a th
_ _
= ( )
IF no t lb ex ist T H EN
_
M e ssageBo x
( " " , " ,3d sn ew
失败系统文件路径被改变根据数据存储
无法自动更新系统 ~ 建议重新安装系统
r
"
)sy sup da te m o du lef ile
re tu rn
- 1
EN D IF
() in t lii
2
取得需要升级的记录。这里用一个动态生成
录数
( )
_
中检索出的所有待
升级的记录依次从 表中的
,
_
字段读出动态库文件的二进制形式到 变量
b lo b lb
_
b lo b
中然后将升级文件写到相应目录中。
,
_
b lo b lbb lo b
_
FO R lii TO llrow co un t
_ _
= 1
lsbu ildno d snewo b jectbu ildno lii ,
_ _ _ _ _
= . . [ ]
lsm o du le d snewo b jectm o du le lii st r ing new sq lnew syn tax
_ _ _ _ _
= . . [ ],
的数据存储 来从 表中检索出
da ta sto re sy sup da te
_
满足升级条件的记录。
st r ing e r ro rsyn taxf rom SQL e r ro rcrea te
_ _
da ta sto re d snew
_
d snew crea te da ta sto re SEL EC TBLOB A P P M ANA GER SYS
_ _ _
= " ". "
new sq lSEL EC T M A X A P P M ANA GERSYS
_ _ _
= " (. U PDA T E ". "M ODU L E F IL E " IN TO : lbb lo b
U PDA T EBU ILD NO BU ILD NO A P P M ANA GER
. ) , .
_ _ _
SYSU PDA T EM ODU L E &
_
. "
+ " . "
FROM A P P M ANA GERSYSU PDA T E &
_ _
+ " . . A P P M ANA GERSYSU PDA T E M ODU L E
W H ER E A P P M ANA GERSYSU PDA T E
_ _
BU ILD NO ’lsbu ildno ’& lsm o du le and
_ _ _ _
> " + + " " :
+ " . . . . = :
AND A P P M ANA GERSYSU PDA T EA P P A P P M ANA GERSYSU PDA T EA P P ID g s
_ _ _ _ _ _ _
ID ’g sapp id ’&
= " + + " " app id
_ _
+ " AND A P P M ANA GER. SYSU PDA T E. M ODU L E F IL E
_ _
ALLOW M A R K = ’1’ " + &
_
+ " "
GROU P B Y M ODU L E O RD ER B Y BU ILD NO
_
//依次取得每条待升级记录的版本号和模块文件名
_
FROM A P P M ANA GER SYSU PDA T E
"". " "
_ _
W H ER E A P P M ANA GERSYSU PDA T E
_ _
. " ". "
BU ILD NO lsbu ildno and
_ _ _
" = :
_ _
. " ". "" =
_
;
//从字段中读取升级文件到大二进制
对象 并将升级文件写到相应目录中
lbb lo b
_
fup g radelo ca lf ile lsb lo b , lsp a th + ’+ ls
_ _ _ _ _ _
(
’
m o du le
)
N EX T
//为 从 表 中 检 索 出 满 足
n ew sq l sy sup da te
_ _
升级条件记录的 语句。 其中 条件为此系
sq l w h e re
统中大于当前版本号且允许下载的被更新的模块文
//在注册表中记载最大版本号因为 按版本号
,
d snew
_
排序所以最后一条记录的版本号是 表中最大
,
sy sup da te
_
版本号
R eg ist rySe t " H KE YLO CAL M A CH IN E tem p B lo bM id a rb lo b po sit io n size
( = (, , )
_ _ _
So f tw a rem isB u ild R egS t r ing
天大软件
2003" , "" , ! ,ls
_
bu ildno F ileW r ite f ilenum , tem p tem p
_
)()
size = leng th - po sit io n + 1
end if
/每次写入 /
的数据存入 变量中
tem p
//将 写入文件中
po sit io n po sit io n size re tu rn
= + 1
loop un t il po sit io n leng th
>
F ileC lo se f ilenum f ilenam ea rb lo b
()) ,
re tu rn
1
其 中
fup g radelo ca lf ile b lo b a rb lo b st r ing a r
_ _ _ _ _
( ,
为全局函数功能是将一个大二进制对象
_
写入一个指定的文件 中。 简单介绍如下
a rf ilenam e
_
:
b lo b tem p
in tege r f ilenum
lo ng leng th po sit io n size
, = 1,
f ilenum = (
F ileO p en a rf ilenam e, S t reamM o de! ,
_
W r ite! , L o ckW r ite! , R ep lace!
)
//以覆盖写的方式打开对应的动态库文件得到该句柄
,
f ilenum
只要在进入主程序前执行 函数
fup g rade
_
( ) ,
就能以透明的方式实现版本的自动检测与更新。
4
结 束 语
/取得要写入的升级文件的二 /
leng th L en a rb lo b
= ()
_
进制对象的长度
do 32765
//以 字节为单位循环写入对应文件中
if leng th po sit io n then
- > 32765
size
= 32765
e lse
该文介绍的版本检测与自动更新功能已经在若
干个大型 系统中得到应用实践表明该功能
M IS
, ,
对实现软件重用缩短开发周期降低成本提高可
, , ,
靠性便于维护等方面都具有较好的应用价值。 其
, ,
设计方法和经验可以很容易推广到其他系统的设计
与实现中。
1 . POW ERBU IL D ER 8 [M .
参考文献
:
张长富开发人员指南 北
京北京希望电子出版社
: , 2002- 06.
()
上接第 页
29
上一会儿虽然结果不会出错但是毕竟影响了处理
, ,
的实时性。
为 了 避 免 上 述 情 况 的 发 生
, D SP
在
SRAM
Co n t ro l m s
信号翻转之前的 内将不允许读取数
1. 5
据 见 图 如 果 直 接 选 取 作 为
( )
6 , R T S0 SRAM
Co n t ro l ,
信号要想实现这一点将非常困难。
图 读禁止时段
6
因 为 每 当 需 要 读 入 一 帧 数 据 作 处 理 时
D SP ,
SA A 7111A F P GA
很难通过 提供相应的信号供它
判断此刻是否能读。 但若选取场参考信号与奇偶场
指示信号的组合这一问题将最终得以巧妙解决。如
,
图 所示信号将由
7 , SRAM Co n t ro l V R E F &R T S0
信号的上升沿来触发翻转这样做的好处是场参考
,
信号 在 信号翻转之前的
V R E F SRAM Co n t ro l 1. 6
m s ,
时间内刚好处于低电平指示此刻处于消隐状
态并且这个时间略大于 通过它就可
, 1. 5m s, D SP
以知道此刻不能读数据了
!
当然这一实现方法也未必非常完美因为从图
, ,
7 ,
同时可以看出奇场结束偶场开始的时候也会有
1. 6m s , V R E F
的场消隐时间如果仅凭 信号作能否
读取 的 判 断在 这 个 时 候 就 会“白 等”
SRAM , D SP
图 信号的产生
7 SRAM Co n t ro l
5
结论
本文探讨了基于 2的网络摄像机中源
M P E G4
视频数据的暂存和供给并提出了相关的解决方案
, ,
这些方案都已通过了仿真测试为网络摄像机实时
,
编码的实现提供了有力的保障。
参考文献
:
钟玉琢王琪贺玉文基于对象的多媒体数据压缩编
, , .
1
码国际标准——2及其校验模型 北京科
M P E G4 [M . :
学出版社
, 2000.
任丽香马淑芬李方慧系列 的
, , . TM S320C 6000 D SP s
2
原理与应用 北京电子工业出版社
[M . : , 2000.
3
林福宗多媒体技术基础 北京清华大学出版社
. [M . : ,
2002.
4
洪小达多媒体计算机与数据压缩技术
. [M .
北京中
:
国国际广播出版社
, 1999.


发布评论