1. 程式人生 > >三層架構之Socket

三層架構之Socket

通過 WinSocket 架設三層應用程式 , 除了使用 TSocketConnection 元件外還需要 TDataSetProvider 將 兩端的 DataSet 連線起來.

步驟如下:

Server 端:

1. 建立一個新的 Project , 命名為 SCKTServer, 同時會有一個 MainForm 窗體.

2. 新增 Remote Data Module , 命名為 RDMServer.

3. 在 RDMServer 需新增 3個數據元件:

     一個 TADOConnection , 命名為 Con1, 設定其 ConnectionString 為如下: Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=資料庫名;Data Source=SqlServer伺服器名; (注意因為sa密碼為空,所以沒有密碼項).

設定LoginPrompt = False, 不需要提示輸入密碼.

設定Connected = True , 測試一下是否可以正常連線 SqlServer 資料庫.

     一個 TADODataSet , 命名為 ds1, 設定 Connection 為 Con1;

     一個 TDataSetProvider , 命名為DSProvider, 設定 DataSet 為 ds1 ; 設定  Option 中的 poAllowCommandText = True , 意為允許 Client 端DataSet 可以 設定 Sql 語句操作資料表.

Ok , 編譯執行一下 , 即註冊一下服務.

Client 端:

1. 建立一個新的 Project , 命名為 SCKTClient, 同時會有一個 MainForm 窗體.

2. 在窗體上新增一個 TSocketConnection , 設定 Address 為伺服器 IP ,這裡是本機, 為 127.0.0.1; 設定 ServerName 為 Server 端資料模組, 這裡是: SCKTServer.RDMServer; 因為 服務以及註冊, 這裡是通過列表選擇出來的.

3. 在窗體上新增一個 TClientDataSet , 命名為 dsClient, 設定 ProviderName為 Server端的TDataSetProvider : DSProvider;

設定其CommandText 為 Sql 命名, 如: SELECT * FROM 資料表名

4. 以後就是和一般資料庫應用程式一樣, 新增 DataSource 和 DBGrid 和其他資料庫元件.

5. 最後是新增連線和斷開的 2個 Button 及簡單程式碼:

procedure TForm1.btn1Click(Sender: TObject);
begin
  if dsClient.CommandText ='' then Exit;
  con1.Open;
  dsClient.Open;
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  con1.Close;
  dsClient.Close;
end;

OK, 以上基本完成.

本機測試一下, 先開啟$DELPHI/Bin 下的 ScktSrvr.exe (運行於服務端), 再執行 Client 端 應用程式 , 即可通過 Socket 連線遠端資料庫服務.

基本連線線路是 : SqlServer --> ADOConnection --> ADODataSet --> DataSetProvider , 通過SocketConnection與客戶端連線起來--> ClientDataSet -->DataSource --> DBGrid .