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