.一般簡單的三層結構設計方式:  
 現在一般介紹三層結構大多數使用上面的數據模型進行講解,通過DataSource組件連接ClientDataSet組件,然后通過數據感知控件連接DataSource組件,來進行對數據庫數據的訪問。這樣就使得數據庫服務器、應用服務器和應用程序之間的聯系過于緊密,如果其中一個做了改動,其他的都要跟著改動,對于系統的升級與維護帶來很多不便。
 
2.新的三層結構設計模式:
上面是我們現在采用的三層結構模式,它不通過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;