引言
以前使用windows服务,于是学习并记录下来:windows服务的创建、安装、调试全过程及引发的后续学习。现如今需要用到webservice,对此感觉到很困惑。经过几天的学习、查阅资料,终于大致搞清如何运用,至于它的根本原理,暂时还不能完全理解,以后有机会再详细研究吧。
定义:
webservice是一个平台独立的,低耦合,自包含的、基于可编程可编程的应用程序,可使用开放的xml标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。(百度定义)
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如的xml、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
个人理解:webservice是一个独立的平台,是用xml来描述的,可以帮组不同平台下的系统建立数据交互机制。比如:在一个很庞大的asp.net网站上创建一个webservice,公司内部的其他部门开发的系统需要引用网站的一些数据,那么在网站上面创建一个webservice,其他系统直接添加web服务即可调用网站上的一个数据或者是方法等等。
创建一个简单的webservice:
讲述碰到的第一个小问题:本人使用的visual studio2010,在新建项目时找不到web服务?
直接选择.net4.0,可以选择创建asp.net空模板,然后添加新项选择web服务模板即可。此方法最简单。还有:选择.net2.0,,3.0,3.5,就可以选择webservice模板了,之后需要.net4.0新特性,在项目属性窗口或者页窗口的Build选项卡中选择.net4.0即可。
新建一个空的asp.net项目,添加webservice页面,编写:
namespace FirstWebservice { /// <summary> /// WebService1 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { [WebMethod(Description = "求和的方法")] public double addition(double i, double j) { return i + j; } [WebMethod(Description = "求差的方法")] public double subtract(double i, double j) { return i - j; } [WebMethod(Description = "求积的方法")] public double multiplication(double i, double j) { return i * j; } [WebMethod(Description = "求商的方法")] public double division(double i, double j) { if (j != 0) return i / j; else return 0; } } }
至此创建了一个webservice,里面包含加减乘除4个方法。
Asp.net调用webservice:
下面创建一个asp.net项目调用webservice:
首先引用webservice,将服务的网站网址加入服务引用即可。
编写调用的方法:
protected void Button1_Click(object sender, EventArgs e) { string selectFlag = selectOper.Value; ServiceReference1.WebService1SoapClient web = new ServiceReference1.WebService1SoapClient(); if (selectFlag.Equals("+")) { Result.Text = (web.addition(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString(); } else if (selectFlag.Equals("-")) { Result.Text = (web.subtract(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString(); } else if (selectFlag.Equals("*")) { Result.Text = (web.multiplication(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString(); } else if (selectFlag.Equals("/")) { Result.Text = (web.division(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString(); } }
Winform调用webservice:
既然上面在介绍webservice时说了其是夸平台的,那么创建一个winform系统调用webservice。同样先添加webservice,
private void button1_Click(object sender, EventArgs e) { ServiceReference1.WebService1SoapClient web = new ServiceReference1.WebService1SoapClient(); this.txt3.Text = (web.multiplication(double.Parse(this.txt1.Text), double.Parse(this.txt2.Text))).ToString(); }
可以看出winform的调用和asp.net调用基本是相同的。
总结:
上文简单描述了webservice的基本认识,接着创建了一个相当简单的webservice,然后创建一个asp.net项目和winform系统对它进行调用,所有一切基本上完成了webservice的使用过程。大家平时看到的更高级的webservice,或者可以说是更为复杂的webservice吧,这些都是在最简单的webservice基础上增加的一些很复杂的业务逻辑,抽丝剥茧后还是基本的webservice应用。