浅谈 WebService
? ? ? ? ?初步理解web服务,着实不知从何入手,先看百度百科对此解释,小编我再逐步分析。 ? ? ? ? ?Web service是一个平台独立的,低耦合的,自包含的,基于可编程的web的应用程序。web service技术,能使得运行在不同机器上的不同应用无须借助附加的,专门的第三方软件或硬件,就可相互交换数据或集成。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——《百度百科》 ? ? ? ? 百度百科上说的有些抽象,那我们所理解的WebService到底是什么呢? ? ? ? ? 【定义】? ? ? ? ??WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 ? ? ? ? ? ?跨编程语言是指服务端程序和客户端程序都可采用多种编程语言编写;跨操作系统平台是指服务端程序和客户端程序都可以在不同的操作系统上运行。而所谓的远程调用就是:一台计算机A上的一个程序调用计算机B上的一个对象的某一个方法。 ? ? ? ? ? 解释两个名词: ? ? ? ? ? 服务端程序:webservice就是一个应用程序向外界暴露出一个通过web进行调用的API或url地址,把提供这个web服务的应用程序叫做服务端。在下边的例子中银联就充当一个服务端的角色。 ? ? ? ? ? 客户端程序:第三方软件或网站通过编程的方法通过web来调用这个应用程序。把调用这个webservice的应用程序叫做客户端。在下边的例子中商场的pos刷卡机就相当于一个客户端程序。 ? ? ? ? ? 举例:比如说银联提供给商场的pos刷卡系统,商场的POS机转账调用的转账方法的代码其实是跑在银行的服务器上。亦或者说淘宝,天猫等,把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率。 ? ? ? ? 【应用流程】? ? ? ? ? 我们去超市买东西,首先要知道里有什么东西可以买,然后再来购买,商家的做法就是张贴广告海报,告诉你我都卖什么,哪些商品打折?对吧!如果商场不通过此方式推销,那我们怎么知道它那天要打折?然后它怎么挣钱?怎么扩大市场?对吧! ? ? ? ?对比于我们的webservice也是一样。WebService客户端需要调用一个WebService服务,首先要知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService服务端就要告诉外界自己家里有啥服务可以对外调用,服务是什么(服务中包括方法,参数,返回值),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。 ? ? ?? ? ? ? ?【WebService demo】? ? ? ? ?需求说明:银行的转账服务:现有两个账户A和B,每个账户各有1000元,现在从A转到B100元。下面通过两种不同的方式来调用webservice来实现此功能。 ? ? ? ? ?1· 使用asp.net创建Web服务 ? ?? ? ? ? ?2· 在创建好的webservice中添加如下代码:
public class WebService1 : System.Web.Services.WebService { [WebMethod]//向使用ASP.NET创建的XML Web services中的某个方法添加此特性后,就可以从远程web客户端调用该方法。该方法无法继承。 public string AtoB(int money) { try { //从A中减掉money this.decrease(money); //从B中增加money this.increase(money); return "成功"; } catch { return "失败"; } } private void decrease(int money) { SqlConnection conn = new SqlConnection("server=.;database=store;uid=sa;pwd=1;"); conn.Open(); SqlCommand cmd = new SqlCommand("update aaa set money = money-"+money.ToString()+" where account =1",conn); cmd.ExecuteNonQuery(); conn.Close(); } private void increase(int money) { SqlConnection conn = new SqlConnection("server=.;database=store;uid=sa;pwd=1;"); conn.Open(); SqlCommand cmd = new SqlCommand("update aaa set money = money+"+money.ToString()+" where account=2",conn); cmd.ExecuteNonQuery(); conn.Close(); } }? ? ? 3 ?添加web窗体,可在窗体上添加一个文本框和命令按钮,以来接收用户输入需转账的数目。然后在后台编写代码如下:
protected void Button1_Click(object sender,EventArgs e) { WebService1 cc = new WebApplication2.WebService1();//实例化此webservice服务 int temp =Convert.ToInt32( TextBox1.Text);//接收文本框中输入的数据 Response.Write( cc.AtoB(temp));//传给webservice中的AtoB方法,不用知道其具体实现过程,只需知道参数,返回类型。 }? ? ? 4 ?将该窗体设为启动项,运行即可。效果如下:(以及数据库查询结果) ? ? ? ? ? ? ? ? ?? ? ? ? ? ? 第二种调用web服务方式:编写静态网页代码如下:(新建文本文档修改后缀为html即可)
<form name="ff" method="post" action="http://localhost:19010/WebService1.asmx/AtoB"> <input type="text" name="money"><input type="submit"> </form> ? ? 运行结果如下:(以及数据库查询结果) ? ? ? ? ? ? 整体情况就是这样,分别从web定义,创建web服务,web服务工作流程三个方面做一解释。目前的理解就是这样,哪有不周之处,还望多多斧正! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Redis 启动和停止
- Angular 5 – ng-select – 输入文本事件
- 什么是在Scala中重用函数结果的好方法
- bootstrap-table的入门使用——从服务器获取数据
- 解决“/bin/bash^M: bad interpreter: No such file or dir
- angularjs – 角度清除子表单数据和复位验证
- 【数据结构】拓扑排序_TopologicalSort
- AngularJS更新连接或断开Firebase时的服务值
- twitter-bootstrap – Twitter Bootstrap FileUpload
- vim – 如何获取由数字指定的缓冲区的’filetype’?