三层结构的设计模式

.一般简单的三层结构设计方式:

Remote Data Module服务器


数据库


Query组件


DataSetProvider组件


客户端应用程序


DCOM组件


ClientDataSet组件



|

现在一般介绍三层结构大多数使用上面的数据模型进行讲解,通过DataSource组件连接ClientDataSet组件,然后通过数据感知控件连接DataSource组件,来进行对数据库数据的访问。这样就使得数据库服务器、应用服务器和应用程序之间的联系过于紧密,如果其中一个做了改动,其他的都要跟着改动,对于系统的升级与维护带来很多不便。

2.新的三层结构设计模式:

Remote Data Module服务器


数据库


Query组件


DataSetProvider组件


客户端应用程序


DCOM组件


ClientDataSet组件



|

上面是我们现在采用的三层结构模式,它不通过DataSetProvider组件来传递数据,而是通过Remote Data Module服务器所提供的Interface来进行数据的传递。这样就使得应用程序完全与数据库服务器没有任何关系,对整个系统的升级与维护都带来极大的好处。

对于集合数据,由于Interface的返回值可以是OLEVarient类型,因此我们可以创建ClientDataSet来进行集合数据的传递。

3.部分源程序

//函数1:创建ClientDataSet

procedure CreateCds(const Ds: TDataSet; var Cds: TClientDataSet);

var

I: Integer;

begin

Cds := TClientDataSet.Create(nil);

for I := 0 to Ds.FieldCount - 1 do

begin

with Cds.FieldDefs.AddFieldDef do

begin

Name := Ds.FieldDefs[I].Name;

DataType := Ds.FieldDefs[I].DataType;

if DataType = ftAutoInc then

DataType := ftInteger;

Size := Ds.FieldDefs[I].Size;

end;

end;

Cds.CreateDataSet;

end;

//函数2:给ClientDataSet负值

procedure TransData(const Ds: TDataSet; var Cds: TClientDataSet);

var

I: Integer;

begin

if Ds.RecordCount > 0 then

begin

Ds.First;

while not Ds.Eof do

begin

Cds.Insert;

for I := 0 to Ds.FieldCount - 1 do

Cds.FielDs[I].Value := Ds.FielDs[I].Value;

Cds.Post;

Ds.Next;

end;

end;

end;

Published At
Categories with Web编程
Tagged with
comments powered by Disqus