【文章內(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ù)邏輯層相當于應(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)用程序,用于負責和用戶進行數(shù)據(jù)交互以及與應(yīng)用服務(wù)器進行數(shù)據(jù)交互。業(yè)務(wù)層,即應(yīng)用服務(wù)器中間層負責接收從客戶端傳遞來的請求,進行業(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)下,表示層只是一個盡可能簡單的操作界面,負責給用戶提供交互界面和顯示數(shù)據(jù)。而真正的業(yè)務(wù)邏輯,則都集中編寫在中間層中,統(tǒng)一部署在應(yīng)用程序服務(wù)器中。實際使用時,由各個客戶端分別調(diào)用中間層,然后再由中間層實現(xiàn)對數(shù)據(jù)庫的訪問。這樣,當業(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ù)層負責連接到數(shù)據(jù)庫,構(gòu)建類型化結(jié)果集,然后將該結(jié)果集從對象的方法中返回。 數(shù)據(jù)服務(wù)層由一組數(shù)據(jù)訪問組件 WebData 構(gòu)成。這組數(shù)據(jù)訪問方法實際上充當了分離的 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ù),其中定義了一組標準協(xié)議,用于接口定義、方法調(diào)用、基于 Inter 的構(gòu)件注冊以及各種應(yīng)用的實現(xiàn)。 Web服務(wù)建立在 HTTP、 XML和 SOAP等開發(fā)標準協(xié)議基礎(chǔ)之上,用于接口 定義、方法調(diào)用、基于 Inter的構(gòu)件注冊以及各種應(yīng)用的實現(xiàn)。 Web 服務(wù)以消息的形式提供服務(wù),它使用基于 XML 標準的消息作為數(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ù) 利用標準的 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ù)格式,通過使用被廣泛支持的、標準的 XML 協(xié)議來進行數(shù)據(jù)交換,使得所有支持這一標準的系統(tǒng)都可以理解 Web 服務(wù)的消息。 WSDL(Web Service Description Language)定義了一套基于 XML 的語法,將 Web 服務(wù)描述為能夠進行消息交換的服務(wù)訪問點的集合。 WSDL 的定義為: WSDL 完全基于 XML,它把網(wǎng)絡(luò)服務(wù)描述為一組在包含面向文檔或面向過程信息上執(zhí)行操作的端點。 當用戶獲取了 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 標準動態(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)用程序返回連接成功標識 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é)果