三层结构的设计模式

王朝delphi·作者佚名  2006-01-30
窄屏简体版  字體: |||超大  

New Page 1

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

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;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航