PDM(Product Data Management,產(chǎn)品數(shù)據(jù)管理)是以軟件為基礎(chǔ),以產(chǎn)品管理為核心,實(shí)現(xiàn)對(duì)產(chǎn)品相關(guān)的數(shù)據(jù)、過(guò)程、資源一體化集成管理的技術(shù)。傳統(tǒng)C/S(Client/Server,客戶端/服務(wù)端)架構(gòu)的PDM軟件主要應(yīng)用于企業(yè)內(nèi)部的信息管理,而企業(yè)之間的異地協(xié)同設(shè)計(jì)則要求能夠通過(guò)互聯(lián)網(wǎng)實(shí)現(xiàn)PDM產(chǎn)品數(shù)據(jù)與資源的跨平臺(tái)、跨地域的共享和管理,但由于企業(yè)之間的應(yīng)用軟件的異構(gòu)性和數(shù)據(jù)傳輸過(guò)程中網(wǎng)絡(luò)通信協(xié)議的不同,導(dǎo)致了PDM的產(chǎn)品數(shù)據(jù)與資源在企業(yè)之間共享和管理難以實(shí)現(xiàn)。
目前,基于Web的PDM系統(tǒng)是PDM產(chǎn)品技術(shù)發(fā)展的重要趨勢(shì),Sun Yong采用Java EE技術(shù),設(shè)計(jì)了B/S(Browser/Service)模式的PDM系統(tǒng),范國(guó)磊等以J2EE平臺(tái)為基礎(chǔ),根據(jù)SOA(面向服務(wù)的構(gòu)架)的特點(diǎn)對(duì)PDM系統(tǒng)異地協(xié)同進(jìn)行了研究,Li Shu-juan等分析了Web技術(shù)和PDM技術(shù)的關(guān)系,提出了三層模型的PDM系統(tǒng),本文在三層模型的PDM系統(tǒng)框架的基礎(chǔ)上,研究了基于Web的PDM四層模型結(jié)構(gòu),以開(kāi)目公司C/S架構(gòu)PDM軟件為例,構(gòu)建了Web化的PDM系統(tǒng)應(yīng)用,采用ADO.NET訪問(wèn)PDM數(shù)據(jù)庫(kù),根據(jù)表名查詢的表結(jié)構(gòu)信息和主鍵分批訪問(wèn)PDM服務(wù)端系統(tǒng)中的數(shù)據(jù)信息,然后將數(shù)據(jù)通過(guò)WCF通信平臺(tái)傳輸給PDM客戶端,實(shí)現(xiàn)C/S架構(gòu)PDM的Web化應(yīng)用的大批量數(shù)據(jù)的網(wǎng)絡(luò)分批傳輸。
1 C/S架構(gòu)PDM的Web化系統(tǒng)總體結(jié)構(gòu)
當(dāng)前,基于Web的PDM系統(tǒng)多數(shù)采用B/W/D(瀏覽器/Web服務(wù)器/數(shù)據(jù)庫(kù))三層構(gòu)架,其中,Web服務(wù)器實(shí)現(xiàn)PDM所有的業(yè)務(wù)邏輯,并進(jìn)行與瀏覽器的通信和數(shù)據(jù)庫(kù)的訪問(wèn),這將需要大量重寫(xiě)PDM的業(yè)務(wù)邏輯,同時(shí),也不利于實(shí)現(xiàn)與異構(gòu)系統(tǒng)B/S(Browser/Server)架構(gòu)PDM的系統(tǒng)集成和PDM產(chǎn)品數(shù)據(jù)二次開(kāi)發(fā)的可擴(kuò)展性,根據(jù)三層架構(gòu)PDM系統(tǒng)的缺陷,采用四層模型的PDM系統(tǒng),四層模型的PDM系統(tǒng)與三層架構(gòu)的PDM系統(tǒng)最大的變化是將Web服務(wù)器的Web服務(wù)層和業(yè)務(wù)邏輯層分開(kāi),減輕了PDM系統(tǒng)Web服務(wù)器的負(fù)載,更重要的是將Web服務(wù)層和業(yè)務(wù)邏輯層分開(kāi)后,PDM服務(wù)端和數(shù)據(jù)庫(kù)之間依然可以采用傳統(tǒng)C/S模式,這樣PDM服務(wù)端可以更多的專注于傳統(tǒng)開(kāi)發(fā),只需將得到的業(yè)務(wù)邏輯數(shù)據(jù)封裝后發(fā)布到Web服務(wù)層,然后給PDM客戶端調(diào)用,這樣便可以更大程度上對(duì)傳統(tǒng)C/S模式PDM系統(tǒng)數(shù)據(jù)和業(yè)務(wù)邏輯進(jìn)行復(fù)用,四層模型的PDM系統(tǒng)如圖1所示,包括用戶層、Web服務(wù)層、業(yè)務(wù)邏輯層和數(shù)據(jù)服務(wù)層,其各個(gè)功能層的主要功能如下:
(1)用戶層:PDM客戶端提供可視化的用戶操作界面,具有數(shù)據(jù)請(qǐng)求和瀏覽的輸入輸出,通過(guò)與Web服務(wù)層進(jìn)行通信獲取PDM產(chǎn)品數(shù)據(jù),但不能直接訪問(wèn)數(shù)據(jù)庫(kù)。
(2)Web服務(wù)層:接收并組織用戶層的消息請(qǐng)求,提交用戶層消息請(qǐng)求到PDM服務(wù)端;同時(shí),支持對(duì)服務(wù)端響應(yīng)數(shù)據(jù)的緩存。
(3)業(yè)務(wù)邏輯層:在傳統(tǒng)PDM的業(yè)務(wù)邏輯的基礎(chǔ)上,支持Web服務(wù)層消息請(qǐng)求的進(jìn)程通信,實(shí)現(xiàn)對(duì)產(chǎn)品數(shù)據(jù)、過(guò)程和資源信息的管理,提供數(shù)據(jù)管理、變更管理、系統(tǒng)集成、數(shù)據(jù)安全等傳統(tǒng)C/S架構(gòu)PDM的業(yè)務(wù)功能。
(4)數(shù)據(jù)服務(wù)層:提供用戶層最終瀏覽的數(shù)據(jù)源,包括CAD圖紙、CAPP工藝過(guò)程、MES排產(chǎn)計(jì)劃文檔等數(shù)據(jù)。
根據(jù)PDM系統(tǒng)的四層結(jié)構(gòu)模型,在傳統(tǒng)C/S架構(gòu)PDM軟件基礎(chǔ)上,開(kāi)發(fā)PDM客戶端,根據(jù)C/S架構(gòu)PDM的Web化的企業(yè)業(yè)務(wù)需求部署數(shù)據(jù)的Web服務(wù)層,將PDM服務(wù)端的數(shù)據(jù)傳輸給PDM客戶端,實(shí)現(xiàn)C/S架構(gòu)PDM的Web化應(yīng)用。
圖1 C/S架構(gòu)PDM的Web化系統(tǒng)總體結(jié)構(gòu)
2 C/S架構(gòu)PDM的Web化系統(tǒng)應(yīng)用的構(gòu)建過(guò)程
C/S架構(gòu)PDM的Web化的實(shí)質(zhì)是PDM功能模塊數(shù)據(jù)集能夠按照客戶需求安全有效的從PDM服務(wù)端傳送到PDM客戶端,實(shí)現(xiàn)PDM客戶端與PDM服務(wù)端產(chǎn)品數(shù)據(jù)的一致性,本文依托開(kāi)目公司C/S架構(gòu)的PDM產(chǎn)品軟件,采用VS2010開(kāi)發(fā)環(huán)境,構(gòu)建了Web化的PDM系統(tǒng)應(yīng)用,在四層結(jié)構(gòu)模型中,除了數(shù)據(jù)服務(wù)層依然采用PDM底層數(shù)據(jù)庫(kù)信息,其他的三層根據(jù)應(yīng)用需求來(lái)構(gòu)建。
2.1 用戶層的構(gòu)建
本文的用戶層主要是根據(jù)開(kāi)目公司PDM軟件二次平臺(tái)來(lái)定制,其提供了集成的可視化的輸入輸出界面,但需要建立一個(gè)可供PDM系統(tǒng)調(diào)用的客戶程序,其目的主要是為了引入發(fā)布的WCF服務(wù)ServiceReferences,根據(jù)其發(fā)布的服務(wù)契約訪問(wèn)PDM服務(wù)端數(shù)據(jù)信息。
2.2 Web服務(wù)層的構(gòu)建
Web服務(wù)層主要通過(guò)采用新型的WCF分布式通信技術(shù)構(gòu)建,WCF是.Net建立和運(yùn)行面向服務(wù)的應(yīng)用程序的統(tǒng)一架構(gòu),它整合了.NET平臺(tái)下所有的和分布式系統(tǒng)有關(guān)的技術(shù),例如ASP.NET Web服務(wù)(ASMX)、增強(qiáng)Web服務(wù)擴(kuò)展(WSE)、.NET Remoting、企業(yè)(EntERPrise Service)和微軟消息隊(duì)列(MSMQ)。WCF是典型的面向服務(wù)的、松耦合的、可互操作的平臺(tái),WCF不僅可以實(shí)現(xiàn)跨平臺(tái)跨地域的通信,并且支持包括HTTP、TCP、Named Pipe等多種通信協(xié)議。
WCF的通信模型如圖2所示,WCF各個(gè)應(yīng)用的通信是由終結(jié)點(diǎn)(Endpoint)來(lái)實(shí)現(xiàn),其客戶端和服務(wù)端通過(guò)交換Endpoint進(jìn)行通信,每個(gè)Endpoint由地址(Address)、綁定(Binding)和契約(Contact)三個(gè)部分組成,其中Address解決服務(wù)尋址問(wèn)題;Binding實(shí)現(xiàn)服務(wù)器端和客戶端之間通信的所有細(xì)節(jié),包括網(wǎng)絡(luò)傳輸、消息編碼以及其他為實(shí)現(xiàn)某種功能(如安全、可靠傳輸、事務(wù)等)對(duì)消息進(jìn)行的相應(yīng)處理;Contract定義了消息交換模式和消息結(jié)構(gòu)。
圖2 WCF通信模型
WCF提供了三種實(shí)例上下文的服務(wù)模式:?jiǎn)握{(diào)(Per-Call)模式、會(huì)話(Per-Session)模式和單例(Single)模式,本系統(tǒng)采用會(huì)話模式,可以保持調(diào)用某個(gè)WCF服務(wù)的同一個(gè)客戶端多次服務(wù)調(diào)用的狀態(tài),因而在定義了OperationContract之后需要并在契約中將ServiceBehaviorAttribute特性將上下文模式設(shè)定為InstanceContextMode.PerSession,同時(shí)在服務(wù)契約上定義會(huì)話模式為Required。
2.3 業(yè)務(wù)邏輯層的構(gòu)建
業(yè)務(wù)邏輯層是溝通Web服務(wù)層和數(shù)據(jù)庫(kù)的橋梁,是整個(gè)Web化PDM系統(tǒng)的核心,為了降低服務(wù)端的負(fù)載,在PDM客戶端未請(qǐng)求業(yè)務(wù)的時(shí)候是PDM服務(wù)端是關(guān)閉的,為了實(shí)現(xiàn)在PDM客戶端響應(yīng)請(qǐng)求的過(guò)程中開(kāi)啟后臺(tái)PDM服務(wù)端,首先根據(jù)Directory.SetCurrentDirectory設(shè)定PDM安裝目錄,然后通過(guò)System.IO空間的System.Diagno stics.Process類定義一個(gè)實(shí)體,接著將Startlnfo屬性類的FileName設(shè)定PDM的安裝路徑,Arguments設(shè)定用戶名和密碼的命令行參數(shù),假設(shè)用戶名sa,密碼為123,則設(shè)定命令行參數(shù)為-u sa-p 123,這樣便可以開(kāi)啟后臺(tái)PDM服務(wù)端系統(tǒng)了。
后臺(tái)的PDM服務(wù)端系統(tǒng)開(kāi)啟后,需要組織PDM服務(wù)端可供網(wǎng)絡(luò)傳輸?shù)漠a(chǎn)品數(shù)據(jù),本系統(tǒng)產(chǎn)品數(shù)據(jù)的獲取采用兩種方式:一種是根據(jù)自定義XML調(diào)取PDM系統(tǒng)API(Application Programming Interface,應(yīng)用程序編程接口)獲取業(yè)務(wù)信息;一種是直接訪問(wèn)操作數(shù)據(jù)庫(kù)獲取。
(1)XML數(shù)據(jù)交互技術(shù)
XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)是一種標(biāo)準(zhǔn)通用的結(jié)構(gòu)性標(biāo)記語(yǔ)言,并允許用戶自己定義標(biāo)記語(yǔ)言的源語(yǔ)言.XML采用統(tǒng)一結(jié)構(gòu)化方式來(lái)描述并交換獨(dú)立于應(yīng)用程序和廠商的結(jié)構(gòu)化數(shù)據(jù),具有強(qiáng)大的擴(kuò)展性,同時(shí),XML支持對(duì)復(fù)雜數(shù)據(jù)關(guān)系的表達(dá)并提供數(shù)據(jù)節(jié)點(diǎn)相關(guān)搜索,XML的基本格式為<Tag>文本內(nèi)容</Tag>。
首先通過(guò)SOCKET通信PDM端口號(hào),連接到PDM服務(wù)端系統(tǒng),根據(jù)PDM系統(tǒng)提供的API,自定義獲取業(yè)務(wù)數(shù)據(jù)的XML,然后根據(jù)File Stream類讀取XML并將取值傳給XmIDocument類,通過(guò)遍歷XmlDocument的XmINode各個(gè)節(jié)點(diǎn),獲取到PDM產(chǎn)品數(shù)據(jù)的值后,重新組織一個(gè)有取值結(jié)果的XML,再通過(guò)XmINodeList截取想要的節(jié)點(diǎn)值。
(2)ADO.NET數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)
ADO.NET是.NET平臺(tái)下公開(kāi)訪問(wèn)服務(wù)的類,它為創(chuàng)建分布式數(shù)據(jù)共享應(yīng)用程序提供了豐富的組件。ADO.NET支持Microsoft SQL和XML等數(shù)據(jù)源的訪問(wèn),ADO.NET的對(duì)象模型如圖3所示。
圖3 ADO.NET的對(duì)象模型
根據(jù)ADO.NET的對(duì)象模型,通過(guò)Connection對(duì)象進(jìn)行對(duì)數(shù)據(jù)庫(kù)的連接,創(chuàng)建Command數(shù)據(jù)命令對(duì)象,然后根據(jù)數(shù)據(jù)需求,通過(guò)DataAdapter對(duì)象對(duì)數(shù)據(jù)進(jìn)行查詢、刪除、插入、更新操作或通過(guò)DataReader對(duì)象讀取數(shù)據(jù),在數(shù)據(jù)處理的過(guò)程中,以DataSet對(duì)象為一個(gè)小數(shù)據(jù)集,DataSet對(duì)象中包含數(shù)據(jù)表、數(shù)據(jù)列、數(shù)據(jù)行、視圖、約束以及關(guān)系。DataSet對(duì)象也支持與XML文件的交互轉(zhuǎn)換,調(diào)用ReadXML和WriteXML即可進(jìn)行XML的讀寫(xiě)。
對(duì)于零部件繁多的產(chǎn)品,其在數(shù)據(jù)庫(kù)中保存的數(shù)據(jù)內(nèi)容可能有上萬(wàn)條,如果采用一次性將數(shù)據(jù)從PDM服務(wù)端通過(guò)網(wǎng)絡(luò)傳輸?shù)絇DM客戶端,可能會(huì)由于網(wǎng)絡(luò)速度差出現(xiàn)卡死,數(shù)據(jù)崩壞等錯(cuò)誤,而本文通過(guò)查詢的表結(jié)構(gòu)信息和主鍵信息,將數(shù)據(jù)分段傳輸,首先根據(jù)查找的表名通過(guò)Connection對(duì)象的GetSchema方法獲得表結(jié)構(gòu)信息,當(dāng)GetSchema的第一個(gè)參數(shù)為Columns,獲取的為表結(jié)構(gòu)的所有信息,當(dāng)一個(gè)參數(shù)為IndexColumns時(shí)獲取的是主鍵列結(jié)構(gòu)信息,根據(jù)表結(jié)構(gòu)信息的主鍵變量的字段結(jié)構(gòu),定義查找數(shù)據(jù)排序方法,將它賦給Command對(duì)象構(gòu)造函數(shù)的第一個(gè)參數(shù),然后將所得通過(guò)DataAdapter或DataReader對(duì)象傳給定義的DataSet對(duì)象。DataSet對(duì)象支持Web的序列化傳輸,PDM客戶端可以通過(guò)PDM服務(wù)端返回的DataSet對(duì)象讀取數(shù)據(jù)。
3 C/S架構(gòu)PDMIYJWeb化系統(tǒng)應(yīng)用的實(shí)現(xiàn)過(guò)程
根據(jù)上一節(jié)所述的C/S架構(gòu)PDM的Web化系統(tǒng)應(yīng)用的構(gòu)建方法,C/S架構(gòu)PDM的Web化系統(tǒng)應(yīng)用過(guò)程如圖4所示,將PDM客戶端和PDM服務(wù)端安裝在不同的IP主機(jī)上,與C/S架構(gòu)PDM系統(tǒng)直接操作數(shù)據(jù)庫(kù)不同,PDM客戶端只有顯示數(shù)據(jù)的操作界面,不能直接訪問(wèn)數(shù)據(jù)庫(kù),所有的數(shù)據(jù)是通過(guò)PDM服務(wù)端發(fā)布到ⅡS上的WCF服務(wù)訪問(wèn)的,開(kāi)啟PDM客戶端并定義操作界面,進(jìn)而請(qǐng)求PDM服務(wù)端庫(kù)中的數(shù)據(jù),客戶端的數(shù)據(jù)請(qǐng)求通過(guò)WCF服務(wù)通信機(jī)制,連接到服務(wù)端的通信進(jìn)程中,為了實(shí)現(xiàn)PDM產(chǎn)品數(shù)據(jù)的安全訪問(wèn),采用用戶口令的方式驗(yàn)證客戶端請(qǐng)求的安全性,若判定客戶端請(qǐng)求是安全的,將通過(guò)服務(wù)端通信進(jìn)程開(kāi)啟PDM服務(wù)端,PDM服務(wù)端根據(jù)客戶端的請(qǐng)求,通過(guò)自有的對(duì)象模型(數(shù)據(jù)管理、編碼管理、過(guò)程管理等)組織業(yè)務(wù)邏輯,通過(guò)XML文件向PDM產(chǎn)品數(shù)據(jù)庫(kù)發(fā)送數(shù)據(jù)請(qǐng)求或采用ADO.NET的數(shù)據(jù)庫(kù)訪問(wèn)得到所需要的PDM產(chǎn)品數(shù)據(jù),再通過(guò)原先的通信路徑將得到的產(chǎn)品數(shù)據(jù)返回給PDM客戶端,實(shí)現(xiàn)C/S架構(gòu)PDM的Web化系統(tǒng)應(yīng)用的實(shí)現(xiàn),在大批量數(shù)據(jù)的Web傳輸過(guò)程中,由于Web化的PDM系統(tǒng)與C/S架構(gòu)PDM系統(tǒng)不同,PDM客戶端不能直接訪問(wèn)數(shù)據(jù)庫(kù),即不可能像C/S架構(gòu)PDM系統(tǒng)總是在本地連接數(shù)據(jù)庫(kù),需服務(wù)端組織并分發(fā)數(shù)據(jù),為了數(shù)據(jù)傳輸?shù)募皶r(shí)性和安全性,需要將數(shù)據(jù)分批傳輸?shù)娇蛻舳恕?/p>
圖4 C/S架構(gòu)PDM的Web化系統(tǒng)應(yīng)用過(guò)程
4 系統(tǒng)應(yīng)用實(shí)例
本文以開(kāi)目公司PDM產(chǎn)品為例,采用第3節(jié)所講的C/S架構(gòu)PDM的Web化系統(tǒng)應(yīng)用的實(shí)現(xiàn)過(guò)程,對(duì)產(chǎn)品軟件進(jìn)行Web化實(shí)際應(yīng)用,并驗(yàn)證PDM客戶端不直接訪問(wèn)數(shù)據(jù)庫(kù),實(shí)現(xiàn)PDM數(shù)據(jù)庫(kù)通過(guò)PDM服務(wù)端業(yè)務(wù)邏輯組織后通過(guò)Web到達(dá)PDM客戶端。
下面展示的三張圖為信息流的依次傳遞過(guò)程,PDM大批量數(shù)據(jù)和信息從圖5的底層數(shù)據(jù)庫(kù)到圖6的Web服務(wù)層的ⅡS上,然后再到圖7的PDM客戶端界面上,如圖5為汽車產(chǎn)品數(shù)據(jù)庫(kù),其包含了有上萬(wàn)條的數(shù)據(jù),為了實(shí)現(xiàn)對(duì)大批量數(shù)據(jù)的Web化批量訪問(wèn),通過(guò)PDM客戶端的對(duì)象管理模塊中對(duì)象分類管理功能,向PDM服務(wù)端請(qǐng)求汽車產(chǎn)品數(shù)據(jù)庫(kù)中的汽車部件數(shù)據(jù),PDM服務(wù)端根據(jù)客戶請(qǐng)求,以ADO.NET訪問(wèn)數(shù)據(jù)庫(kù)和PDM系統(tǒng)API組織業(yè)務(wù)過(guò)程,將得到的汽車產(chǎn)品數(shù)據(jù)通過(guò)WCF服務(wù)發(fā)布到ⅡS上,如圖6所示,然后PDM客戶端調(diào)用WCF服務(wù),而不直接訪問(wèn)數(shù)據(jù)庫(kù),實(shí)現(xiàn)對(duì)汽車部件數(shù)據(jù)的瀏覽,其結(jié)果如圖7所示。
圖5 汽車產(chǎn)品數(shù)據(jù)庫(kù)
圖6 數(shù)據(jù)通過(guò)WCF服務(wù)發(fā)布到ⅡS
圖7 汽車產(chǎn)品的汽車部件數(shù)據(jù)瀏覽
5 結(jié)語(yǔ)
本文分析了C/S架構(gòu)PDM軟件Web化過(guò)程中的四層結(jié)構(gòu)模型,重點(diǎn)解決了C/S架構(gòu)PDM系統(tǒng)如何進(jìn)行Web升遷的難題,設(shè)計(jì)并構(gòu)建了通用的C/S架構(gòu)PDM的Web化系統(tǒng)應(yīng)用,同時(shí)也解決了后臺(tái)大批量數(shù)據(jù)的網(wǎng)絡(luò)傳輸問(wèn)題,此已在開(kāi)目公司的C/S架構(gòu)PDM系統(tǒng)中應(yīng)用實(shí)施,最終實(shí)現(xiàn)了企業(yè)之間異地協(xié)同設(shè)計(jì)的產(chǎn)品數(shù)據(jù)的管理。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.guhuozai8.cn/
本文標(biāo)題:C/S架構(gòu)PDM的Web化升遷與應(yīng)用
本文網(wǎng)址:http://www.guhuozai8.cn/html/solutions/1401938468.html