ajax|web|教程
題外話:
WebService技術已經有好幾年的曆史了,關於基礎的理論知識,此處省去,不說了。最近被炒了的ajax技術也被濫用的很是嚴重,至於細節,不是我說的重點。
ajax技術的入門比較低,javascript和xml的一點利用,個人以為沒啥含量,不能在根本上解決企業的需求或者問題,在安全性,線路傳輸的低級等方面都有致命的問題.
為什麼要把WebService和ajax放一起,原因很簡單, 兩者的共同點準確的來說是經常按照同一資料協議--------XML.
本文全部源碼:userapp.rar
本文既不說明ajax的弱,也不說WebService的強大,只是通過一個例子說明了如何使用WebService技術和ajax技術.
我通過執行個體“使用者登陸”展示How.
在本地建立一個虛擬目錄UserApp。
先建立一個webservice:
namespace Cjjer{
using System;
using System.Web.Services;
[WebService (Name="WebsCjjer",Description="一個驗證使用者登陸的web服務",Namespace="http://www.cjjer.com/webs/")]
public class UserService{
[WebMethod (Description ="輸入使用者名稱和密,返回許可權Int值,0表示失敗",MessageName="Login")]
public int Login(string UserName,string UserPassword){
return User.Check(UserName,UserPassword);
}
};
}
我們暫時不看細節,注意這是這個class有頭WebService,標記了這是一個web服務.
csc編譯掉,放入bin目錄,然後login.asmx檔案:
<%@WebService Class="Cjjer.UserService"%>
我先不說驗證的細節,我們先假設User.Check()返回的是使用者層級,0表示驗證失敗.
現在在URL中輸入地址,訪問:如圖
點擊login:
輸入正確的使用者名稱和密碼,然後點擊調用:
如果不是正確的使用者名稱和密碼,將int節點值是0.
我們本地的調用是在SOAP操作.
還有很多方式:
SOAP(最低級的)
soap的這裡不說,以後會詳細說,我這裡注意看的是get和post方式:
HTTP GET
面是一個 HTTP GET 請求和響應樣本。所顯示的預留位置需要由實際值替換。
GET /userapp/login.asmx/Login?UserName=string&UserPassword=string HTTP/1.1
Host: s
return:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<int xmlns="http://www.cjjer.com/webs/">int</int>
HTTP POST
下面是一個 HTTP POST 請求和響應樣本。所顯示的預留位置需要由實際值替換。
POST /userapp/login.asmx/Login HTTP/1.1
Host: s
Content-Type: application/x-www-form-urlencoded
Content-Length: length
UserName=string&UserPassword=string
return:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<int xmlns="http://www.cjjer.com/webs/">int</int>
我們可以輸入url的地址,或者post的action,就可以訪問和提交擷取結果了.
此處可以選擇的操作其實也很多,使用螢幕清理技術,還可以用xml的處理架構提交資訊的結果,也可以用其他技術,不說了,反正都是貌似需要幾十行或者比我下面多一些處理。
我說的是使用SDK的工具wsdl工具處理代理的web服務.
wsdl /l:cs /out:WebsCjjer.cs /namespace:Webs /urlkey:WebsUser /nologo http://s:81/userapp/login.asmx?wsdl
得到WebsCjjer.cs源檔案。
注意:/urlkey:WebsUser表示是URL可以是從web.config檔案的WebsUser擷取,這樣做是避免寫入程式碼,看看WebsCjjer.cs
.......
public WebsCjjer() {
string urlSetting = System.Configuration.ConfigurationSettings.AppSettings["WebsUser"];
if ((urlSetting != null)) {
this.Url = urlSetting;
}
else {
this.Url = "http://s:81/userapp/login.asmx";
}
}
.......
為了能被其他的人訪問,需要加入如下代碼到web.config:
<system.web>
<webServices>
<protocols>
<add name="HttpPost"/>
<add name="HttpGet"/>
</protocols>
</webServices>
就是代理許可.
編譯了這個類,到bin,使用的時候如下:
void OnLogin(Object s,EventArgs e){
Webs.WebsCjjer Ws_App = new Webs.WebsCjjer();
returnint.Text = Ws_App.Login(MyUserName.Text,MyPassword.Text).ToString();
}
這樣,直接能返回結果,不需要我們自己正則或者xml處理,不需要知道驗證的細節。