999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Ajax的Web Service架構

2008-12-31 00:00:00李亦飛朱巧明嚴偉中
電腦知識與技術 2008年11期

摘要:Web Service是一種基于標準的應用集成方式,允許不同的客戶端使用它提供的服務。本文介紹通過Ajax使用異步消息傳遞,SOAP協議作為Web服務通信協議的基礎,實現Web Servcie架構的應用程序的開發。

關鍵詞:Web Service;Ajax;SOAP協議

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)11-20341-02

1 前言

Web Service主要是為了使原來各孤立的站點之間的信息能夠相互通信、共享而提出的一種接口。Web Service所使用的是Internet上統一、開放的標準,如HTTP、XML、SOAP、WSDL等,所以Web Service可以在任何支持這些標準的環境(Windows、Linux)中使用。Web Service技術的不斷成熟,使得面向服務的架構(SOA)思想得到了很好的應用。

Ajax引擎實現無需頁面無刷新等待的情況下,進行與服務器之間的數據通信,使用它可以構建更為動態和響應更靈敏的Web應用程序。基于SOAP協議,通過Ajax調用Web服務,實現異構程序和平臺無關的數據通信。

2 關鍵技術

2.1 Ajax

在Ajax之前,WEB站點強制用戶進行提交、等待、重新加載的模式,用戶的動作和服務器的反應同步,Ajax提供與服務器異步通信的能力。通過Ajax用戶通過JavaScript和DHTML向服務器發出異步請求,執行更新或查詢數據,當請求返回時來更新UI,而不是刷新整個頁面,降低了與服務器之間通信的數據量,加快了用戶請求的反應時間。

在WEB瀏覽器使用SOAP服務比較困難,大多數流行的WEB瀏覽器在生成和處理XML方面會有不同,支持XML處理的API比較少。比較常見的方法是通過XMLHttpRequest API,XMLHttpRequest是一個用于執行異步HTTP請求的JavaScript對象。AJAX框架的關鍵是名為XMLHttpRequest的JavaScript對象,通過它客戶端開發人員可以在不打斷用戶操作或者在充分使用隱藏表單的情況下通過HTTP直接發送和接收XML文檔。現在常用的瀏覽器(IE, Mozilla, Safari, Opera)都特別提供了對XMLHttpRequest對象的支持,同時也廣泛支持XML DOM。

2.2 SOAP

目前有很多應用程序通過使用遠程過程調用(RPC)在諸如 DCOM 與 CORBA 等對象之間進行通信,但是,RPC會產生兼容性以及安全問題;防火墻和代理服務器通常會阻止此類流量。通過HTTP在應用程序間通信的就是更好的方法,因為HTTP被所有的因特網瀏覽器及服務器支持。SOAP(Simple Object Access Protocal,簡單對象訪問協議)可以完成這個任務的。SOAP提供了一種標準的方法,使得運行在不同的操作系統并使用不同的技術和編程語言的應用程序可以互相進行通信。SOAP技術用于實現異構程序和平臺間的數據交換,從而能夠使應用能被廣泛地訪問。SOAP是將基于HTTP的WEB技術與XML的靈活性和可擴展性組合在一起。

SOAP消息處理框架定義了一套XML元素,封裝XML消息以便在系統中間進行傳輸。該框架包含的核心XML元素有Envelope,Header,Body和Fault,目前常見SOAP消息有1.1和1.2兩個版本。Envelope是SOAP消息的根元素。Envelope元素包含一個可選的Header元素,一個必須的Body元素,Body元素包含所以的調用和響應信息。Fault元素提供處理此消息發生的錯誤。HTTP協議綁定定義了在HTTP上使用SOAP的規則。SOAP請求、響應映射到HTTP協議請求、響應模型。對于SOAP消息使用POST方式進行請求,SOAPAction表示該消息的意圖。

3 WEB Service架構

實現通過頁面異步調用目標服務器的一個Web服務,所用開發環境是Visual studio2005。首先創建ASP.NET Web服務,提供實現兩個整數相加的服務。繼承WebService實現MyService類,在WebService繼承類中可以提供Web方法和非Web方法,在方法前標注[WebMethod],表示該方法是一個Web方法,Add方法就是一個Web方法。示例代碼:

[WebService(Namespace = \"http://myweb.org/\")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class MyService : System.Web.Services.WebService{

[WebMethod]

public int Add(int i ,int j) {

return i + j;

}

}

然后在Web頁面中添加SOAP消息的請求,這里通過Ajax進行發送請求SOAP消息,由于XMLHttpRequest不是一個W3C標準,所以可以采用多種方法使用JavaScript來創建XMLHttpRequest的實例。Internet Explorer把XMLHttpRequest實現為一個ActiveX對象,其他瀏覽器(如Firefox、Safari和Opera)把它實現為一個本地JavaScript對象。示例代碼:

function getXmlHttpRequestObject() {

if (window.XMLHttpRequest) {

return new XMLHttpRequest(); //Not IE

} else if(window.ActiveXObject) {

return new ActiveXObject(\"Microsoft.XMLHTTP\"); //IE

} else {

alert(\"not supported\");

}

}

接著將SOAP消息發送,XMLHttpRequest的readyState屬性返回當前請求的狀態,0表示未初始化,4表示上次數據接受完畢,這兩個狀態下都可以開始一個新的請求。然后通過open方法創建一個新的Http請求,并指定此請求的方法。通過onreadystatechange設置readyState屬性改變時的事件處理句柄。示例代碼:

function sendRequest(){

if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {

receiveReq.open(\"POST\", \"MyService.asmx\", true);

//SOAP1.1

receiveReq.setRequestHeader (\"Content-Type\",\"text/xml; charset=utf-8\")

receiveReq.setRequestHeader (\"SOAPAction\", \"http://myweb.org/Add\") ;

var msg=\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\"

+\"<soap:Envelope xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\"

+\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\"

+\" xmlns:soap=\\\"http://schemas.xmlsoap.org/soap/envelope/\\\">\"

+\" <soap:Body>\"

+\"<Add xmlns=\\\"http://myweb.org/\\\">\"

+\"<i>1</i>\"

+\"<j>2</j>\"

+\"</Add>\"

+\" </soap:Body>\"

+\"</soap:Envelope>\"

receiveReq.onreadystatechange = handleAdd;

receiveReq.send(msg);}

}

示例代碼中,setRequestHeader設置http封裝格式,變量msg的內容就是SOAP1.1格式的消息請求,進行兩個整數i和j的相加請求。將onreadystatechange設置為函數handleAdd,進行SOAP消息響應的處理。

最后是對SOAP消息響應的處理,readyState屬性為4表示接受完畢,根據http請求狀態status為200表示http響應成功,返回如果是字符串可以通過responseText屬性獲取,如果是xml文件可以通過responseXML屬性獲取。示例代碼:

function handleAdd() {

if (receiveReq.readyState == 4) {

if (receiveReq.status==200){

// 對receiveReq的響應responseXML或responseText進行處理

} else {

alert(\"status:\" + receiveReq.statusText);

}

}

}

4 結束語

本文中,介紹了基于SOAP協議架構WEB Service的步驟,但是這個過程沒有提供安全性解決方案。對于一個真正安全的WEB Service來說,證書、密鑰和加密同樣是必不可少的。最健壯的WEB Service安全性源于實現了使用來自認證機構的私鑰、公鑰進行身份驗證的加密消息傳遞。XML加密允許web服務用戶發送保留XML格式的加密SOAP消息。

參考文獻:

[1] W3C. SOAP:Simple Object Access Protocol Specification1.1 .2000.

[2] Nicholas C Zakas, Jeremy McPeak, Joe Fawcett. Professional Ajax .Wiley Publications, 2006.

[3] Christian Gross. Ajax Patterns and Best Practices[M]. Apress L P, 2006.

[4] 王東,孫彬. 基于Ajax的MVC框架的改造分析[J]. 計算機應用, 2007,(S1):293-295.

[5] 程亞娟, 趙政. XML數據存取技術[J]. 微型機與應用, 2002,(01):59-60.

[6] 張環宇,張建文. 基于AJAX技術的Web應用架構分析. 電腦知識與技術,2007,(15):745-746.

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 日本免费精品| 国产成人无码综合亚洲日韩不卡| 亚洲人成色在线观看| 国产精品亚洲一区二区三区在线观看 | AV不卡无码免费一区二区三区| 在线另类稀缺国产呦| 国产在线专区| 热99re99首页精品亚洲五月天| 欧美日韩久久综合| 久久伊伊香蕉综合精品| 国产欧美精品午夜在线播放| 最新国产成人剧情在线播放| 国产免费怡红院视频| 热re99久久精品国99热| 手机在线看片不卡中文字幕| 久久综合成人| 99久久精品免费看国产免费软件| 天堂亚洲网| 午夜欧美理论2019理论| 国产女同自拍视频| 亚洲成人网在线播放| 色悠久久综合| 欧美精品H在线播放| 五月激激激综合网色播免费| 国产精品久久久久鬼色| 999国内精品视频免费| 专干老肥熟女视频网站| 久久精品亚洲中文字幕乱码| 欧美不卡视频一区发布| 中文字幕久久亚洲一区| 亚洲91精品视频| 国产在线精品99一区不卡| 精品国产福利在线| 无码一区二区三区视频在线播放| 日韩亚洲综合在线| 久久婷婷综合色一区二区| 2021最新国产精品网站| a免费毛片在线播放| 久久综合五月婷婷| 欧美乱妇高清无乱码免费| 亚洲女人在线| 欧美成人综合视频| 亚洲日韩高清在线亚洲专区| 国产成人高清精品免费5388| 亚洲色图欧美| 精品国产免费观看一区| 毛片在线播放网址| 免费在线国产一区二区三区精品| 九九香蕉视频| 国产成人精品2021欧美日韩| 国内a级毛片| 99热最新在线| 中文字幕中文字字幕码一二区| 国产情侣一区| 精品福利视频导航| 99ri国产在线| 国产剧情国内精品原创| 99ri国产在线| 国产99视频精品免费视频7| 伊人久久青草青青综合| 任我操在线视频| 亚洲国产日韩视频观看| 爱爱影院18禁免费| 日韩激情成人| 精品成人免费自拍视频| 久久国产免费观看| 国产亚洲精久久久久久无码AV| 99精品在线看| 免费 国产 无码久久久| 国产丝袜无码精品| 欧美一区二区三区欧美日韩亚洲| 国产成人久久777777| 国产无码性爱一区二区三区| 亚洲区欧美区| 香蕉eeww99国产在线观看| 91久久青青草原精品国产| 91视频国产高清| 九九热视频精品在线| 麻豆精品视频在线原创| 亚洲黄色成人| 国产精品爽爽va在线无码观看| 色综合综合网|