摘要:物流軟件經常需要從服務器上的程序中獲取數據或者把客戶端的數據發送到應用程序中去。即使在同一個平臺上,不同軟件廠商生產的各種軟件也常常需要集成起來。由于物流軟件與企業ERP軟件間平臺、語言等差異,影響了信息資源的有效融合,用Web Service集成應用程序,可有效解決此問題。通過在Pocket PC(客戶端)上遠程調用Web Services發布的接口函數,實現與服務器端信息交互的例子,闡述了Web Services技術在物流上的應用過程。
關鍵詞:Web Services;Pocket PC;物流;接口
中圖分類號:TP274文獻標識碼:A
文章編號:1002-3100(2008)01-0059-03
Abstract: The software of logistics often gains the program data from the server, or sends the data of client-side to the program. Even on the same platform, all kinds of software produced by the different manufacturers commonly need to be integrated. It can be solved through the integrated program of Web Services when the differences of the software, the ERP platform of enterprise and the language influence the amalgamation of information. This paper expatiates on the running process of Web Services technique on logistics through the interface function of the long-distance Web Services on the client-side.
Key words: Web services; Pocket PC; logistics; interface
0引言
企業級的應用程序開發者都知道,企業里經常都要把用不同語言寫成的、在不同平臺上運行的各種程序集成起來,而這種集成將花費很大的開發力量。在目前的管理模式下,供應商、生產商、各級銷售商都有自己的管理系統,有的企業以人工為主,也有許多企業應用信息化系統管理,在這樣的情況下,社會物流承擔者——第三方物流公司如何與各類顧客進行信息的交互,在很大程度上影響著現代物流作用的發揮。
若通過第三方物流運營公司,對于物流運營過程中商流、物流、資金流的運轉,用標準化的數據接口,實現與供應商、生產商、各級銷售商之間的信息交互,提高物流效益,可從總體上大幅降低社會流的成本。
但是由于物流軟件與企業ERP軟件間平臺(Linux、Windows)、語言(Java, C#)等差異,影響了信息資源的有效融合。為解決異構平臺不同系統間相互通信與共享資源,數據在Web上傳輸必須符合一定的標準,此標準就是XML,而XML是Web Services的傳輸標準,因此本文提出采用Web Services技術來有效解決資源融合問題。
1Web Services技術介紹
Web 應用體系經歷了三個發展階段。第一代Web應用體系結構模式是C/S模式,隨著網絡處理需求不斷膨脹以及靈活性及適應性問題的出現,促使產生了第二代Web應用體系結構模式,即Web Application Server模式。近年來,由于使用標準的HTTP和XML格式的規范化通訊技術以及面向服務計算(Serviec Oriented Computing,SOC)技術的發展,出現了第三代Web應用體系,即“Web Services平臺體系”。Web Service的主要目標是跨平臺的可互操作性。為了達到這一目標,Web Service完全基于XML(可擴展標記語言)、XSD(XML Schema)等獨立于平臺、獨立于軟件供應商的標準,是創建可互操作的、分布式應用程序的新平臺。Web Services體系以SOC為基礎,并以SOAP,XML,WSDL和UDDI分別作為其數據傳輸協議、消息傳送格式、服務描述語言以及服務注冊機構。
SOAP:SOAP(Simple Object Access Protocol)協議,是一組基于XML的無狀態、單向、輕量級的消息傳遞協議,用于無中心、分布式遠程過程的調用。它是Web Services的通信協議,SOAP的部分規范,用來定義消息的XML格式,包含在一對SOAP元素中的、結構正確的XML段以即SOAP消息。目前常使用HTTP傳輸XML數據。
WSDL:WSDL(WebService Description Language)協議,是把Web Services抽象地用XML描述為一組包含在面向文檔或面向過程信息的消息上執行操作的端點的集合。它是Web服務說明語言。我們可以認為WSDL文件是一個XML文檔,Web Services的細節描述都包含在里面,如參數類型、函數功能、返回類型、終端和綁定協議等,客戶端可以通過查看WSDL來確定所需的接口函數。
UDDI:UDDI(Universal Description, Discovery and Integration)協議,是一個基于SOAP協議的,為Web Services提供信息注冊中心的實現標準,同時也包含一組提供Web Services注冊、發現和調用的訪問協議。Web Services提供者先在UDDI注冊中心集中注冊,那么需求者可到UDDI注冊中心查詢所需的Web Services服務,它起到聯系紐帶的作用。

Web Services提供者編寫接口函數與服務描述,并把它發布到服務請求者或服務注冊中心。服務請求者通過查詢本地或服務注冊中心的服務描述,選擇所需的服務進行綁定并調用Web Services函數,Web Services提供者則以XML的形式把結果返回給服務請求者,從而實現信息交互。
2應用舉例
在物流應用上存在這樣一個現象:許多用戶想自動獲取來自不同供應商的價格信息,從而可以選擇合適的供應商,提交訂單,然后跟蹤貨物的運輸,直至收到貨物。而供應商也想將各個客戶的信息集中起來,從而方便檢查客戶的信用、收取貨款,并與貨運公司辦理貨運手續等。
例如,有一個訂單登錄程序,用于登錄從客戶來的新訂單,包括客戶信息、發貨地址、數量、價格和付款方式等內容;還有一個訂單執行程序,用于實際貨物發送的管理。這兩個程序來自不同軟件廠商。一份新訂單進來之后,訂單登錄程序需要通知訂單執行程序發送貨物。通過在訂單執行程序上面增加一層Web Services,訂單執行程序可以把“Add Order”函數“暴露”出來。這樣,每當有新訂單到來時,訂單登錄程序就可以調用這個函數來發送貨物了。
2.1問題分析
供應商在提供各種商品的信息時,由于所處系統、所用語言的差異,譬如商品單價單位不同、商品名存儲字段不同等,用戶很難直接將各商家的不同商品信息集中起來存儲,從而不能直接分析各供應商的商品信息;另外,當供應商與多個貨運公司辦理貨運手續時,由于供應商與貨運公司管理系統的差異,也很難讓貨運公司管理系統直接應用供應商提供的數據,影響企業與物流軟件間的有效融合。
2.2Web Services應用過程
下面以用戶自動獲取來自不同供應商的價格信息,從而選擇合適供應商,提交訂單為例,分析Web Services在物流上的應用過程。
首先,自動獲取不同供應商的價格信息,方法如下:在用戶端編寫WEB服務程序A,接著發布到UDDI信息,了解其所需產品的信息要求;供應商可調用接口函數A,向接口寫入相關的參數并提交,這樣就可以將商品信息寫入用戶的應用程序,當每次啟動此程序時,用戶即可獲得最新的商品信息,從而可以選擇其中最合適的供應商。
其次,實現用戶預訂商品的過程:供應商端編寫商品預訂的Web服務程序B,然后將B發布到UDDI注冊中心,則在用戶端只需調用接口函數B,并在Pocket PC上輸入所要預定的信息即可。
用戶在Pocket PC上的應用程序是集信息查詢、預定、身份驗證等功能為一體的完整系統,上面步驟只是為了說明Web Services的應用過程。
下面以其中預訂過程為例,具體說明Web Services的使用方法。服務器端為Web服務B(供應商提供商品預訂);客房端為Pock PC端。
2.2.1服務器端開發
開發環境為.NET,使用C#語言,首先創建Web Services項目,再編寫代碼:
Namespace diaoyong
{//下面方括號為Web services屬性定義
[System.Web.Services.Webservice(
Namespace=“http://192.168.2.100/diaoyong/Serviec1.asmx”,Descrition=“供應商接口函數”)]
Public class service1:System.web.
Services.WebService
{public Service1()
{InitializeComponent();}//調用Web服務必需...
[WebMethod(Description=“預訂函數,請輸入字符串參數1,2...”)]
Public bool book(string 參數1,string參數2,...)
{SQL語句;//執行預訂功能,修改數據庫...
If(預訂成功)
Returntrue;
Else
Return1;
}
}
}
Web Services程序大體如上面代碼所示,Web Services屬性定義是必須的,最重要的是Namespace,它包含Web Services的默認命名空間。XML命名空間提供了一種在XML文檔中創建名稱的方法,該名稱可由統一資源標識符(URL)標識。使用XML命名空間,可以唯一標識XML文檔中的元素或屬性。因而,在Web Services的服務說明中,Namespace被用作與Web Services時,通過在Public方法聲明之前放置Web Method屬性可以指定在Web Services中可用的方法。
上面代碼中,Namespace=“http://192.168.2.100/diaoyong/service1.asmx”,可以在此處引用發布的接口函數,book函數返回布爾值,說明預訂成功與否。
下面我們需要將代碼部署到可供目標客戶端訪問的Web 服務器,以便Web Services供其他人使用。使用安裝和部署項目Web Services方法如下:
2.2.2客房端調用Web Services
現在所用的Pocket PC 為.NET環境下的模擬器,首先在Visual Studio中創建智能設備應用程序項目,然后設計窗體,編寫代碼:
先在項目/添加 Web引用URL處輸入http://192.168.2.100/diaoyong/Service1.asmx,然后選擇book函數,引用名取為bk,則它在程序中的引用如下所示:
Private void button1_click(object sender,System.EventArgs e)
{ //定義一個引用實例xyz
Bk.Service1 xyz=new bk.Service1();
...//從窗體框中讀入參數;
Bool n=xyz.book(參數1,參數2,...);
If (n = = 1)
{MessageBox.Show(“預訂失敗!”);}
Else
{ Message Box.show(“預訂成功!”);}
}
然后,我們便可以在Pocket PC上實現預訂商品功能。
參考文獻:
[1] 萊(美). J2EE平臺 Web Services[M]. 北京:電子工業出版社,2005.
[2] 鄒丹,陳智高. 電子商務中企業物流模式的分析選擇[J]. 華東經濟管理,2001(2):93-95.
[3] 顧寧. Web Services原理與研發實踐[M]. 北京:機械工業出版社,2006:37.
[4] 文青. 如何理解中國物流配送現代化[J]. 物流技術,2005(8):12-14,26.
[5] 邵曉峰,季建華. 面向網絡經濟發展電子商務物流[J]. 管理現代化,2000(3):18.
[6] HAMMER K. Web Services and Enterprise Integration[J]. EAI Journal, 2001(3):21.
[7] 柴曉路. Web服務架構與開放互操作技術[M]. 北京:清華大學出版社,2002.