VD30论坛(一): 何谓3-Tier?

VD_publisher 2004-10-28 09:28:45
1.传统的ONE-TIER
-----------------
以前DBF(像早期的FOXPRO)系统就是将资料库放於LOCAL(单机上),我们用
FOXPRO透过USE/APPEND/REPLACE/DELETE/SEEK..等指令去存取DBF档案,你写的
程式PRG是在LOCAL上执行,并呼叫LOCAL上的FOXPRO编译EXE,
去存取这些DBF的档案,整个过程都在同一个LOCAL PC上执行,我们可以叫
它ONE-TIER.

2.LAN的ONE-TIER
-----------------
早期网路刚开始发展时(如NOVELL NETWARE), 可以将DBF置於FILE SERVER上,
所以进入了MULTI-USER时代, 此时DBF让多个PC可以共享档案(可读可写),
确实带来便利性,但FOXPRO的PRG或EXE还是在PC端执行
(程式可以放在FILE SERVER上,但RUN是在PC上).
所PC端只是去网路OPEN DBF档案,读写都是在PC端去完成的,这个架构只是DBF
的共享,FILE SERVER并没有任何事情做,所以还是在ONE-TIER上作业.
VD20的BDE中Local DBF虽然可以指定放在网路磁碟机上,但也是One-Tier.

3.DATABASE SERVER的TWO-TIER
----------------------------
TWO-Tier就是Client/Server的架构,Client就是PC或终端机,Server就是
Database Server,约十五年前,IBM发展DB2为Client/Server开启了大门,
此後如雨後春笋,Informix/Sybase/Oracle..掘起,於1990年代大肆流行,95年起,
MS-SQL问世,更让资料库市场进入战国时代,就是因为RDBMS(Relation DataBase
Management System)确实带来资料库的效应与标准.

所谓DATABASE SERVER,就是专门处理资料库的主机, 处理资料库的方法是采用一
种大家标准的语言--SQL,这种语言已经成为发展资料库的共同标准(如ANSI-92标准)
就是无论你使用那种资料库, 你都可以使用相同的SQL语言即可以存取资料库.
(其实各家资料库厂商还是有微小的特殊差异性,不一定完全共通),所有的PC或Client
都必须以SQL来下达给Database Server,并由DataBase Server全权处理,Client必须
等待Server的执行结果,如Insert/Update/Delete就是指挥要对Database Server进行
某Table(资料表)的新增/更改/删除的动作,如Select就是要指挥Server去查询相关的
资料下来, Server是以Cursor的方式将资料回传给Client,也是说Client下达Select
的SQL以後会得到一个Cursor(资料集合),所以Client/Server是一种分工的模式,由
Client来提出申请,由Server来完成资料存取的目的,如此即可以将资料安全集中於
DataBase Server上,不必像DBF分散到PC上存取,容易乱掉与损毁(尤其是Index档),
资料的稳定度相对提高,处理大量资料的速度也相对提升(DBF资料一大,速度就是慢)
C/S架构确实提升不少速度与品质.

4.APPLICATION SERVER的THREE-TIER
---------------------------------
2-TIER其实已经解决了不少资料库的问题,但面临大型系统,C/S会因为Connection
数量(使用者的连线数)的暴增而造成Database Server无法负荷,通常一个Application
Connection只要到达30到50个User就会造成DB Server疲於奔命,速度与效能将有显着
的改变.另一个就是维护的问题,大型的系统有很多很大的Client程式,分散到各个
Client上,每当有程式版本异动时,都必须大费周章的将Client程式换掉,再加上目前
整个A/P的全球发展趋势就是Thin-Client(瘦小的Client),3-Tier的架构与相关技术也
就因运而生,上海讯光早已4年前就以MIDAS(Borland发展的通讯协定)研发3-TIER的技术,经
过了3年的专案实务演练,造就了EEP的发展平台(Electronic Enterprise Platform),为
了能将新的研发成果可以让DBTOOLS客户群分享,VD30则同样采用EEP的A/P Server平台,
让VD30直接跃升为最新的3-Tier架构,来解决2-Tier无法满足的需求.
所谓3-Tier就是Client/Application Server/DataBase Server的意思,与2-Tier不一
样,就是将原本Fat Client(肥胖的Client端程式)拆成Thin Client与Appliction
Server,说明如下:
(1)Client:简单的Client程式,也可以使用Web来设计,其程式不会直接碰触与资料库,
也就是没有任何SQL语法与资料库存取程式,更不能有资料库的运算逻辑,Client变成
只能用来输入与显示资料,好像是当年的Terminal,Client变的很简单,顶多也只能做
点资料的检验而已,与Web的HTML与PHP的前端设计很像,不能也禁止去执行後端Database的动作.
(2)Application Server:就是接受Client的请求主机,Client会与Application Server
要资料及要求存入资料,所以A/P SERVER是Client的共同代理人,代理各Client的资料
存取服务与程式服务,也就是说,A/P SERVER以SQL语法与DB SERVER碰触,但Client则不
行,须经由A/P SERVER代理,当A/P SERVER由DB SERVER取得资料後,再以MIDAS将CURSOR
传送到Client上.相对的,如果Client要存入资料,则要呼叫A/P SERVER端的存档程式,
此时Clinet会将资料打包传送到A/P SERVER上,再由A/P SERVER来以SQL语法对DB SERVER
来存档.
(3)Database Server:与原来Client/Server架构的Database Server一样,扮演Database
存取的服务.

5.A/P Server的功能与特色
----------------------------
(1).比照Web的方式完全无状态的连线方式, 也就是Client与Database随时
保持不连线状态, 一直到需求发生才去连线, 如此将有较佳的连接效能,
另一是指A/P Server与Client也是无状态的, 也就是Client与Server端随时
可以断线, 只要线一恢复, 系统将自动再连线(User等待仅2~3秒间, 是无
感觉的)
(2).资料库Connection Pooling的机制, 让企业的Client可以共有或共享这些
Connection, 如User有50个要连线时, 在本系统仅须10~20的资料库连结.
效率上将会有明显的差距.
(3).支援Name Server的架构, 可以使用Load Balance的功能来调节当User暴增时
多台A/P Server间的Loading. Name Server也可以为无状态模式, 也就是说前一
分钟由某个A/P server来服务, 但下一分钟不一定是由同一台来服务.
(4).支援ServerMethod, 就是由Client来呼叫, 但是在Server上执行, 这部份很像
StoreProcedule, 只在A/P Server端的执行程式, 在EEP是以Delphi来设计Server
Method, 在VD30则可以在ServerForm设计一段程式, 并由Client来呼叫.
(5).A/P Server端上的元件不多, 都是在Server端处理资料的元件, 目前有SQuery(资料查询)/
SDataSource(资料关联)/SAutoNum(自动编号)/SUpdateComp(资料异动)/SStatist(资料统计)/
SServerMove(过帐元件)/SServerClose(资料结帐)/SServerWarning(资料异常)等元件,我们将
在後文介绍这些元件.
(6).资料同步服务, VD30提供一个CacheTable的机制, 也就是说将部份常用且资料
较小的Table Cache到Client来, 其Client的附档名为 .CAC, 此时Client在使用
LookUpList时可以直接调用Client的Cache, 不必到Server上来抓资料, 如在Internet
效率上确实提升不小, 此唯一缺点就是资料同步的问题, 所以A/P Server必须负责
这些Client这些CAC的同步功能(只能将Server的最新资料对各个Client更新)
(7).先进的WorkFlow系统, 可以直接结合Work Flow的系统, 并由A/P Server来负责
Flow的管控与待办事项的处理, 如再结何Schedule System(工作排程系统), 与上述的
SServerWarning(资料异常), 即可做到先进的异常预警的系统.
...全文
188 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy_KAO 2004-10-29
  • 打赏
  • 举报
回复
以後,每週發表兩篇論壇~

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧