【文章內(nèi)容簡介】
的核心,企業(yè)申請表、進口清單、出口清單是業(yè)務(wù)管理的基本內(nèi)容。其中財務(wù)管理為業(yè)務(wù)管理提供依據(jù),而查詢統(tǒng)計子系統(tǒng)使得業(yè)務(wù)系統(tǒng)更加明了,便于經(jīng)理層對公司業(yè)務(wù)進行實時監(jiān)控,其他幾個子系統(tǒng)都為業(yè)務(wù)子系統(tǒng)進行服務(wù)。 系統(tǒng)軟件架構(gòu) 在三層 C/S結(jié)構(gòu)的系統(tǒng)框架下,對于每一個具體的系統(tǒng)而言,都可以抽象的劃分為三個邏輯層次,即:表示層,業(yè)務(wù)層和數(shù)據(jù)層。 表示層 指的是在應(yīng)用程序中,直接展示給用戶的部分,因此有時也被稱為是客戶界面層。通過表示邏輯層,可以實現(xiàn)用戶和后臺業(yè)務(wù)層之間的對話,提供接口。 并且,表示層還用于收集數(shù)據(jù)和顯示處理完畢后的數(shù)據(jù)。 14 業(yè)務(wù)層 也就是應(yīng)用邏輯層或者應(yīng)用服務(wù)器,即常說的中間層。業(yè)務(wù)邏輯層相當(dāng)于應(yīng)用程序的本體,它包含了與核心業(yè)務(wù)規(guī)則相關(guān)的邏輯,也就是將具體的業(yè)務(wù)處理邏輯地編入程序中,是聯(lián)系表示層和數(shù)據(jù)層的“橋梁”。它可以響應(yīng)用戶發(fā)送的請求,執(zhí)行某種業(yè)務(wù)規(guī)則,業(yè)務(wù)層是一個應(yīng)用程序中最重要的部分。 數(shù)據(jù)層 數(shù)據(jù)邏輯層用于實現(xiàn)所有典型的數(shù)據(jù)處理活動,包括數(shù)據(jù)的獲取、修改、更新以及數(shù)據(jù)庫內(nèi)部的觸發(fā)器、存儲過程等相關(guān)活動,從而將數(shù)據(jù)服務(wù)和應(yīng)用程序的其它組件分開。 圖 35 典型的三層分布式系統(tǒng)的構(gòu)架結(jié)構(gòu) 從圖 35中可以看到,三層邏輯層可以分別實現(xiàn)于不同的開發(fā)平臺,并且所有的用戶同時共享中間應(yīng)用邏輯層。在客戶端只需要安裝客戶端應(yīng)用程序,用于負責(zé)和用戶進行數(shù)據(jù)交互以及與應(yīng)用服務(wù)器進行數(shù)據(jù)交互。業(yè)務(wù)層,即應(yīng)用服務(wù)器中間層負責(zé)接收從客戶端傳遞來的請求,進行業(yè)務(wù)處理,根據(jù)業(yè)務(wù)邏輯轉(zhuǎn)化成為相應(yīng)的數(shù)據(jù)庫請求,并且通過數(shù)據(jù)庫引擎?zhèn)鬟f給數(shù)據(jù)庫,然后將數(shù)據(jù)庫處理的結(jié)果返回到客戶界面。作為第三層的數(shù)據(jù)層,則主要是響應(yīng)應(yīng)用邏輯層發(fā)送過來的請求,對數(shù)據(jù)按要求進行處理,并且將處理的結(jié)果返回到應(yīng)用邏輯 層。 所謂的三層結(jié)構(gòu),是指在邏輯上的抽象劃分,而不是在實際的布局上一定要分三個物理位置來分布部署表示層、中間業(yè)務(wù)層和數(shù)據(jù)層。在實際開發(fā)的過程中,可以根據(jù)實際情況,把業(yè)務(wù)層和數(shù)據(jù)層部署到一臺服務(wù)器上,或者把表示層和業(yè)務(wù)層部署到一臺服務(wù)器,或者部署到更多的計算機上。但是,在實際的業(yè)務(wù)中,一般都是把三層結(jié)構(gòu)的系統(tǒng)分別部署到不同的機器上,以充分發(fā)揮分布式三層結(jié)構(gòu)系統(tǒng)的優(yōu)點。三層分布式 C/S結(jié)構(gòu)的優(yōu)點,主要表現(xiàn)在下面各個方面: 很大程度上提高了系統(tǒng)的安全性。與二層 C/S結(jié)構(gòu)系統(tǒng)中,客戶端直接與數(shù)據(jù)庫服務(wù)器打交道的情況不同,在三層 C/S結(jié)構(gòu)下,客戶端不直接與數(shù)據(jù)庫服務(wù)器發(fā)生數(shù)據(jù)交互,而是訪問應(yīng)用程序服務(wù)器的中間層,由應(yīng)用程序服務(wù)器與數(shù)據(jù)庫服務(wù)器進行通信,同時在中間層控制對數(shù)據(jù)庫的訪問權(quán)限。在這種情況下,就很大程度上防止了客戶端對數(shù)據(jù)庫進行非法的操作,無形中對數(shù)據(jù)庫又增加了一層保護,提高了數(shù)據(jù)安全程度。 15 業(yè)務(wù)處理集中。由于在三層結(jié)構(gòu)系統(tǒng)中,所有的通用業(yè)務(wù)處理都集中在業(yè)務(wù)邏輯層,而不是由每一個客戶端表示層來分別處理,因而可以保證所有的用戶都執(zhí)行一致的業(yè)務(wù)邏輯,而不會產(chǎn)生對同一業(yè)務(wù),出現(xiàn)不同用戶處理方法不一致的現(xiàn)象,同 時還可以避免由于每個客戶端分別復(fù)制、處理數(shù)據(jù)而帶來的數(shù)據(jù)冗余。 系統(tǒng)維護和升級比較簡單。在三層的結(jié)構(gòu)下,表示層只是一個盡可能簡單的操作界面,負責(zé)給用戶提供交互界面和顯示數(shù)據(jù)。而真正的業(yè)務(wù)邏輯,則都集中編寫在中間層中,統(tǒng)一部署在應(yīng)用程序服務(wù)器中。實際使用時,由各個客戶端分別調(diào)用中間層,然后再由中間層實現(xiàn)對數(shù)據(jù)庫的訪問。這樣,當(dāng)業(yè)務(wù)邏輯發(fā)生變動的時候,無需重新編寫客戶端的程序,只要重新修改包含業(yè)務(wù)邏輯的中間層,然后重新進行發(fā)布,就可以實現(xiàn)系統(tǒng)的更新??蛻舳瞬恍枰M行任何的變動,甚至都不會注意到后臺的變化。這 樣,就解決了二層結(jié)構(gòu)中系統(tǒng)不能隨時更新升級的問題,優(yōu)化了系統(tǒng)的可擴充性,使系統(tǒng)更加富有彈性,適用于多變的實際情況。 系統(tǒng)的可移植性強。由于在實際業(yè)務(wù)中的核心邏輯都是封裝在中間層的,而客戶端只是通過通用的通信協(xié)議,訪問預(yù)先規(guī)定的接口,來實現(xiàn)對中間層的訪問。因而在這種情況下,可以很方便的把中間業(yè)務(wù)層從一個物理位置移植到另一個物理位置。而在客戶端幾乎不需要做任何的修改,只要使客戶端訪問新的中間層地址,就可以實現(xiàn)和以前一模一樣的操作。 提高了系統(tǒng)效率并且降低了硬件配置要求。由于數(shù)據(jù)分布在不同的機器上,同時將 較重的處理負荷分配給中間業(yè)務(wù)層,因此可以很大程度上減低客戶端的負荷,提高系統(tǒng)運行效率,降低對系統(tǒng)硬件配置的要求。 在三層的結(jié)構(gòu)體系下,由于中間層的介入,數(shù)據(jù)的傳遞過程也相應(yīng)的發(fā)生了調(diào)整。在這種情況下,是由客戶端的數(shù)據(jù)集 ClientDataset 來發(fā)出請求命令,將此命令傳遞給中間層,中間層接受這一請求命令,并對數(shù)據(jù)進行處理后,向數(shù)據(jù)庫發(fā)出請求命令,數(shù)據(jù)庫進行響應(yīng),進行數(shù)據(jù)更新。在三層結(jié)構(gòu)下,數(shù)據(jù)的傳輸過程如圖 36 所示。 16 圖 36 三層結(jié)構(gòu)下數(shù)據(jù)通道示意圖 在整個系統(tǒng)結(jié)構(gòu)中,居于核心的是 Web服務(wù)器,通 過強大的系統(tǒng)集成方法可以在應(yīng)用軟件中將關(guān)系數(shù)據(jù)庫 SQL Server、事務(wù)處理系統(tǒng)和其它應(yīng)用系統(tǒng)進行緊密集成,還可以提供對文件系統(tǒng)的訪問。 數(shù)據(jù)服務(wù)層負責(zé)連接到數(shù)據(jù)庫,構(gòu)建類型化結(jié)果集,然后將該結(jié)果集從對象的方法中返回。 數(shù)據(jù)服務(wù)層由一組數(shù)據(jù)訪問組件 WebData 構(gòu)成。這組數(shù)據(jù)訪問方法實際上充當(dāng)了分離的 DatSet 對象的一個包裝器。 WebData 的每個實例都表示了到數(shù)據(jù)源的一個連接,并向客戶端能夠返回一個包含一個或多個 DataTable 對象的 DataSet。 建立這個組件后,接著就向組件增加一組方法。第一個 方法名為 QueryDataSet,它返回填充了數(shù)據(jù)的類型化數(shù)據(jù)集的引用。第二個方法名為 Up_De_InsertData,它把類型化數(shù)據(jù)集作為一個參數(shù)接收,并將數(shù)據(jù)集中的變化提交到后臺的數(shù)據(jù)庫中。 Web服務(wù)在外貿(mào)系統(tǒng)中 的應(yīng)用 Web技術(shù)概述 Web 服務(wù) 是近兩年提出的一種新的面向服務(wù)的體系結(jié)構(gòu),是一種基于對象 /組件模型的分布計算技17 術(shù),其中定義了一組標(biāo)準(zhǔn)協(xié)議,用于接口定義、方法調(diào)用、基于 Inter 的構(gòu)件注冊以及各種應(yīng)用的實現(xiàn)。 Web服務(wù)建立在 HTTP、 XML和 SOAP等開發(fā)標(biāo)準(zhǔn)協(xié)議基礎(chǔ)之上,用于接口 定義、方法調(diào)用、基于 Inter的構(gòu)件注冊以及各種應(yīng)用的實現(xiàn)。 Web 服務(wù)以消息的形式提供服務(wù),它使用基于 XML 標(biāo)準(zhǔn)的消息作為數(shù)據(jù)交互的基本方法,這使得 Web 服務(wù)完全實現(xiàn)了與編程語言、系統(tǒng)平臺和對象模型的無關(guān)性。 Web 服務(wù)可以使用任何編程語言和對象模型在任何平臺上實現(xiàn),并且任意的應(yīng)用程序都可以使用 Web 服務(wù)。只要描述 Web 服務(wù)功能的接口、消息序列和通信協(xié)議不變, Web 服務(wù)和客戶端應(yīng)用程序的改變不會影響對方。Web 服務(wù)需要在異構(gòu)的網(wǎng)絡(luò)環(huán)境中使用,而在這個環(huán)境中又存在多種不同的操作系統(tǒng)、對象模型和編程語言,所 以 Web 服務(wù)應(yīng)具有以下特征: 松散耦合, Web 客戶僅使用自描述的、基于文本的消息與 Web 服務(wù)通信。 便捷的通信,所有連接到 Inter 上的系統(tǒng)和設(shè)備度可以與 Web 服務(wù)通信。 協(xié)議的通用性, Web 服 務(wù) 利用標(biāo)準(zhǔn)的 Inter 協(xié)議(如 HTTP, SMTP 等),解決的是而向 Web 的分布式計算;而 CORBA、 DCOM、 RMI 使用私有的協(xié)議,只能解決企業(yè)內(nèi)部的對等實體間的分布式計算。 完全的平臺、語言獨立性, Web 服務(wù) 進行了更高程度的抽象,只要遵守 Web 服務(wù)的接口即可進行服務(wù)的請求與調(diào)用。而 CORBA、 DCOM、 RMI 等模型要求在對等體系結(jié)構(gòu)間才能進行通信。如 CORBA 需要每個連接點都使用 ORB( Object Request Broker,對象請求代理), DCOM 需要每個連接點都使用 Windows平臺, RMI 需要每個連接點都使用 Java,否則雙方是不能通信的。 通用的數(shù)據(jù)格式,通過使用被廣泛支持的、標(biāo)準(zhǔn)的 XML 協(xié)議來進行數(shù)據(jù)交換,使得所有支持這一標(biāo)準(zhǔn)的系統(tǒng)都可以理解 Web 服務(wù)的消息。 WSDL(Web Service Description Language)定義了一套基于 XML 的語法,將 Web 服務(wù)描述為能夠進行消息交換的服務(wù)訪問點的集合。 WSDL 的定義為: WSDL 完全基于 XML,它把網(wǎng)絡(luò)服務(wù)描述為一組在包含面向文檔或面向過程信息上執(zhí)行操作的端點。 當(dāng)用戶獲取了 Web 服務(wù)的 WSDL 文檔后,就能從中得知 Web 服務(wù)所處的位置、 Web 服務(wù)包含的方法以及每個方法的參數(shù)和返回值的類型等信息,用戶根據(jù)這些信息就可以調(diào)用方法了。在 WSDL 里面支持四種訪問入口調(diào)用的模式: 單請求 (OneWay):服務(wù)接收一條消息。 通知 (Notification):服務(wù)發(fā)送一條消息。 請求 /響應(yīng) (Requestresponse):服務(wù)接收一條消息并發(fā)送一條相關(guān)的響應(yīng)消息。 要求響應(yīng) (SolicitResponse):服務(wù)發(fā)送一條消息并接收一條相關(guān)的響應(yīng)消息。 Web 服務(wù)的體系結(jié)構(gòu)是一種動態(tài)的集成方案,所有的服務(wù)都可以通過 UDDI 標(biāo)準(zhǔn)動態(tài)地被發(fā)現(xiàn)、綁定和使用,容易適應(yīng)系統(tǒng)的變動,提高系統(tǒng)的靈活性和伸縮性,完全屏蔽了不同軟件平臺的差異實現(xiàn)了不同平臺、應(yīng)用在分布式環(huán)境下的信息分布存儲與共享,實現(xiàn)了企業(yè)異構(gòu)應(yīng)用環(huán)境下高度可集成性。 所設(shè)計的外貿(mào)管理系統(tǒng)是基于 Web 服務(wù)的系統(tǒng),它可以讓每層集中在一個特定的角色上。通常包 括一個數(shù)據(jù)層,一個應(yīng)用服務(wù)器層 — 企業(yè)規(guī)則組件,以及使用這些組件的客戶端程序,采用這種分層的開發(fā)方法可得到一個更便于擴展的外貿(mào)企業(yè)應(yīng)用,同時也提高了組件的重用性,使應(yīng)用程序更加容易創(chuàng)建18 和維護,客戶端人機界面部分的程序開發(fā)工作得以簡化并且系統(tǒng)的安全性得到提高,最重要的是使用戶可以基于 Web 的應(yīng)用程序跨越 Inter 訪問數(shù)據(jù)。 服務(wù)層實現(xiàn) 根據(jù)系統(tǒng)的功能劃分,中間層應(yīng)包括部署在 Web 服務(wù)器上 Web 組件和安裝在遠程處理服務(wù)端上的遠程訪問對象組件。下面以合同全程監(jiān)控的 Web服務(wù)組件和遠程對象組件的實現(xiàn)來說明中間層 的實現(xiàn)過程。 合同監(jiān)控系統(tǒng) Web 服務(wù)組件的實現(xiàn) 首先創(chuàng)建一個名為 WebData 的 Web 連接,它包括一些方法,如: ConnectDataBase數(shù)據(jù)庫的連接 CreateContractData合同監(jiān)控數(shù)據(jù)生成 QueryContractData合同監(jiān)控數(shù)據(jù)查詢 合同監(jiān)控系統(tǒng) Web 服務(wù) WebData 的實現(xiàn)算法代碼如下 : //導(dǎo)入系統(tǒng)類,定義變量 Public Class WebData WebMethod() Public Function ConnectDataBase(ByVal myConnection As String) As Boolean//數(shù)據(jù)庫的連接 =myConnection Try Catch //根據(jù)實際情況進行異常處理 Return False End Try If =True Then //向應(yīng)用程序返回連接成功標(biāo)識 Else Return False End If End Function WebMethod() Public Function CreateContractData()//合同監(jiān)控數(shù)據(jù)生成 //變量定義 If Not(參 數(shù) Is Nothing) Then 19 For i=0 To 1 //取參數(shù)值,并分別傳遞給對象實例 Next End If //執(zhí)行數(shù)據(jù)生成過程 If 執(zhí)行成功 Then //執(zhí)行正常處理,返回結(jié)果