asp.net—web server模拟网上购物

    在学vb的时候学到了api函数,今天学习asp.net中的web serverweb serverapi函数一样都是为用户提供了一个接口,客户端可以在远程直接调用,不需要知道它具体的算法,难易程度,可以直接使用方法。

一.基础

概念:

1.web服务是应用程序

2.它向外界暴露了一个能够通过web进行调用的api

3.能够用编程的方法,通过web来调用这个应用程序

4.把调用这个web服务应用程序叫做客户。

运行流程


1.目录:web service提供了一个用以定位其他单位提供的web service的中心位置。其中,uddi就是web service目录。Uudi通俗一点说就是建立web service时使用注册到uudi。如果使用服务,就来看uudi。

2.发现:使用wsdl对特定的web service进行描述,一般都是xml文档。其中,wsdl用于描述WebService及其函数、参数和返回值。可以用来向用户介绍Web service的功能,每个函数调用时的参数。

3.联网形式:使用开放式联网形式进行通讯,主要使用sopa通讯协议。

特点:

1.通过web进行访问。

2.使用接口进行调用

3.在服务注册表中注册

4.使用标准web协议通信

5.松散耦合

 二.模拟网上购物的实例

需求

    web server提供了可以使买家付款给卖家的方法方法和获取商品列表的方法;客户端调用这个两个方法,客户端选中购买的商品后,单击‘购买’按钮就可以买家付款给卖家,并显示买家消费金额。

代码实现

    1.web service代码

        public class serviceShopping : System.Web.Services.WebService
    {
        [WebMethod]
        //获取商品
        public DataSet getGoods()
        {
            SqlConnection con = new SqlConnection("server=.;database=shop;uid=sa;pwd=123456;");
            con.Open();
            SqlDataAdapter adr = new SqlDataAdapter();
            adr.SelectCommand = new SqlCommand("select * from goods", con);
            DataSet ds = new DataSet();
            adr.Fill(ds, "goods");
            con.Close();
            return ds;
        }
        [WebMethod]
        //购物
        public string shopping(int sum)
        {
            try
            {
                //买家买东西
                this.buy(sum);
                //卖家卖东西
                this.sell(sum);
                return "交易成功,消费:"+sum;
            }
            catch
            {
                return "交易失败";
            }
        }
        //买家买东西
        private void buy(int sum)
        {
            SqlConnection con = new SqlConnection("server=.;database=shop;uid=sa;pwd=123456;");
            con.Open();
            SqlCommand cmd = new SqlCommand("update buy set money=money-" + sum.ToString() + " where  buyer='A'", con);
            cmd.ExecuteNonQuery();
            con.Close();
        }
        //卖家卖东西
        private void sell(int sum)
        {
            SqlConnection con = new SqlConnection("server=.;database=shop;uid=sa;pwd=123456;");
            con.Open();
            SqlCommand cmd = new SqlCommand("update sell set money=money+" + sum.ToString() + " where  seller='B'", con);
            cmd.ExecuteNonQuery();
            con.Close();
        }
    }

    2.客户端中引用web service的步骤


备注:地址是运行web service后地址栏中地址。

    3.客户端代码

      客户端html代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:CheckBoxList ID="CheckBoxList1" runat="server">
        </asp:CheckBoxList>
        <asp:Button ID="Button1" runat="server" Text="购买" OnClick="Button1_Click" />
    </div>
    </form>
</body>
</html>

         客户端后台代码
    public partial class UseServerShopping : System.Web.UI.Page
    {
        //绑定商品列表
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                myserviceShopping.serviceShoppingSoapClient getGoodslist = new myserviceShopping.serviceShoppingSoapClient();
                this.CheckBoxList1.DataSource = getGoodslist.getGoods();   //绑定商品列表
                this.CheckBoxList1.DataTextField = "goodsname";
                this.CheckBoxList1.DataValueField = "cost";
                this.CheckBoxList1.DataBind();
            }
        }
        //购买商品
        protected void Button1_Click(object sender, EventArgs e)
        {
            //商品价格
            int totalCost=0;
            //计算商品总共价格
              for (int i = 0; i < CheckBoxList1.Items.Count; i++)  //循环checjboxlist1的个数
            {
                if (CheckBoxList1.Items[i].Selected == true)  //checjboxlist1被选中
                {
                    totalCost =totalCost+ Convert.ToInt32(CheckBoxList1.Items[i].Value);  //计算商品总价格
                }
             }
            myserviceShopping.serviceShoppingSoapClient buyGoods = new myserviceShopping.serviceShoppingSoapClient();
            buyGoods.shopping(totalCost);   //调用服务中使买家付款给卖家
            Response.Write(buyGoods.shopping(totalCost));
        }
    }

源码地址

三.总结

    Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。
   

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值