欧美特黄不卡,涩涩视频在线,成人国产精品一区二区网站,亚洲一区二区三区欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

在 .NET 中運(yùn)用 WEB SERVICE 的CallBacks機(jī)制 (5)

在 .NET 中運(yùn)用 WEB SERVICE 的CallBacks機(jī)制 (5)

更新時(shí)間:2022-05-06 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

3. Web Form
對(duì)于WebService”A”我們使用的瀏覽器作為客戶端。 每個(gè) Web Methods有自己的按鈕觸發(fā)事件,在棧(Stack)中來(lái)保存Session類的狀態(tài)。 頁(yè)面的更新基于下面的機(jī)制:事件處理程序把數(shù)據(jù)壓到Session棧,在Page_Load時(shí)提取出來(lái)并且插入到ListBox control中。另一個(gè)議題是以異步方式調(diào)用DoSomeWorkA方法,它可以產(chǎn)生和處理callback,這就是我們?yōu)槭裁茨芩土硪粋(gè)請(qǐng)求給WebService”A”的原因。注意每項(xiàng)工作都被它的驗(yàn)證票據(jù)ID所識(shí)別。
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,我們現(xiàn)在開始做過測(cè)試。上述的照片顯示了Web 形式的用戶界面。 首先,確定你網(wǎng)絡(luò)聯(lián)機(jī)并且處于企業(yè)內(nèi)部局域網(wǎng)絡(luò)。 在 DoSomeWork 按鈕上的單擊,然后請(qǐng)求狀態(tài)結(jié)果。Status 和Abort按鈕可以在容易時(shí)間點(diǎn)擊。 ListBox 控件將會(huì)顯示某個(gè)工作的當(dāng)前狀態(tài) (由驗(yàn)證票據(jù)得到)
結(jié)論:
使用應(yīng)用程序模型的 WEB SERVICE開創(chuàng)了分布式架構(gòu)的一個(gè)新紀(jì)元。在企業(yè)化模型層次結(jié)構(gòu)中使用.Net Framework動(dòng)態(tài)的調(diào)用Web Methods是簡(jiǎn)單的,很直接的。這篇文章說明它如何使用 C#語(yǔ)言來(lái)實(shí)現(xiàn)。 這種解決方案很好的解釋了相關(guān)的概念和設(shè)計(jì)時(shí)所設(shè)計(jì)的問題。如果真正投入到市場(chǎng),還需要考慮許多因素,如安全設(shè)計(jì),完整的 url 尋址,密碼,服務(wù)器代理等。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 南郑县| 福泉市| 河源市| 安宁市| 东乡县| 海丰县| 偏关县| 大化| 兰溪市| 揭东县| 彰武县| 明星| 聂拉木县| 新田县| 满洲里市| 武平县| 衡山县| 镇安县| 象山县| 大安市| 永安市| 龙井市| 大悟县| 花垣县| 屏南县| 榆社县| 荃湾区| 手游| 富顺县| 繁昌县| 札达县| 桐城市| 浦城县| 祁东县| 安义县| 浙江省| 怀安县| 永登县| 庆元县| 同德县| 桐梓县|