首页 > 学院 > 开发设计 > 正文

三层结构的设计模式

2019-11-18 18:33:57
字体:
来源:转载
供稿:网友
.一般简单的三层结构设计方式:

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;

上一篇:异类的屏幕保护

下一篇:TManagedDataSet和DataSetPool的实现

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
学习交流
热门图片

新闻热点

疑难解答

图片精选

网友关注