asp.net—web server模拟网上购物
2014-05-08     我来说两句   来源:asp.net—web server模拟网上购物  
收藏    我要投稿

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

一.基础

概念:

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代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    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代码

1
2
3
4
5
6
7
8
9
10
11
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title></title>
 
 
    <form id="form1" runat="server">
    <div>
         
        </asp:checkboxlist>
         
    </asp:button></div>
    </form>

客户端后台代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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));
    }
}

源码地址

里面有具体的源码:http://download.csdn.net/detail/suneqing/7313033

三.总结

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

转载的web server实例的更多相关文章

  1. PHP Web Server 实例

    通过WebService,我们可以调用部署在其它地方的程序,而不用关心被调用的程序是在什么平台用什么语言编写的.这里我们使用php调用. 在php4时代调用WebService大部分使用的nusoap ...

  2. 【实例图文详解】OAuth 2.0 for Web Server Applications

    原文链接:http://blog.csdn.net/hjun01/article/details/42032841        OAuth 2.0 for Web Server Applicatio ...

  3. 【转载】springboot启动报错(Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWe)

    SpringBoot启动时的异常信息如下: 1 "C:\Program Files\Java\jdk1.8.0_161\bin\java" ......... com.fangxi ...

  4. Tomcat是怎么工作的(2) -- 动手实现山寨版的简单Web Server

    本文先讲解一下Java web server都是怎么工作的.web server也叫HTTP server——顾名思义它是用HTTP协议和客户端交互的.客户端一般就是各种各样的浏览器了.相信所有朋友都 ...

  5. Atitit。Web server Jetty9 使用 attilax 总结

    Atitit.Web server Jetty9 使用 attilax 总结 1.1. 静态文件的资源1 1.2. Servlet使用1 1.3. code1 1.1. 静态文件的资源 WebAppC ...

  6. Server Develop (九) Simple Web Server

    Simple Web Server web服务器hello world!-----简单的socket通信实现. HTTP HTTP是Web浏览器与Web服务器之间通信的标准协议,HTTP指明了客户端如 ...

  7. Atitit.Gui控件and面板----web server区----- web服务器监控面板and控制台条目

    Atitit.Gui控件and面板----web server区----- web服务器监控面板and控制台条目 1. Resin4.0.22 1 2. 查看http连接数::Summary>& ...

  8. 利用PowerUpSQL攻击SQL Server实例

    这篇博客简述如何快速识别被第三方应用使用的SQL Server实例,该第三方软件用PowerUpSQL配置默认用户/密码配置.虽然我曾经多次提到过这一话题,但是我认为值得为这一主题写一篇简短的博客,帮 ...

  9. 【转载】Windows Server 2012服务器删除IIS方法

    在Windows Server2012版本的服务器系统中,我们可以通过服务器管理器中的"添加角色和功能"来添加IIS的Web服务器,当我们不再使用IIS功能时候,我们也可以通过删除 ...

随机推荐

  1. Oracle中判断字段是否为数字

    在我们平常的开发中可能会遇到这样的问题,就是判断某一列是否全部由数字组成,我们都知道oracle并没有给我们提供这样一个现成的函数,那么根据我的经验我总结了两个行之有效的方法(列名:column,表名 ...

  2. 科普知识普及 - 桥接VS中继

    首先要说明一个很多人理解的误区,中继比桥接好用,真的是这么回事么? 答案是否定的. 我们在说桥接和中继的时候我们要先了解,桥接和中继的工作原理.还有一个问题,估计很多人都想不明白:为什么中继搜到的信号 ...

  3. 【Excel】读取CSV文本

    Option Explicit ' CSV形式テキストファイル(5カラム)読み込みサンプル Sub READ_TextFile() Const cnsTITLE = "テキストファイル読み込 ...

  4. echarts网络拓扑图

    option = { title: { text: '' }, tooltip: {}, animationDurationUpdate: 1500, animationEasingUpdate: ' ...

  5. Oracle误删除数据的恢复方法(转)

    来源:原创网站北京北亚数据恢复中心,转载须注明出处. 学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些 ...

  6. ORACLE调优深入理解AWR报告(转)

    AWR报告分析可从以下几点入手: (1).Oacle主机资源开销分析及负载情况 (2).oracle top信息分析 Top 10 Foreground Events by Total Wait Ti ...

  7. cc攻击和ddos攻击

    DoS攻击.CC攻击的攻击方式和防御方法 DDoS介绍 DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of ...

  8. 【CF446D】DZY Loves Games 高斯消元+矩阵乘法

    [CF446D]DZY Loves Games 题意:一张n个点m条边的无向图,其中某些点是黑点,1号点一定不是黑点,n号点一定是黑点.问从1开始走,每次随机选择一个相邻的点走过去,经过恰好k个黑点到 ...

  9. git clean(转载)

    git clean命令用来从你的工作目录中删除所有没有tracked过的文件. git clean经常和git reset --hard一起结合使用. 记住reset只影响被track过的文件, 所以 ...

  10. Win系统的快捷键

    用了Macos觉得win系统不好用,其实不然,win也有很多方便的快捷键. win系统的快捷键: super/Alt+Tab键切换应用程序,而不是用鼠标点,切换多任务,super就是win win+D ...