一、概述
1、webservice是什么?
2、webservice的由来?
3、webservice的目的?
WebService的主要目标是跨平台的可互操作性。因此WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
4、webservice的适用场景?
-
跨防火墙通信。在一个用户界面和中间层有较多交互的应用程序中,使用WebService这种结构作为中间层组件,可以节省花在用户界面编程上的开发时间。另外,这样一个由WebService组成的中间层,完全可以在应用程序集成或其它场合下重用。最后,通过WebService把应用程序的逻辑和数据“暴露”出来,还可以让其它平台上的客户重用这些应用程序。
-
应用程序集成。通过WebService,应用程序可以用标准的方法把功能和数据“暴露”出来,供其它应用程序使用。
-
B2B集成。WebService是B2B集成成功的关键。通过WebService公司可以把关键的商务应用“暴露”给指定的供应商和客户。用WebService来实现B2B集成的最大好处在于可以轻易实现互操作性。只要把商务逻辑“暴露”出来,成为WebService,就可以让任何指定的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么开发语言。这样就大大减少了花在B2B集成上的时间和成本,让许多原本无法承受EDI的中小企业也能实现B2B集成。
-
软件和数据重用。WebService在允许重用代码的同时,可以重用代码背后的数据。使用WebService,只需要直接调用远端的WebService就可以了。另一种软件重用的情况是,把好几个应用程序的功能集成起来。把这些功能通过WebService“暴露”出来,就可以非常容易地把所有这些功能都集成到你的门户站点中,为用户提供一个统一的、友好的界面。
5、WebService涉及的技术
-
UDDI (Universal Description, Discovery, and Integration) :UDDI是一种用于描述、发现、集成Web Service的技术,它是Web Service协议栈的一个重要部分。通过UDDI企业可以根据自己的需要动态查找并使用Web服务,也可以将自己的Web服务动态地发布到UDDI注册中心,供其他用户使用。
-
WSDL(Web Services Description Language) :网络服务描述语言,WSDL文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息,大多数情况下由软件自动生成和使用。
-
XML(Extensible Markup Language):扩展型可标记语言,是Web service平台中表示数据的基本格式,是Soap的基础。
- Soap(Simple Object Access Protocol):简单对象访问协议,是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,可以通过SOAP调用Web服务中的一个或多个操作。
6、webservice的完整流程
- 发布:Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册
- 发现:Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务
- 发现:Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读
- 绑定:利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用
- 绑定:Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者
二、webservice的实例
1、构建webservice服务端
选择下图模板:
项目结构如下:
右击项目添加新建Web服务项
在WebService1.asmx中添加几个方法:
using System.Web.Services; namespace WebServiceDemo { /// <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] public string HelloWorld() { return "Hello World"; } [WebMethod] public double Add(double a, double b) { return a + b; } [WebMethod] public double Sub(double a, double b) { return a - b; } } }
F5运行,查看效果:
发布webservice,右键项目,选择发布:
配置到IIS,效果如下:
浏览器中输入地址:http://localhost:8060/webservice1.asmx
2、构建webservice客户端
选择模板,如下:
项目结构如下:
最重要的一步就是引用webservice ,项目->引用->右键选择“添加服务引用”,可以看到下图:
填入之前建立的webservice 对应的url , 点击转到即可,会出现以下Service Reference,这样就可以引用webservice了
添加web窗体,引用webservice中的函数
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebServiceWeb.WebForm1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Button ID="Button1" OnClick="ButtonId_Click" runat="server" Text="button" /> </div> </form> </body> </html>
后台逻辑,引用webservice的函数HelloWorld()
using System; using System.Windows; namespace WebServiceWeb { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void ButtonId_Click(object sender, EventArgs e) { WebServiceWeb.ServiceReference1.WebService1SoapClient webService1Soap = new WebServiceWeb.ServiceReference1.WebService1SoapClient(); string text= webService1Soap.HelloWorld(); MessageBox.Show(text); } } }
程序运行结果