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