加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService同步异步调

发布时间:2020-12-17 00:22:14 所属栏目:安全 来源:网络整理
导读:故事剧情:好吧,本来我已经写了很多,手贱,关的太快,没有保存就把日志关了。。。我大概的再写一遍,无语 工具: SqlServer 2008,vs2010 1、新建网站如:WebServiceForSearch,创建WebService,名叫SearchAmountOfProduct.,内有方法 [WebMethod] public D

故事剧情:好吧,本来我已经写了很多,手贱,关的太快,没有保存就把日志关了。。。我大概的再写一遍,无语

工具: SqlServer 2008,vs2010

1、新建网站如:WebServiceForSearch,创建WebService,名叫SearchAmountOfProduct.,内有方法

[WebMethod]
    public DataSet DsByName(string name) {
        StringBuilder sb = new StringBuilder();
        sb.Append(" select pa.amount,p.name,p.category,");
        sb.Append(" p.price,p.publishDate,p.publishhouse,");
        sb.Append(" p.author from Product p");
        sb.Append(" join ProductAmount pa  on pa.id=p.id");
        sb.Append(" where 1=1 ");
        sb.Append(" and name like '%"+name+"%'");
        return SqlHelper.ExecuteDataset(SqlHelper.ConnectionString,CommandType.Text,sb.ToString(),null);
    }
    [WebMethod]
    public int add(int a,int b )
    {
        return a + b;
    }

2、记录webservice的URLhttp://localhost:3520/Web/SearchAmountOfProduct.asmx

3、建调用网站CallWebServiceSearch,随便建个页面default.aspx,放一个gridView

4、右击网站,添加web引用,URL里输入第二步的url,web服务启名ProductService

5、先是同步调用,简单到爆

(1)先引用web服务名的命名空间,如ProductService

(2)然后代码如下

	    //同步
            SearchAmountOfProduct sa = new SearchAmountOfProduct();
            gvList.DataSource = sa.DsByName("").Tables[0];
            gvList.DataBind();
6、同步调用的时候,系统无法做其他事,必须同步先完全的执行完才行,这个明显给用户体验带来个致命的效果,现在是需要,调用的同时,网站仍然可以运行其他功能,同时等待webserice服务调用得到的数据。so,we want async!!

(1)先添加属性Async="true",在页面最头上。

(2)仍然引用web服务名的命名空间,如ProductService

(3)代码如下

    protected void Page_Load(object sender,EventArgs e)
    {
        if (!IsPostBack)
        {
            //同步
            //SearchAmountOfProduct sa = new SearchAmountOfProduct();
            //gvList.DataSource = sa.DsByName("").Tables[0];
            //gvList.DataBind();
            //异步
            SearchAmountOfProduct sa = new SearchAmountOfProduct();
            sa.DsByNameAsync("");//关键地方,告诉系统是异步
            sa.DsByNameCompleted += new DsByNameCompletedEventHandler(sa_DsByNameCompleted);//委托事件
        }
    }

    void sa_DsByNameCompleted(object sender,DsByNameCompletedEventArgs e)
    {
        gvList.DataSource = e.Result.Tables[0];//e.Result是结果集,即sa的方法
        gvList.DataBind();
    }
结束!(源代码已经上传,代码虽然很初级,也很简单,但相信能帮到刚开始学习webServices的人)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读