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. 5款最好的免费在线网站CSS验证器

    这里是一个名单, 5免费在线CSS验证器的网站.这些网站让你验证你的CSS代码的自由,没有任何麻烦.你可以选择上传文件,验证CSS添加URL,或简单的复制和粘贴完整的CSS代码.好的方面是,这些网站不 ...

  2. Hadoop相关基础知识

    因为个人对这块的知识也不熟悉,所以大多内容来源于网络. 1.      Hadoop项目框架 2.      Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以 ...

  3. Maven项目:Malformed POM expected START_TAG or END_TAG ........

    今天在执行maven命令 mvn assembly:assembly -Dmaven.test.skip=true的时候报了个错,大概是Malformed POM expected START_TAG ...

  4. TextView 链接显示及跳转

    当文字中出现URL.E-mail.电话号码等的时候,我们为TextView设置链接.总结起来,一共有4种方法来为TextView实现链接.我们一一举例介绍: 1. 在xml里添加android:aut ...

  5. SortedSet的实现类是TreeSet:它的作用是字为添加到TreeSet中的元素排序。

      SortedSet可自动为元素排序. SortedSet的实现类是TreeSet:它的作用是字为添加到TreeSet中的元素排序.   练习:自定义类用TreeSet排序. 与HashSet不同, ...

  6. Python学习笔记——发邮件

    参考:Python3实现163邮箱SMTP发送邮件 1.首先需要注册一个网易的邮箱,开启smtp服务,并使用其授权码 2.发送邮件的Python脚本 #!/usr/bin/python # -*- c ...

  7. 使用DDL触发器同步多个数据库结构

    使用DDL触发器同步多个数据库结构 背景:当开发组比较大时,势必会分布到不同的地理位置,若无法在同一个快速网络中工作,就会造成多个开发库并存的局面,这样就需要多个开发库结构的同步,甚至是开发测试数据的 ...

  8. PHP 合并有序数组

    <?php //两个有序数组合并 $arr1 = [1,5,7,44,66,89]; $arr2 = [4,5,6,88,99,105,111]; $arr3 = []; $l1 = count ...

  9. Q - Girls and Boys

    来源poj1068 In the second year of the university somebody started a study on the romantic relations be ...

  10. word-break和word-wrap的使用和区别

    问题起源: 中文是一个字就是一个单词,而英文字母要有一个空格才将他们分割为一个单词:文字换行没事,主要是英文 <!DOCTYPE html> <html> <head&g ...