三度网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

在 .NET 中运用 WEB SERVICE 的CallBacks机制 (5)

时间:2023-9-7作者:未知来源:三度网教程人气:


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 寻址,密码,服务器代理等。

关键词:    .NET  中运用  WEB  SERVICE  的CallBacks机制  (5)





Copyright © 2012-2018 三度网教程(http://www.3du8.cn) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版