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. 【Java】设计模型-五种单例模型

    一. 什么是单例模式 只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在. 单例模式有很多好处,它能够 ...

  2. python用matplotlib画折线图

    折线图: import matplotlib.pyplot as plt y1=[10,13,5,40,30,60,70,12,55,25] x1=range(0,10) x2=range(0,10) ...

  3. sublime Text3基本配置记录+python

    环境:ubuntu 内容:基本配置+python开发实用插件 一. 激活 注册码 Michael Barnes Single User License EA7E- 8A353C41 872A0D5C ...

  4. halcon 动态阈值分割之偏移值

  5. ASP.NET Web Forms - 网站导航(Sitemap 文件)

    [参考]ASP.NET Web Forms - 导航 ASP.NET 带有内建的导航控件. 网站导航 维护大型网站的菜单是困难而且费时的. 在 ASP.NET 中,菜单可存储在文件中,这样易于维护.文 ...

  6. swoole 基础知识

    $host = 127.0.0.1  监听本地ip $host = 255.3.258.139  监听外网的某个ip $host= 0.0.0.0 监听所有ip $ws = new swoole_we ...

  7. IDEA阅读spring源码并调试

    目标:搭建起Spring源码阅读和代码调试跟踪的环境,顺便建立一个简单的Demo,能够调试Spring的源代码 本节,主要介绍一下Spring源码阅读和调试的相关环境搭建,并使用MVN创建一个非常简单 ...

  8. rabbitmq消费端加入精确控频。

    控制频率之前用的是线程池的数量来控制,很难控制.因为做一键事情,做一万次,并不是每次消耗的时间都相同,所以很难推测出到底多少线程并发才刚好不超过指定的频率. 现在在框架中加入控频功能,即使开200线程 ...

  9. redis在php中的基本使用

    //使用autoload加载相关库,这边重点就是为了require $file; spl_autoload_register(function($class) { $file = __DIR__.’/ ...

  10. Jquery EasyUI Combotree和 EasyUI tree展开所有父节点和获取完整路径

    Jquery EasyUI Combotree展开所有父节点 Jquery EasyUI Combotree获取树完整路径 Jquery EasyUI tree展开所有父节点 Jquery EasyU ...