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

web

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

时间: 2024-09-19 09:08:03

在 .NET 中使用 WEB SERVICE 的CallBacks机制 (5)的相关文章

在ASP.NET Atlas中调用Web Service—处理错误

asp.net|web|错误 在本系列的上一篇(在ASP.NET Atlas中调用Web Service--介绍及简单应用)中,我们熟悉了Atlas中调用Web Service的最基础方法,但是在实际开发中,仅仅发出请求并等待返回结果是不够的,我们大都需要考虑对错误超时等的处理,也要允许用户取消操作.幸运的是,Atlas对Web Service中的Web Method的封装也充分考虑到了这些需求.让我们举一个Web Method的例子来说明,例如,对于如下的Web Method: public

在ASP.NET Atlas中调用Web Service—批量调用以提高效率

asp.net|web 对于Atlas程序,在某些情况下,我们需要在短时间内调用大量的Web Service,例如某个列表中用户快速的点击删除.这时网络带宽,稳定程度等等往往会造成较长时间的延迟.如果可以将这些调用包装成一个单一的请求,那么用户只需忍受一次网络延迟,即可得到处理的结果,也间接的提高了效率.似乎这并不是一个很容易实现的功能,但幸运的是,Atlas中内建了对批量调用Web Service的支持,您所需要的只是在程序中简单设置一下. Atlas中每个Web Service的调用请求都有

在ASP.NET Atlas中调用Web Service

asp.net|web 在前一篇文章(在ASP.NET Atlas中调用Web Service--创建Mashup调用远端Web Service(基础知识以及简单示例))中,我介绍了一些Atlas中对远程Web Service进行Mashup的基础知识,并给出了一个最基础的没有丝毫用处例子.今天再回到这个话题上,我将给出一个更复杂点的,但有一些用处的例子--Yahoo! Weather. 废话到此为止,让我们先熟悉一下Yahoo! Weather服务:Yahoo!在其网站上提供了天气预报服务(h

在ASP.NET Atlas中调用Web Service—应用Cache减小服务器开销

asp.net|cache|web|服务器 对于一些复杂的,需要较长时间完成,并且对实时性要求不是很高的服务,选择Cache往往是一个有效的提高效率的方法..NET的Web Service实现充分考虑了对Cache的需求,您只需要简单的设定即可启用Cache.Atlas中对Web Service的调用也可以利用这一Cache机制,以减少服务器端不必要的开销. 要启用Web Service的Cache,您只需要在WebMethod的声明中添加如下属性: [WebMethod(CacheDurati

在Pocket PC中使用Web Service连接数据库

web|连接数据库 在Pocket PC中使用Web Service连接数据库前言微软的移动开发者大会在六月的北京举行了,国内的移动应用软件虽然是刚刚起步,但是这个前景宽广的领域已经受到越来越多软件厂商的关注了.移动设备上的商业应用尽管刚刚起步,但已经显示出巨大的发展潜力. 在微软移动开发挑战赛中,我的作品<饕餮元年无线餐饮管理系统>获得了商业应用的三等奖.为了实现Pocket PC与后台数据库服务器的连接,我的作品中使用了.Net CompactFramework和Web Service技术

.NET中的Web service的开发

web .NET平台内建了对Web service的支持,包括Web service的构建和使用. 与其它开发平台不同,使用.NET平台,你不需要其他的工具或者SDK就可以完成Web service的开发了..NET Framework本身就全面支持Web service,包括服务器端的请求处理器和对客户端发送和接受SOAP消息的支持.本节将带你用.NET创建和使用一个简单的Web service.要在.NET中创建Web service,你只需建立一个.asmx文件.这个文件中有一个WebSe

SSIS:在 SSIS 中使用 Web Service 以及 XML 解析

Web Service 的用途非常广几乎无处不在,像各大门户网站上的天气预报使用到的第三方 Web Service API,像手机客户端和服务器端的交互等都可以通过事先设计好的 Web Service 接口来实现两 个不同平台的信息沟通. 记得第一次做 IPhone 手机客户端与服务器端交互的 Web Service 接口的时候,由于我们在客户端 开发和服务器端开发都没有 IOS 平台开发经验,白天有其它的项目,只能利用晚上的时间不断尝试.最 终在第三个通宵的时候,尝试搭建的第3套不同版本的 W

在WebSphere Portlet Factory中调用Web Service

通过 WebSphere Portlet Factory(WPF),开发者非常方便实现 Web Service 和 Portlets 的通信.开发者无需花费大量的时间去学习 SOAP,WSDL,XML schema(xsd) 等 Web Service 技术,使用 WPF 即可开发出健壮.功能强大的 Web Service 和实现对各种风格的 Web Service 的调用.WPF 隐藏了 Web Service 的内部实现细节,通过 WPF 的丰富的构建器自动生成 Web Service 和实

使用Integrated Web Services Client for ILE在ILE程序中调用Web Service 一

IBM Integrated Web Services for i是IBM最新发布的在IBM i上的SOA解决方案,包括Integrated Web Services Server for i和Integrated Web Services Client for ILE两部分.Integrated Web Services Server for i使用户能够将ILE RPG 和 COBOL程序快速部署成Web Services,而Integrated Web Services Client fo