Web Service

1.1Web Service基本概念

Web Service也叫XML Web Service WebService是一可以接收从Internet或者Intranet上的其它系传递过来的求,的独立的通。是:SOAPWeb上提供的件服,使用WSDL文件明,并通UDDI行注册。

XML(Extensible Markup Language)展型可标记语言。面向短期的临时数据理、面向万,是Soap的基

Soap(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用UDDI找到你的WSDL描述文档后,他通可以SOAP用你建立的Web中的一个或多个操作。SOAPXML文档形式的用方法的范,它可以支持不同的底接口,像HTTP(S)或者SMTP

WSDL(Web Services Description Language) WSDL 文件是一个 XML 文档,用于明一 SOAP 消息以及如何交换这些消息。大多数情况下件自生成和使用。

UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web商和使用者的新目。在用够调Web之前,必确定个服内包含哪些商方法,找到被用的接口定要在服端来件,UDDI是一根据描述文档来引统查找相的机制。UDDI利用SOAP消息机制(准的XML/HTTP)来布,编辑浏览以及找注册信息。它采用XML格式来封装各不同型的数据,并且送到注册中心或者由注册中心来返回需要的数据。

1.2XML Web Service的特点

Web Service的主要目是跨平台的可互操作性。实现这一目Web Service 完全基于XML(可标记语言)、XSDXML Schema)等独立于平台、独立于件供商的准,是建可互操作的、分布式用程序的新平台。因此使用Web Service:

1、跨防火的通信

 如果用程序有成千上万的用,而且分布在世界各地,那端和服器之的通信将是一个棘手的问题。因端和服器之通常会有防火或者代理服器。传统的做法是,选择浏览器作端,写下一大堆ASP面,把用程序的中间层暴露这样做的果是开发难度大,程序很难维护。要是客端代不再如此依HTML,客端的程就简单多了。如果中间层组Web Service,就可以从用界面直接用中间层组件,从而省掉建立ASP面的那一。要Web Service,可以直接使用Microsoft SOAP Toolkit.net这样SOAP端,也可以使用自己开发SOAP端,然后把它和用程序接起来。不仅缩短了开发周期,减少了代码复杂度,并能强应用程序的可维护性。同用程序也不再需要在用中间层组,都跳到相

2用程序集成

业级用程序开发者都知道,企常都要把用不同言写成的、在不同平台上运行的各程序集成起来,而这种集成将花很大的开发力量。用程序常需要从运行的一台主机上的程序中取数据;或者把数据送到主机或其它平台用程序中去。即使在同一个平台上,不同件厂商生的各种软件也常常需要集成起来。通Web Service用程序可以用准的方法把功能和数据暴露出来,供其它用程序使用。

XML Web services 提供了在松耦合境中使用协议HTTPXMLSOAP WSDL)交消息的能力。消息可以是构化的、带类型的,也可以是松散定的。

3B2B的集成

B2B 指的是Business to Businessas in businesses doing business with other businesses,商家(泛指企)商家的子商,即企与企品、服及信息的交。通俗的法是指子商交易的供需双方都是商家(或企、公司),她使用了Internet的技或各平台,完成商交易的程。

Web ServiceB2B集成成功的关键。通Web Service,公司可以只需把关键的商务应暴露指定的供商和客,就可以了,Web Service运行在Internet上,在世界任何地方都可实现,其运行成本就相对较低。Web Service只是B2B集成的一个关键部分,需要多其它的部分才能实现集成。用Web Service实现B2B集成的最大好在于可以实现互操作性。只要把商务逻辑暴露出来,成Web Service,就可以任何指定的合作伙伴些商务逻辑,而不管他的系在什平台上运行,使用什么开发语言。这样就大大减少了花在B2B集成上的时间和成本。

4件和数据重用

Web Service在允重用代的同,可以重用代背后的数据。使用Web Service,再也不必像以前那,要先从第三方购买、安装件,再从用程序中件;只需要直接端的Web Service就可以了。另一种软件重用的情况是,把好几个用程序的功能集成起来,通Web Service “暴露出来,就可以非常容易地把所有些功能都集成到你的门户站点中,提供一个一的、友好的界面。可以在用程序中使用第三方的Web Service 提供的功能,也可以把自己的用程序功能通Web Service 提供给别人。两情况下,都可以重用代和代背后的数据。

从以上述可以看出,Web Service 在通Web行互操作或用的候是最有用的。不,也有一些情况,Web Service根本不能来任何好Web Service有一下缺点:

1用程序

目前,企和个人使用着很多桌面用程序。其中一些只需要与本机上的其它程序通信。在这种情况下,最好就不要用Web Service,只要用本地的API就可以了。COM非常适合于在这种情况下工作,因它既小又快。运行在同一台服器上的服件也是这样。当然Web Service 也能用在合,但那消耗太大,而且不会来任何好

2、局域网的一些用程序

用中,所有的程序都是在Windows平台下使用COM,都运行在同一个局域网上。在些程序里,使用DCOM会比SOAP/HTTP有效得多。与此相似,如果一.net程序要接到局域网上的另一.net程序,应该使.net Remoting。其.net Remoting中,也可以指定使用SOAP/HTTPWeb Service 用。不最好是直接通TCPRPC用,那会有效得多。

1.3XML Web Service

1.最初的 XML Web Service 通常是可以方便地并入用程序的信息来源,如股票价格、天气预报、体育成等等。

2. XML Web Service 方式提供用程序,可以构建新的、更大的用程序,并利用 XML Web Service 构造

例如,用可以开发一个采购应用程序,以自动获取来自不同供商的价格信息,从而使用可以选择商,提交订单,然后跟踪物的运,直至收到物。而供商的用程序除了在Web上提供服外,可以使用XML Web Service检查的信用、收取款,并与运公司运手

二、Web Service开发

.net平台内建了Web Service的支持,包括Web Service的构建和使用。与其它开发平台不同,使.net平台,你不需要其他的工具或者SDK就可以完成Web Service开发.net Framework本身就全面支持Web Service,包括服器端的理器和送和接受SOAP消息的支持。下来我就一的用Microsoft Visual Studio .net 2005(后面VS.Net 2005建和使用一个简单Web Service

2.1、用建一个最简单Web Service

首先,打VS2005,文件-新建-网站选择“ASP.NET Web

Service.cs,你会发现VS.Net 2005经为Web Service文件建立了缺省的框架。原始代码为

 1 using System;
 2 using System.Web;
 3 using System.Web.Services;
 4 using System.Web.Services.Protocols
 5 [WebService(Namespace = "http://tempuri.org/")]
 6 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 7 public class Service : System.Web.Services.WebService
 8 {
 9     public Service () 
10         //如果使用设计件,取消注以下行 
11         //InitializeComponent(); 
12     }
13     [WebMethod]
14     public string HelloWorld() {
15         return "Hello World";
16     }
17 }

工程里面已有一个Hello World的方法了,直接运行看看效果,

击显面上中的“HelloWorld”接,跳到下一

再点,就可以看到用XML格式返回的Web Service果下明我Web Service境没有问题,而且接触了一下最简单Web Service

2.2建一个简单带有功能的Web Service

       上面我的了解了webservice,其它就是个外的接口,里面有函数可供外部客户调(注意:里面同有客不可用的函数).假若我是服,写好了个webservice,然后把它了客(们给了他们调规则),就可以在从服取信息时处于一个相透明的状.即是客不了解(也不需要),取数据.在代文件里,如果我写了一个函数后,希望此函数成外部可用的接口函数,在函数上面添上一行代[WebMethod(Description="函数的描述信息")],如果你的函数没有个申明,它将不能被用引用.下来我们开写一个简单Web Service 的例子。

     先把默HelloWorld方法注掉,简单的写了求加减乘除运算的四个方法;

 1 using System;
 2 using System.Web;
 3 using System.Web.Services;
 4 using System.Web.Services.Protocols;
 5 
 6 [WebService(Namespace = "http://tempuri.org/")]
 7 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 8 public class Service : System.Web.Services.WebService
 9 {
10     public Service () {
11         //如果使用设计件,取消注以下行 
12         //InitializeComponent(); 
13     }
14     //[WebMethod]
15     //public string HelloWorld() {
16     //    return "Hello World";
17     //}            
18     [WebMethod(Description="求和的方法")]
19     public double addition(double i,double j)
20     {
21         return i + j;
22     }
23     [WebMethod(Description="求差的方法")]
24     public double subtract(double i, double j)
25     {
26         return i - j;
27     }
28     [WebMethod(Description="的方法")]
29     public double multiplication(double i, double j)
30     {
31         return i * j;
32     }
33     [WebMethod(Description="求商的方法")]
34     public double division(double i, double j)
35     {
36         if (j != 0)
37             return i / j;
38         else
39             return 0; 
40     }
41 }
42 

运行可以看到我自己写的可以被用的方法,如下

addition方法,addition方法的

在参数上面入参数i=3,j=3,如上,击调,就可以看到用XML格式返回的Web Service(ij相加的)

,发现,webservice并不是那的神秘,它也不只是个接口,而言,重点就是是接口函数的.

2.3、用ASP.NETWeb Service
首先,打VS2005,文件-新建-网站选择“ASP.NET网站


好存位置,言后点确定,入默认页面。然后先添加Web引用,把WebService引到当前的工程里面。方法是:在源管理器中点选择添加Web 引用,对话框:

URL中填入,前面写好的WebService运行后浏览器上面示的地址,点前往,如上,就会示出所引用的WebService中可以用的方法,然后点添加引用,就将webservice引用到了当前的工程里面,如下,解决方案中会出来的WebService文件

练习调webservice的四个方法,做一个简单用的例子,先在网站的前台添加几个控件,代如下: 然后在后台写用的代用之前和使用其它的象一,要先例化,例化的方法是localhost.Service a = new localhost.Service();然后就可以通a访问WebService里面提供的方法了。在个例子里面,动态建了一个button控件来触WebService用,后台代如下:

 1 using System;
 2 using System.Data;
 3 using System.Configuration;
 4 using System.Web;
 5 using System.Web.Security;
 6 using System.Web.UI;
 7 using System.Web.UI.WebControls;
 8 using System.Web.UI.WebControls.WebParts;
 9 using System.Web.UI.HtmlControls;
10 public partial class _Default : System.Web.UI.Page 
11 {
12     protected void Page_Load(object sender, EventArgs e)
13     {
14         //面加动态创建一个按,在它的事件里Webservice
15         Button btn = new Button();
16         btn.Width = 20;
17         btn.Text = " = ";
18         btn.Click +=new EventHandler(btn_Click);
19         E.Controls.Add(btn);
20     }
21     /// <summary>
22     /// 义动态创ButtonClick事件,在个事件中Webservice
23     /// </summary>
24     /// <param name="sender"></param>
25     /// <param name="e"></param>
26     void btn_Click(object sender, EventArgs e)
27     {
28         if (Num1.Text != "" && Num2.Text != "")
29         {
30             //例化引用的webservice
31             localhost.Service WebserviceInstance = new localhost.Service();
32             int Oper = selectOper.SelectedIndex;
33             switch( Oper)
34             {
35                 //过实例化的webservice象来Webservice暴露的方法
36                 case 0:
37                     Result.Text = WebserviceInstance.addition(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
38                     break;
39                 case 1:
40                     Result.Text = WebserviceInstance.subtract(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
41                     break;
42                 case 2:
43                     Result.Text = WebserviceInstance.multiplication(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
44                     break;
45                 case 3:
46                     Result.Text = WebserviceInstance.division(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
47                     break;
48             }
49         }
50     }
51 }
52 

运行后可以看到效果,如下所示,在前面两个Textbox里面入两个操作数,在中的下拉列表中选择操作符,然后点“=”号,将算的出到第三个Textbox里面。

而整个算并不是在本地行的,是在Web算的然后将果通XML还给用方的,所以,在运行程序的候,WebService程序,否无法程服器的异常,如下

到此一个一个简单WebService开发用就已完成了,在实际应用中可以根据自己的需要,写一些功能大的,复杂WebService,不管多么复杂,整个流程都是这样的。

 1 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml" >
 5 <head runat="server">
 6     <title>Webservice</title>
 7 </head>
 8 <body>
 9     <form id="form1" runat="server">
10         <div>
11             <asp:TextBox ID="Num1" runat="server"></asp:TextBox>
12             <select id="selectOper" runat = "server">
13                 <option>+</option>
14                 <option>-</option>
15                 <option>*</option>
16                 <option>/</option>
17             </select>
18             <asp:TextBox ID="Num2" runat="server"></asp:TextBox>
19             <span id = E runat = "server"></span>
20             <asp:TextBox ID="Result" runat="server"></asp:TextBox>
21         </div>
22 </form>
23 </body>
24 </html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值