接着上一章的內容,在上一章中咱們知道了如何.net平臺下去創建一個WebService,以及同步調用、異步調用、開線程異步調用三種客戶端從服務端獲取數據的方式,在本章了所要講的,是如何將客戶端的數據,傳遞給服務端,進行客戶端和服務端的雙相交互
服務端
創建UserManager.cs類,添加using System.Web.Services.Protocols;命名空間,並使它繼承自SoapHeader
輸入如下代碼
-
public
class
UserManager:
SoapHeader
-
-
public
string Name {
get;
set; }
-
public
string Pwd {
get;
set; }
-
-
-
private bool CheckUser(string n,string p)
-
-
if(Name ==
"aaa" && Pwd ==
"bbb")
-
-
-
-
-
-
-
-
-
-
-
-
-
return CheckUser(Name, Pwd);
-
-
在服務端的WSDemo.asmx文件中輸入如下代碼
-
public
class
WSDemo :
System.
Web.
Services.
WebService
-
-
-
-
-
public string HelloWorld()
-
-
-
-
-
-
-
-
-
-
[
WebMethod(Description = "用戶驗證")]
-
-
-
-
-
-
-
-
-
-
-
-
至此,服務端操做完畢
客戶端---同步方式
操做完服務端後,要在ServiceReference1上右擊「更新服務引用」html
圖10
在Index.aspx.cs中輸入如下代碼:
-
public
partial
class
Index :
System.
Web.
UI.
Page
-
-
protected
string stator =
string.Empty;
-
protected void Page_Load(object sender, EventArgs e)
-
-
using (ServiceReference1.WSDemoSoapClient wsc =
new WSDemoSoapClient())
-
-
-
ServiceReference1.UserManager um =
new UserManager();
-
-
-
stator = wsc.CheckUser(um)?
"登陸成功":
"用戶名或密碼錯誤";
-
-
-
-
至此,客戶端操做完畢,此時可發如今用戶名和密碼不對的狀況下,瀏覽器所輸入的值
客戶端---異步方式
將Index.aspx.cs中的代碼修改成如下方式
-
public
partial
class
Index :
System.
Web.
UI.
Page
-
-
protected
string stator =
string.Empty;
-
protected void Page_Load(object sender, EventArgs e)
-
-
using (ServiceReference1.WSDemoSoapClient client =
new WSDemoSoapClient())
-
-
-
client.CheckUserCompleted +=
new EventHandler<CheckUserCompletedEventArgs>(client_CheckUserCompleted);
-
-
ServiceReference1.UserManager um =
new UserManager();
-
-
-
-
client.CheckUserAsync(um);
-
-
-
-
void client_CheckUserCompleted(object sender, CheckUserCompletedEventArgs e)
-
-
stator = e.Result ?
"登陸成功" :
"登陸失敗";
-
-
-
客戶端---開線程的異步方式
將Index.aspx.cs中代碼更改成如下形式
-
public
partial
class
Index :
System.
Web.
UI.
Page
-
-
protected
string stator =
string.Empty;
-
protected void Page_Load(object sender, EventArgs e)
-
-
BackgroundWorker bw =
new BackgroundWorker();
-
bw.DoWork +=
new DoWorkEventHandler(bw_DoWork);
-
bw.RunWorkerCompleted +=
new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
-
-
-
-
void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
-
-
stator = (
bool)e.Result ?
"登陸成功" :
"登陸失敗";
-
-
-
-
void bw_DoWork(object sender, DoWorkEventArgs e)
-
-
-
using (ServiceReference1.WSDemoSoapClient client =
new WSDemoSoapClient())
-
-
-
UserManager um =
new UserManager();
-
-
-
-
e.Result = client.CheckUser(um);
-
-
-
至此,開線程異步客戶端傳參與服務器數據交互操做完畢