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