【正文】
If //執(zhí)行數(shù)據(jù)生成過程 If 執(zhí)行成功 Then //執(zhí)行正常處理,返回結(jié)果 Else //執(zhí)行異常處理 End If //關(guān)閉數(shù)據(jù)庫連接,退出 End Function Web 服務(wù)中的 DoWebData 方法創(chuàng)建了一個(gè)對 WebData 的引用。合同數(shù)據(jù)分析組件用于采集單個(gè)合同實(shí)時(shí)執(zhí)行數(shù)據(jù),以分析執(zhí)行情況。根據(jù)調(diào)用關(guān)系來區(qū)分服務(wù)器與客戶端。 服務(wù)器端算法: Public class ContractDataAnalysis 20 Dim myChannel As New TcpChannel(8023)//定義 Tcp 通道 (myChannel)//注冊通道 (Server,GetType(ContractDataAnalysis), GetContractData,) End class Public Function GetContractData(StrContract as string) as Boolean { //具體功能代碼 } 客戶端算法: Public class client Public Sub btCallServicees_Click(Byval StrContract as String) Dim my0bj as ContractDataAnalysis Dim myChannel as New TcpChannel (myChannel)//注冊通道 myObj=CType((GetType(ContractDataAnalysis), :8023/Server), ContractDataAnalysis)//激活遠(yuǎn)程服務(wù)端服務(wù) If IsNothing(my0bj) Then (8000,”無法創(chuàng)建代理 !”) Else (StrContract)//調(diào)用遠(yuǎn)程服務(wù)端對象 End If End Sub 在 Web 服務(wù)的 GetStockData 方法中需要通過遠(yuǎn)程處理技術(shù)調(diào)用遠(yuǎn)程計(jì)算機(jī) 上遠(yuǎn)程對象 AnyStockServe 的 GetStock 方法。 跨防火墻的通信 應(yīng)用程序有成許多用戶,而且分布在各地,那么客戶端和服務(wù)器之間的通信將是一個(gè)棘手的問題。最基木的形式是源代碼模塊或者類一級的重用,另一種形式是二進(jìn)制形式的組件重用。用標(biāo)準(zhǔn)的方法把功能和數(shù)據(jù)“暴露”出來,成為 Web 服務(wù),就可以讓任何指定的合作伙伴調(diào)用這些商務(wù)邏輯,而不管他們的系統(tǒng)在什么平臺上運(yùn)行,使用什么開發(fā)語言。 盡管 Web 服務(wù) 有許多的優(yōu)點(diǎn)和較遠(yuǎn)的應(yīng)用前景,但在使用過程中也發(fā)現(xiàn)了一些問題: 由于 Web服務(wù)目前的實(shí)施基礎(chǔ)還不是十分完備(例如,缺少配套的工具等),在對遺留數(shù)據(jù)信息進(jìn)行包裝 時(shí)需要大量的編程工作,建立 Web服務(wù)也需要投入大量的精力,所以 Web服務(wù)的集成成本是比較高的(當(dāng)然,新建的系統(tǒng)則沒有這些問題)。目前很多大型軟件公司如 IBM、 ORACLE等都在致力于這方面的研究和實(shí)踐。然而,如何測量和傳遞這個(gè)可靠性呢?當(dāng)Web服務(wù) 主機(jī)暫時(shí)離線時(shí)會發(fā)生什么情況?此時(shí),是尋求并使用由其他供應(yīng)商提供的可替代的 Web服務(wù)(使用相同的服務(wù)接口 ),還是等待原來的那個(gè)重新可用呢?同時(shí),在這些供應(yīng)商中,無法判斷哪些供應(yīng)商可以信賴。 Web服務(wù) 如何鑒別用戶身份?這方面 WSI推出的WSSecurity是一個(gè)框架級別的重要標(biāo)準(zhǔn),然而 WSSecurity的實(shí)現(xiàn)還很少見。目前的 J2EE與 .Net Web服務(wù) 在互聯(lián)上還存在著問題,甚至是 J2EE Web服務(wù) 的不同應(yīng)用商之間,諸如 BEA、 IBM、 SUN之間,仍然存在著問題,一方面, Web服務(wù) 規(guī)范的數(shù)量非常多,不同的技術(shù)提供商可能采用不同的技術(shù)規(guī)范來實(shí)現(xiàn)相同的技術(shù)特性(如安全性和事務(wù)性),同時(shí),即使是實(shí)現(xiàn)了相同的規(guī)范,然而對于規(guī)范細(xì)節(jié)的理解上仍然有可能有所不同,這就造成了不同的 Web服務(wù) 平臺之間的互操作性問題。本系統(tǒng) Web服務(wù) DTS在實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)移過程中,同原來采用 MS DTS相比,速度較慢,相對于企業(yè)級別的大型應(yīng)用還存在不足。 數(shù)據(jù)庫是外貿(mào)管理系統(tǒng)中非常重要的組成部分,數(shù)據(jù)庫中存儲著外貿(mào)業(yè)務(wù)的全部數(shù)據(jù),用戶信息、文件信息等重要數(shù)據(jù)信息,整個(gè)系統(tǒng)都圍繞著數(shù)據(jù)庫展開設(shè)計(jì)開發(fā),數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計(jì)和安全維護(hù)將直接影響到整個(gè)外貿(mào)業(yè)務(wù)管理系統(tǒng)的設(shè)計(jì)開發(fā)和軟件質(zhì)量。這包括表的設(shè)計(jì)、表的數(shù)量和大小、表的設(shè)計(jì)規(guī)范化程度、事務(wù)的設(shè)計(jì)、游標(biāo)的使用等等。包括選擇標(biāo)準(zhǔn)、操作符、函數(shù) 、表達(dá)式和子查詢、聚集函數(shù)、排序和分組等。 數(shù)據(jù)庫設(shè)計(jì)原則如下: 合理使用索引 索引是數(shù)據(jù)庫中重要的數(shù)據(jù)結(jié)構(gòu),它的根本目的就是提高查詢效率。比如在雇員表的“性別”列上只有“男”與“女”兩個(gè)不同值,因此就無必要建立索引。對于比較窄的索引來說,每頁上能存放較多的索引行,而且索引的級別也較少,這樣緩存中能放置更多的索引頁,這樣也減少了 I/O 操作。 (9)分簇索引不應(yīng)該構(gòu)造在經(jīng)常變化的列上,因?yàn)檫@會引起整行的移動。為了避免不必要的排序,就要正確地增建索引,合理地合并數(shù)據(jù)表(盡管有時(shí)可能影響表的規(guī)范化 ,但相對于效率的提高是值得的)。盡管也許在所有的檢查列上都有索引,但某些形式的 where 子句會強(qiáng)迫優(yōu)化器使用順序存取,這一點(diǎn)也應(yīng)注意。 避免困難的正規(guī)表達(dá)式 Mathes 和 Like 關(guān)鍵字支持通配符匹配,但這種匹配特別耗時(shí)。它有助于避免多重排序操作,而且在其他方面還能簡化優(yōu)化器的工作。 數(shù)據(jù)庫平臺選型和設(shè)計(jì) (一)數(shù)據(jù)庫平臺選型 本系統(tǒng)使用 SQL Server 2020 作為服務(wù)器端關(guān)系數(shù)據(jù)庫管理系統(tǒng)。 SQL Server 2020 作為一種優(yōu)秀的 C/S 體系結(jié)構(gòu)的數(shù)據(jù)庫管理信息系統(tǒng),具有以下特點(diǎn)。 多線程、單服務(wù)器進(jìn)程的結(jié)構(gòu)節(jié)省了操作系統(tǒng)開銷,提高了內(nèi)存的利用率,所以在 SQL Server 202025 運(yùn)行環(huán)境中,當(dāng)用戶數(shù)量增加時(shí),既能保持很大的事務(wù)吞吐量,又能使系統(tǒng)的快速響應(yīng)時(shí)間仍呈線性(而非指數(shù)式)增加,使 SQL Server 服務(wù)器具有強(qiáng)大的聯(lián)機(jī)事務(wù)處理能力,能為數(shù)百或更多的聯(lián)機(jī)用戶提供服務(wù) 。 觸發(fā)器是一種特殊的存儲過程,它可以在用戶對表進(jìn)行插入、刪除或更新操 作時(shí)被觸發(fā)而執(zhí)行。 SQL Server 2020 的分布式處理能力還在于它能與 Oracle, Informix, Foxpro 等 異構(gòu)關(guān)系數(shù)據(jù)庫互聯(lián)甚至和文件系統(tǒng)也能聯(lián)接, SQL Server 能橫跨幾個(gè)不同的網(wǎng)絡(luò)協(xié)議進(jìn)行通信,其中包括:命名管道、Novell、 IPX/SPX 及 TCP/IP 協(xié)議等。從對可升級性性能的增強(qiáng)、到與微軟 Office軟件的深度融合, SQL SERVER 2020 將幫助您,將商業(yè)智能擴(kuò)展到您業(yè)務(wù)的每一個(gè)層次。 在 SQL SERVER 2020 中,報(bào)表服務(wù)將為在線分析處理( OLAP)環(huán)境提供自我服務(wù)、創(chuàng)建最終用戶特別報(bào)告、增強(qiáng)查詢方面的開發(fā)水平,并為豐富和便于維護(hù)企業(yè)匯報(bào)環(huán)境,就允許升級方面,提供增26 進(jìn)的性能。 通過對外貿(mào)業(yè)務(wù)過程的認(rèn)真歸納總結(jié),結(jié)合日常工作的實(shí)際經(jīng)驗(yàn),依據(jù)相關(guān)外貿(mào)管理的規(guī)范,有效地實(shí)現(xiàn)了外貿(mào)業(yè)務(wù)由現(xiàn)實(shí)世界到信息世界的轉(zhuǎn)化,對系統(tǒng)的中的數(shù)據(jù)流進(jìn)行精確定義,針對不同的子業(yè)務(wù),繪制出各自的子系統(tǒng)數(shù)據(jù)流圖從而 達(dá)到設(shè)計(jì)數(shù)據(jù)庫的目的。 確定了上述數(shù)據(jù)庫結(jié)構(gòu)的創(chuàng)建方案后, 在對數(shù)據(jù)庫中表的設(shè)計(jì)將考慮以下因素 : 應(yīng)用數(shù)據(jù)庫表的設(shè)計(jì)首先要考慮性能問題;對于數(shù)據(jù)庫表要定義合理的索引字段,避免創(chuàng)建無用索引以及需要用到的索引沒有創(chuàng)建;數(shù)據(jù)庫表的結(jié)構(gòu)在設(shè)計(jì)上要有一定的擴(kuò)展性,即可以預(yù)先定義冗余字段,便于業(yè)務(wù)變更或增加新業(yè)務(wù)對于數(shù)據(jù)庫表結(jié)構(gòu)的調(diào)整;對于數(shù)據(jù)庫表的設(shè)計(jì)要考慮到數(shù)據(jù)容量和增長速度的特點(diǎn),在實(shí)現(xiàn)業(yè)務(wù)邏輯的前提下,盡可能減少對大表中記錄的查找操作,必要是采用了增加庫表和使用臨時(shí)表等方法。具體表結(jié)構(gòu)如圖 37 所示。 在本系統(tǒng)中,各種訪問權(quán)限的差異體現(xiàn)在用戶可獲得的功能菜單樹是有區(qū)別的,即使菜單樹中的各結(jié)點(diǎn)相同,也有可能每個(gè)葉子功能項(xiàng)對應(yīng)的操作權(quán)限各不相同。雖然此處是針對于外貿(mào)合同進(jìn)行,但在設(shè)計(jì)中充分考慮了向一般通用合同的轉(zhuǎn)換(即適用于普通企業(yè)的購、銷合同)。在這一過程中,需要考慮的因素主要有以下幾點(diǎn) : 每一結(jié)點(diǎn)需傳遞的事務(wù)量,每一結(jié)點(diǎn)的數(shù)據(jù)量,網(wǎng)絡(luò)的性能與可靠性 ; 各結(jié)點(diǎn)速度,磁盤容量 ; 若結(jié)點(diǎn)間連接不通后的訪問規(guī)則 ; 表間聯(lián)系對數(shù)據(jù)完整性的影響等。 30 科學(xué) 技術(shù)學(xué)院 SCIENCE amp。在應(yīng)用系統(tǒng)中,不同的功能會需要訪問不同數(shù)據(jù)庫中的數(shù)據(jù)。29 圖 39 與合同相關(guān)的數(shù)據(jù)庫表結(jié)構(gòu)圖 在數(shù)據(jù)庫平臺確定后首先進(jìn)行數(shù)據(jù)庫結(jié)構(gòu)和表的設(shè)計(jì)。因此,用戶管理部分考慮到訪問權(quán)限的控制、用戶操作的方便等多方面,最后形成了下列相關(guān)的數(shù)據(jù)庫表,具體內(nèi)容如圖 38 所示。業(yè)務(wù)管理軟件中,不同用戶具有不同的訪問權(quán)限,而且同一個(gè)用戶在不同的場合也會具有不同的身份,每種身份對應(yīng)于不同的訪問權(quán)限。需要知道有哪些具體的編號時(shí),可以直接訪問該表。試想,如果數(shù)據(jù)庫的表設(shè)計(jì)的十分煩瑣,各表的關(guān)系連接設(shè)計(jì)的不是很合理,那么當(dāng)用戶使用時(shí),調(diào)用數(shù)據(jù)庫的響應(yīng)時(shí)間會很慢,那么最受影響的就是公司的經(jīng)濟(jì)效益。 并行分割處理,創(chuàng)建遠(yuǎn)程關(guān)系在線分析處理 (ROLAP)或混合在線分析處理 (HOLAP)分割,分布式分割單元,持續(xù)計(jì)算,和預(yù)制緩存等特性,極大地提升了 SQL Server 2020 中分析服務(wù)的可伸縮性和性能。 SQL SERVER 2020 將引進(jìn)一個(gè)完整的、數(shù)據(jù)傳輸服務(wù)的、重新設(shè)計(jì)方案 ,這一方案為用戶提供了一個(gè)全面的摘錄、傳輸和加載平臺。 SQL Server 2020 可以通過 Windows 2020 Server 的磁盤鏡像和雙工或直接使用 SQL Server 2020提供的 Disk Mirror 命令來設(shè)置 SQL Server 設(shè)備鏡像來實(shí)現(xiàn) 。 SQL Server 2020 通過定義觸發(fā)器的方法提供了對參照完整性的支持,可以統(tǒng)一管理控制。 存儲過程是一組經(jīng)過預(yù)編譯的 Transact SQL 語句,經(jīng)定義命名后作為一個(gè)數(shù)據(jù)庫對象存儲在數(shù)據(jù)字典中。具體地說就是只有一個(gè)服務(wù)器進(jìn)程,所有訪問 數(shù)據(jù)庫的各客戶進(jìn)程都聯(lián)結(jié)到這個(gè)單一服務(wù)器進(jìn)程上。另外,它自身附帶的功能強(qiáng)大的 Transact SQL 語言可用來建立和維護(hù)數(shù)據(jù)庫、輸入和修改數(shù)據(jù)。但要注意,臨時(shí)表創(chuàng)建后不會反映主表的修改。如果把語句改為: SELECT*FROM customer WHERE zipcode98000,在執(zhí)行查詢時(shí)就會利用索引來查詢,顯然會大大提高速度。而且查詢嵌套層次越多,效率越低,因此應(yīng)當(dāng)盡量避免子查詢。 消除對大型表行數(shù)據(jù)的順序存取 在嵌套查詢中,表的順序存取對查詢效率可能產(chǎn)生致命的影響。 避免或簡化排序 應(yīng)當(dāng)盡量簡化或避免對大型表進(jìn)行重復(fù)的排序。 (7)對經(jīng)常被更新的列不能建立索引,否則會嚴(yán)重影啊系統(tǒng)性能。 (4)如果待排序的列有多個(gè),可以在這些列上建立復(fù)合索引。 (2)在頻繁進(jìn)行排序或分組(即進(jìn)行 group by 或 order by 操作)的列上建立索引。包括內(nèi)存的利用、磁盤的使用、 CPU 的使用、網(wǎng)絡(luò)的使用等。包括索引的數(shù)目及其在表上的分布和類型、鍵的使用、填充因子的利用、唯一性、約束的使用、索引頁面利用率、分布和密度統(tǒng)計(jì)的精確度以及對查詢的適用性。23 SQL 數(shù)據(jù)庫關(guān)鍵字必須能確定唯一的記錄,在進(jìn)行數(shù)據(jù)查詢時(shí)是依靠索引來優(yōu)化查詢和交易的速度。 數(shù)據(jù)庫設(shè)計(jì) 數(shù)據(jù)庫技術(shù)介紹 為了保證外貿(mào)業(yè)務(wù)服務(wù)的一致性、完整性、并發(fā)性,實(shí)現(xiàn)數(shù)據(jù)的快速存儲,外貿(mào)業(yè)務(wù)軟件的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)直接關(guān)系著整個(gè)系統(tǒng)的運(yùn)行效率。傳統(tǒng)的事 務(wù)處理在事務(wù)生存時(shí)間很短的封閉環(huán)境中很有效,但在事務(wù)可能跨越幾小時(shí)甚至幾天的開放環(huán)境中就不那么實(shí)用了,前而討論了 Web服務(wù) 事務(wù)性的初步實(shí)現(xiàn),然而從整體解決方案來看,事務(wù)性的實(shí)現(xiàn)還沒有很好的解決方案。供應(yīng)商合作,這些 Web服務(wù) 又如何適應(yīng)你的安全性設(shè)置呢?這方面已經(jīng)有了一些實(shí)現(xiàn)工作(Micros