国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在 .NET 中使用 WEB SERVICE 的CallBacks機制 (5)

2024-07-10 13:01:43
字體:
來源:轉載
供稿:網友
3. web form
對于webservice”a”我們使用的瀏覽器作為客戶端。 每個 web methods有自己的按鈕觸發事件,在棧(stack)中來保存session類的狀態。 頁面的更新基于下面的機制:事件處理程序把數據壓到session棧,在page_load時提取出來并且插入到listbox control中。另一個議題是以異步方式調用dosomeworka方法,它可以產生和處理callback,這就是我們為什么能送另一個請求給webservice”a”的原因。注意每項工作都被它的驗證票據id所識別。
namespace webformcallbackws
{
public class webform1 : system.web.ui.page
{
// ...
protected servicea sa = new servicea();

public webform1()
{
page.init += new system.eventhandler(page_init);
}

private void page_load(object sender, system.eventargs e)
{
if(ispostback == false)
{
//initialize controls, one time!
if(session["status"] == null)
session["status"] = stack.synchronized(new stack());
}
else
{
stack stack = session["status"] as stack;
while(stack.count > 0)
listboxcallbackstatus.items.add(stack.pop().tostring());

int numberofitems = listboxcallbackstatus.items.count;
if(numberofitems > 13)
listboxcallbackstatus.selectedindex = numberofitems - 13;
}
}
private void page_init(object sender, eventargs e)
{
// ...
}

#region web form designer generated code
private void initializecomponent()
{
// ...
}
#endregion

// call the web service asynchronously
private void buttondosomeworka_click(object sender, system.eventargs e)
{
int count = convert.toint32(textboxcount.text);
string ticket = textboxticketid.text;
//
asynccallback callback = new asynccallback(callbackdosomeworka);
iasyncresult ar = sa.begindosomeworka(count, ticket, callback, null);
listboxcallbackstatus.items.add(string.format("#{0} start ...",
ticket));
}
// the call callback from the webservice
private void callbackdosomeworka(iasyncresult ar)
{
string retval = sa.enddosomeworka(ar);
stack stack = session["status"] as stack;
stack.push(retval);
}
// call the web service
private void buttonabort_click(object sender, system.eventargs e)
{
stack stack = session["status"] as stack;
stack.push(sa.abortworka(textboxticketid.text));

}
// get the status from the web service
private void buttonrefresh_click(object sender, system.eventargs e)
{
stack stack = session["status"] as stack;
stack.push(sa.getstatusworka(textboxticketid.text));
}
// clean-up the listbox
private void buttonclear_click(object sender, system.eventargs e)
{
listboxcallbackstatus.items.clear();
}
}
}
ok,我們現在開始做過測試。上述的照片顯示了web 形式的用戶界面。 首先,確定你網絡聯機并且處于企業內部局域網絡。 在 dosomework 按鈕上的單擊,然后請求狀態結果。status 和abort按鈕可以在容易時間點擊。 listbox 控件將會顯示某個工作的當前狀態 (由驗證票據得到)
結論:
使用應用程序模型的 web service開創了分布式架構的一個新紀元。在企業化模型層次結構中使用.net framework動態的調用web methods是簡單的,很直接的。這篇文章說明它如何使用 c#語言來實現。 這種解決方案很好的解釋了相關的概念和設計時所設計的問題。如果真正投入到市場,還需要考慮許多因素,如安全設計,完整的 url 尋址,密碼,服務器代理等。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊春市| 宜川县| 叶城县| 牡丹江市| 沙湾县| 凤凰县| 汝州市| 蓝山县| 枣庄市| 阜平县| 遂平县| 房产| 龙泉市| 宜阳县| 长岛县| 凤台县| 溆浦县| 馆陶县| 衡山县| 阳西县| 云浮市| 金华市| 教育| 左贡县| 长宁县| 河津市| 正阳县| 舒兰市| 娱乐| 中超| 特克斯县| 满城县| 遂溪县| 新田县| 秦安县| 仲巴县| 班戈县| 南汇区| 漳平市| 那坡县| 扬中市|