熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI基礎教程:Delphi客戶服務器應用開發(四)[1]

2013-11-23 17:48:47  來源: Delphi編程 

   從開發平台到服務器的向上適化

   適化概述

  所謂適化就是將桌面應用轉化為Client/Server應用

  適化是一個很復雜的主題這裡不詳細講述本節將介紹適化Delphi 應用程序中最重要的方面

  適化的主要方面有

  ● 將數據庫從桌面平台到服務器的適化

  ● 將應用程序轉化為Client/Server的適化

  適化還需要實現從桌面環境到Client/Server環境的轉化

  桌面數據庫和SQL服務器數據庫在許多方面有不同之處例如

  ● 桌面數據庫用於同一時刻單用戶的訪問而服務器用於多用戶訪問

  ● 桌面數據庫是面向記錄的而服務器是面向集合的

  ● 桌面數據庫將每個表存儲在獨立的文件中 而服務器將所有的表存儲在數據庫中Client/Server應用必須解決更新的問題最復雜的是聯接網絡和事務控制

   適化數據庫

  適化數據庫包含下列步驟

  ● 在桌面數據庫結構的基礎上定義服務器上的元數據

  ● 將數據從桌面轉化到服務器中

  ● 解決下列問題

  ● 數據類型差異

  ● 數據安全性和完整性

  ● 事務控制

  ● 數據訪問權

  ● 數據合法性

  ● 鎖定

  Delphi提供了兩種方法適化一個數據庫

  ● 使用Database Desktop工具選擇菜單Tools/Utilities/Copy to命令將數據庫表從桌面方式拷貝到SQL格式

  ● 建立應用TBatchMove部件的應用程序

  這兩種方法都可以將表結構和數據從桌面數據源轉化到服務器上依靠這些數據庫可能需要改變結果表例如可能想進行不同數據類型的映射

  也可以將下列特征加入數據庫

  ● 完整性約束

  ● 索引

  ● 檢測約束

  ● 存儲過程和觸發器

  ● 其它服務器特征

  如果用SQL腳本和服務器數據定義工具定義元數據會更有效然後用前面介紹的兩種方法轉移數據因為如果是手工定義數據庫表Database Desktop和TBatchMove 部件將只拷貝數據

   適化應用程序

  在理論上設計用來訪問局部數據的Delphi應用程序做很少的修改就可以訪問遠程服務器上的數據如果在服務器上定義適合的數據源你就能將應用程序指向訪問它這只需簡單地改變應用程序中TTable或TQuery部件的DatabaseName屬性

  實際上在訪問局部和過程數據源之間有許多重要的不同之處Client/Server應用程序必須解決大量的在桌面應用中所沒有的問題

  任何Delphi應用程序都能用TTable或TQuery部件訪問數據桌面應用程序通常都是使用TTable部件當適化到SQL服務器上時用TQuery會更有效如果應用程序要檢索大量記錄則TQuery部件要略勝一籌

  如果應用程序使用統計或數學函數那麼在服務器上通過存儲過程執行這些函數會更有效因為存儲過程執行更快使用存儲過程還可以減少網絡負載特別是大量行數據的函數

  例如計算大量記錄的標准差

  ● 如果該函數在客戶端執行所有的值從服務器上檢索出來並送到客戶端導致網絡擁塞

  ● 如果該函數在服務器端執行則應用程序只需要服務器上的答案

   Delphi客戶/服務器應用實例分析

  本節中采用的實例是Delphi數據庫的例子CSDEMOCSDEMO是Delphi客戶/服務器編程的示例程序它采用的數據庫服務器是Local InterBase Server

  CSDEMO較好地示范了BDE環境的配置InterBASE Server高級功能應用SQL服務器聯接觸發器應用存儲過程編程和事務控制技術等具有較高的參考價值本節講述下列內容

  ● 數據庫環境介紹

  ● TDatabase的應用

  ● 不同數據庫表的切換

  ● 觸發器編程

  ● 存儲過程編程

  ● 事務控制應用

   數據庫環境介紹

  本例中采用的數據庫服務器是Local InterBase ServerLocal InterBase是InterBase Server的單用戶版兼容ANSI SQLLocal InterBase支持客戶/服務器應用在單機上的開發和測試並且可以很容易地適化到InterBase Server上因此開發客戶/服務器應用采用Local InterBase作為原型開發環境是很方便的

   IBLOCAL的BDE參數

  本例中的SQL數據庫是IBLOCAL它是由BDE配置工具(BDECFGEXE)設置參數值它的各項參數值列於下表

  表 IBLOCAL的各項參數值

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  參 數 名 參 數 值

  ────────────────────────────────────

  TYPE INTRBASE

  PATH

  SERVER NAME C:\INTRBASE\EXAMPLES\EMPLOYEEGDB

  USER NAME SYSDBA

  OPEN MODE READ/WRITE

  SCHEMA CACHE SIZE

  LANGDRIVER

  SQLQRYMODE

  SQLPASSTHRU MODE SHARED AUTOCOMMIT

  SCHEMA CHCHE TIME

  MAX ROWS

  BATCH COUNT

  ENABLE SCHEMA CACHE FALSE

  SCHEMA CACHE DIR

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   數據庫結構介紹

  IBLOCAL數據庫的結構都是由InterBase服務器工具交互式SQL工具(ISQL)定義的

  用ISQL定義數據庫首先要用Create Database命令建立數據庫建立的新數據庫一般是以GDB為擴展名建立好後就可以用SQL語言定義數據庫表例如建立EMPLOYEE表的SQL語句如下

  定義域名數據類型

  CREATE DOMAIN FIRSTNAME AS VARCHAR(

  CREATE DOMAIN LASTNAME AS VARCHAR(

  CREATE DOMAIN COUNTRYNAME AS VARCHAR(

  CREATE DOMAIN EMPNO AS SMALLINT;

  CREATE DOMAIN DEPTNO AS CHAR(

  CHECK (VALUE = OR (VALUE > AND VALUE <= ) OR VALUE IS NULL)

  CREATE DOMAIN JOBCODE AS VARCHAR(

  CHECK (VALUE >

  CREATE DOMAIN JOBGRADE AS SMALLINT

  CHECK (VALUE BETWEEN AND

  CREATE DOMAIN SALARY AS NUMERIC(

  DEFAULT

  CHECK (VALUE >

  建立EMPLOYEE表

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25125.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.