VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

在VFP中建立C/S機制(轉貼)

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 1 樓

發表發表於: 星期二 八月 26, 2003 1:30 pm    文章主題: 在VFP中建立C/S機制(轉貼) 引言回覆

在VFP中建立C/S機制
一、C/S的應用形式
在應用中,人們多把C/S的應用程式分成兩部分:讓客戶程式駐留在網路的前端工作站(一台微機)上,伺服器處理程式則在網路的後臺,其分佈結構見圖1。當客戶(在工作站上)通過請求的方式提出了所需要的服務時,伺服器不必關心客戶程式的功能,只需回應請求就行。
在這種結構中,伺服器的硬體必須具有足夠的處理能力,這樣才能滿足各客戶的要求。
從概念上看,“伺服器”的含義非常廣泛,資料庫伺服器只是其中的一種。資料庫伺服器至少應提供對資料的存取、加工、處理等服務,同時還要提供完善的安全保護及資料的完整性等處理,並允許多個客戶同時訪問同一個資料庫。因此,客戶可以不用考慮對資料的安全、優化、完整性等基礎處理,只需專心自己的工作。
客戶應用程式除了向伺服器提出請求外,還要分析從伺服器返回的資訊(包括資料和指令),並據此作一些再處理(如向操作者顯示相應的資料、要求補充輸入一些資料等)。
仲介(MiddleWare)是C/S系統中的一種系統軟體,它負責鏈結客戶與伺服器。客戶與伺服器聯接的最底層是網路的硬體,但對應用級的程式師來說,關心的焦點還是它們在軟體上的通信鏈結。因為C/S的環境複雜,而且涉及多種規程及協議,所以還必須依靠仲介軟體才能有效地降低工作難度。仲介軟體能夠把使用者與複雜的通信規程、硬體平臺及作業系統隔開,資料通過仲介在客戶與伺服器間流動,客戶與伺服器通過仲介軟體進行平穩互訪,這種方式無疑大大降低了編程者的技術難度及工作量。
目前已出現了很多有關仲介的標準及軟體,我們在ViQsualFoxPro上見到的就是ODBC。它處在客戶與伺服器之間,有效地隱蔽了C/S操作的複雜過程。
二、設計C/S系統的基本原則
這堨u考慮客戶與伺服器分別在不同硬體平臺上的C/S系統(即基於網路的C/S系統),它們在設計時應遵循以下原則:
1.儘量讓客戶機完成針對特定用戶的事務處理
因為伺服器由多個客戶機共用,如果把每個用戶的特定處理都放在伺服器上,就會增大伺服器的工作量,因而降低其回應速度,延長客戶申請的等待時間,所以儘量讓客戶機完成針對特定用戶的事務處理,目的是為了減輕伺服器的負擔,提高C/S系統的整體性能。
2.儘量讓伺服器管理全部的共用資源
可共用的資源包括資料、部分外設(如掃描器、印表機等)及基礎服務處理(如通信),這些都應由伺服器來管理,以保證各用戶都能享用。對於共用資料,由伺服器集中處理還有助於保證資料的完整性、一致性和安全性。
3.儘量減少客戶與伺服器間傳送的資料量
在網路間傳送資料,可能產生資料錯誤、丟失、延時、故障等問題。資料傳遞得越多,產生的問題、要求恢復的可能性也就越大。而且網路上堆積了大量資料,必然會降低系統對其他客戶機的反應速度,同時影響客戶之間及客戶與伺服器間的通信(通信也是一種共用資源)。所以,減少網路中資料的傳遞量,有助於保證C/S系統的整體性能。
4.堅持局部資料在局部存儲和管理
這是為了減少網路上的資料傳輸量、減輕伺服器的壓力、增強伺服器對請求的回應,提高C/S系統的總體性能。
根據上述原則,在做基於資料庫的C/S系統設計時,可以把介面表示部分(如輸入、輸出介面)放在客戶機上,把資料的管理部分(如查詢、存儲、更新、優化等)放在伺服器上。對其他處理邏輯,則要根據具體情況進行分析,例如對於計算密集型的處理,可把計算部分放在客戶機上,而有關資料特性的一般約束處理(如完整性、安全性、一致性等)則可放在伺服器上。
對於資料的分佈,也應作妥善安排。對於提供給各客戶共用的資料,應放在伺服器上(作為遠端資料來處理);而對於各自的獨用資料,則應放在自己的客戶機上。
三、VisualFoxPro中建立C/S的機制
用VisualFoxPro構造C/S系統時,用ODBC作仲介軟體,由ODBC完成客戶與伺服器間的通信。這時各應用程式都通過各自的驅動程式與資料庫相聯,ODBC通過自身的驅動程式管理器來管理ODBC與驅動程式間的交互,程式師則可以使用相同的程式調用來實現與不同資料源的通信。
目前,Windows下的ODBC驅動程式和驅動程式管理器均以DDL(動態資料程式庫)的形式實現。在VisualFoxPro的ODBC支援下,客戶的應用程式可以實現以下功能:
①與(遠端)資料庫建立或解除聯接;
②VisualFoxPro可通過當前已有的驅動程式與OraQcle7.0、SQLServer、MSParadox等資料庫聯接。其他種類的資料庫只要能提供自己的驅動程式,也能與VisualFoxPro相聯;
③對遠端資料庫進行常規操作(如修改、查詢等),並獲取相應的操作結果;
④接收以ANSIError為標準的錯誤資訊;
⑤對遠端資料庫上的表、記錄、視圖、索引等進行檢測;
⑥向各用戶提供統一的登錄介面。
VisualFoxPro是C/S的前端開發工具,它通過ODBC對後端資料庫進行存取的方法有兩類:SPT(SQLPass-Though)和RemoteViews(遠程視圖)。SPT提供的函數類似低級檔函數,用戶可用此直接訪問後端資料庫。用戶使用SPT時,需用一組以SQL打頭的函數來編寫“打開聯接”、“錯誤檢測”、“命令傳遞”等指令。VisualFoxPro中的視圖有兩種:本地和遠端,操作時可一視同仁。遠端視圖在ViewDesigner中創建,這時需說明遠端資料庫中要訪問或修改的“部位”及範圍。當這個視圖建立後,我們就可以像使用ViQsualFoxPro的一個局部表一樣,用“日常”的VisualFoxPro命令對其操作。
訪問後端資料庫時,必須先通過聯接。在VisualFoxPro中,通過聯接可以創建遠端視圖,修改其屬性則可以優化各部分間的通信。VisualFoxPro中的聯接有兩種:隱含聯接和命名聯接。這媮p接被當作物件來處理,以下是聯接中常用的一些屬性:
屬性名內容說明
PassWord聯接時用的口令
DataSource通過ODBC所聯接資料源的類型
PacketSize確定聯接時所用網路資料包的大小
ConnectString用於聯接註冊的字串
Asynchronous確定所用聯接是同步還是非同步
ConnecName建立游標時所用聯接的名字
UserID用戶標識
Shared確定聯接時可否共用
PatchMode確定批模式
……
在用SPT訪問後端資料庫時,必須使用命名聯接。
在一般的應用中,可以將遠端視圖與SPT結合使用。可在本地資料庫中定義後端資料源的遠端視圖,然後通過Form(或FormSet)對已聯資料源進行日常操作。這是一種簡潔、實用的C/S系統應用。
四、用VFP實現C/S系統的基本方法
在建立C/S系統時,實現步驟為:
第一步,根據後端資料源的類型裝入相應的ODBC驅動程式,同時做一些相應的設置。
下面以安裝SQLServer的驅動程式為例進行說明:
DataSourceName標識資料源的名子
Description說明存儲在資料源中的資料
Server標識網路上SQLServer的名字,目前可選的伺服器有MSWindowsforworkgroups;BanyanVINES;MSLANManager;IBMLANServer或DECPathworks;TCP/IPNetworks;NovellNetWare。
NetworkAddress說明SQLServerDBMS的網址
NetworkLibrarySQLServer驅動程式所用的與網路通訊的動態連結程式庫
還有其他一些用於說明諸如資料庫名、所用語言等選項的參數,需根據情況確定。設置完上述參數後,即完成了ODBC驅動程式的安裝。
第二步,進入VisualFoxPro中,建立與後端資料源的聯接。
因為聯接屬於資料庫的一部分,所以必須先進入VisuQalFoxPro,創建或打開一個資料庫,然後建立命名聯接(用指令:CreateConnectionΙ聯接的名字Λ),在VisualFoxPro提供的ConnectionDesigner視窗中填寫一些值及屬性(見上節所列),就完成了一個聯接的建立。
第三步,建立遠端視圖。
因為遠端視圖從邏輯上說屬於本地資料庫的一部分,所以在建立遠端視圖前,必須先打開資料庫(用命令:OpenDatabaseΙ資料庫名Λ),並進入該資料庫的修改狀態(用命令:ModifyDatabaseΙ資料庫名Λ)。在VisualFoxPro彈出的DatabaseDesigner窗口內的工具條中,選點NewRemoteView圖示,隨後VisualFoxPro會讓你選擇命名聯接和遠端資料庫中的表;在你完成這些選擇後,VisualFoxPro會再彈出一個ViewDesigner視窗,讓你在這個視窗中進一步確定,這個表中的哪些資料項目將出現在所建立的遠端視圖中。這些資料項目將在SelectedOutput下的列表框中顯示出來。
第四步,建立應用程式。
下面舉例說明建立應用程式的方法。為了說明方便,這塈榯SAccess資料庫作為遠端資料庫(選其他資料庫時的處理方法及步驟均相同),在其上建立一個名為worker的表,見右表1。
假定我們已按上述前三步的方法裝好了ODBC驅動程式,
已打開了名為MyData的本地資料庫,並建立了名為MyCon的與遠端資料庫的聯接。
例1.在圖2視窗內,查看職工狀況表。
我們需要先在本地庫上建一個遠端視圖。可以用上述第三步的方法,把遠端視圖名定為V1,此時需選擇聯接名為MyCon。下面是V1的描述語句:
SELECTworker.wrk-id,worker.wrk-name,workQer.brithday,worker.specialityFROMworker
然後再建一個表單(Form),在上面做一個Grid型的元件(物件),把該元件的RecordSource屬性值設成V1。這就完成了一個(遠端)職工資訊觀察視窗的製作。
例2.在圖3所示的Form內,當在“職工代號”對應的文本框內輸入一個代號值後,就在其他的文本框內顯示這個職工的其他資訊。
可參照上例方法建立遠端視圖V2。其描述語句為:
SELECTworker.wrk-id,worker.wrk-name,worker.brithday,worker.specialityFROMworker;
WHEREworker.wrk-idΚ?cinp
然後再建一個Form,做成圖3的樣子,各文本框(物件)的ControlSource分別指定為V2.wrk-name、V2.brithday、V2.speciality。最後再定義與職工代號對應的文本框的Valid方法:cinpΚthis.valus
Κrequery(″V2″)
thisform.refersh
例3.直接在程式中使用SPT,查看遠端資料庫中的職工資訊:
connectionΚSQLCONNECT(′MSAccessDatabasese′,′username′)
IFconnectionΛ0
IFSQLEXEC(connection,′select fromtable′1,′MyCursor′)Λ0
brow
ELSE
WAITWindows′不能查看這個遠端資料庫!′
ENDIF
ELSE
WaitWindows′無法建立聯接!′
ENDIF

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作