1.開發(fā)人員創(chuàng)建一個(gè)名為 XBikes-BLL-WSServiceInterface 的新 ASP.NET Web 服務(wù)項(xiàng)目。
2.他們刪除默認(rèn)的 Service1.asmx 文件并將其替換為名為 BLLWSServiceInterface.asmx 的新 Web 服務(wù)。開發(fā)人員用如下的 [WebService] 屬性來批注該 Web 服務(wù)類。
[WebService(Namespace="http://XBikes.com/BLLWSServiceInterace/")] public class BLLWSServiceInterface : System.Web.Services.WebService { // Members... } 3.該團(tuán)隊(duì)將 Web 服務(wù)方法添加到 Web 服務(wù)類,由現(xiàn)有的業(yè)務(wù)服務(wù)外觀公開的每種方法都具有正確的方法簽名。但是,開發(fā)人員將數(shù)據(jù)類型更改為“字符串”,而不是每種方法將數(shù)據(jù)集作為參數(shù)接受或返回。
[WebService(Namespace="http://XBikes.com/BLLWSServiceInterace/")] public class BLLWSServiceInterface : System.Web.Services.WebService { [WebMethod] public string AuthenticateCustomer(string email, string passWord) {} [WebMethod] public string GetCategories() {} [WebMethod] public string GetPRodUCtsByCategory(int CategoryID) {} [WebMethod] public string GetSearchResults(string keyword) {} [WebMethod] public void PlaceOrder(string order) {} [WebMethod] public string GetCustomerOrders(int customerID) {} } 4.該團(tuán)隊(duì)將代碼添加到每種 Web 服務(wù)方法以調(diào)用業(yè)務(wù)服務(wù)外觀方法。以下代碼示例顯示了如何對(duì) Web 服務(wù)服務(wù)接口中的 GetCategories 方法執(zhí)行操作。開發(fā)人員調(diào)用自業(yè)務(wù)服務(wù)外觀返回的 CategoriesData 對(duì)象的 Getxml 方法,從而將數(shù)據(jù)轉(zhuǎn)換成 XML 格式化字符串,WS 服務(wù)接口將該字符串返回其調(diào)用方。
[WebMethod] public string GetCategories() { try { // Create a business service facade (BSF) object BusinessServiceFacade bsf = new BusinessServiceFacade(); // Call the GetCategories method on the BSF object CategoriesData cd = bsf.GetCategories(); // Convert the CategoriesData dataset into XML, and return it return cd.GetXml(); } catch (XBikesInteropException intEXP) { //.. Error handling code } } 5.根據(jù) WS-I Basic Profile 1.0,Web 服務(wù)應(yīng)該支持 SOAP 協(xié)議,但不支持 HTTPGet 或者 HTTPPost 協(xié)議。為了從 Web 服務(wù)中移除協(xié)議支持,XBikes 開發(fā)人員將以下代碼添加到 Web 服務(wù)的 Web.config 文件的 部分。
為了測(cè)試 Web 服務(wù),開發(fā)人員在 Visual?Studio .NET 2003 中建立并運(yùn)行 Web 服務(wù)項(xiàng)目。運(yùn)行 ASP.NET Web 服務(wù)項(xiàng)目時(shí),在瀏覽器中會(huì)自動(dòng)出現(xiàn)一張測(cè)試頁。這張測(cè)試頁包含答應(yīng)調(diào)用每種 Web 服務(wù)方法的超級(jí)鏈接。假如必要,該測(cè)試頁還有供您輸入值的文本框。在調(diào)用完一個(gè) Web 服務(wù)方法后,另一個(gè)瀏覽器窗口會(huì)打開顯示來自 Web 服務(wù)方法的 XML 響應(yīng)。
圖 8.2 顯示了該操作過程。 圖 8.2:帶有 J2EE 應(yīng)用程序的 Web 服務(wù)代理操作
以下為構(gòu)建 Java 適配器的任務(wù):
1.從 XML 架構(gòu)創(chuàng)建 Java 數(shù)據(jù)類型和 XML 映射。
2.為 NET Framework Web 服務(wù)從 WSDL 創(chuàng)建 Java Web 服務(wù)代理。
3.創(chuàng)建 Java 適配器以轉(zhuǎn)換 Java 數(shù)據(jù)并調(diào)用 .NET Framework Web 服務(wù)。
以下部分描述了這些任務(wù)的執(zhí)行步驟。
從 XML 架構(gòu)創(chuàng)建 Java 數(shù)據(jù)類型和 XML 映射。 大多數(shù) Java XML 產(chǎn)品提供工具以創(chuàng)建基于 XML 架構(gòu)的 Java 數(shù)據(jù)類型。通常,這些工具還創(chuàng)建將 Java 類中的每個(gè)字段映射到 XML 架構(gòu)中的元素或?qū)傩缘挠成湮募?br /> 注假如現(xiàn)有的 Java 數(shù)據(jù)類型已經(jīng)與 XML 架構(gòu)一致,則無須定義中間 Java 類。只需定義將 Java 字段直接映射到 XML 架構(gòu)中的元素和屬性的映射文件。
將序列化代碼放入 Helper 類中是一個(gè)不錯(cuò)的主意,XBikes 開發(fā)人員就是這么做的。Helper 類要求希望寫入或讀取字符串的每種類型的數(shù)據(jù)有兩種方法;這兩種方法接受要轉(zhuǎn)換的數(shù)據(jù)的單一參數(shù)以及返回轉(zhuǎn)換類型的單一值。以下方法簽名顯示了 Order 對(duì)象和 XML 格式化字符串之間的轉(zhuǎn)換。
public static String orderToString(Order o); public static Order StringToOrder(String o);