zoukankan      html  css  js  c++  java
  • web service简介

    什么是Web Service

    Web Service主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 Web Service所使用的是Internet上统一、开放的标准,如HTTPXMLSOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
        Web Service
    是构建互联网分布式系统的基本部件。Web Services 正成为企业应用集成(Enterprise Application Integration)的有效平台。你可以使用互联网中提供的Web Service构建应用程序,而不必考虑这些Web Service是怎样运行的。
    Web Service
    三个基本技术
        Web Service
    通过标准通信协议,在互联网上发布有用的程序模块(以服务的方式),目前大部分是用SOAP来作通信协议。
        Web Service
    提供一份详细的接口说明书,来帮助用户构建应用程序,这个接口说明书叫作WSDLWeb Service Description Language)。
        
    通常已发布的Web Service要注册到管理服务器,这样便于使用者查询和使用。这个是通过UDDIUniversal Discovery Description and Integration)来完成的。
    为什么要用Web Service
        Web Servcie
    最主要的优点是,使用不同程序和在不同系统平台上开发出来的程序,都可以相互通信。现在很多人在问:不是CORBADCE也有那些优点吗?跟它们有什么不同呢?。第一个不同点是,SOAP作为Web Service的基本通信协议,比它们简单地多,所以投入和使用的代价也是小的。现在不仅有很多大公司发布的Web Service,也有个人发布的。另一个不同点是,Web Service使用标准的互联网协议-XMLHTTPTCP/IP。很多公司已经从实践当中对这些协议积累了丰富的经验,所以相比CORBADCE要交的学费要少地多。
       
    如果把现有的应用程序以Web Service部件形式发布,可以帮助其他的公司(人)构件功能强大的应用程序。举个例子,你要开发一个采购系统,可以自动地获得供应商的报价,而且可以实时追踪送货过程。如果供应商已经发布了报价和送货这两个Web Service,那么你就可以直接使用它们,而不必自己开发这些功能了。
    在未来,会出现更有趣的Web Service(现在做不到的),来帮助我们构建应用程序。
    SOAP
    SOAP
    Web Service的基本通信协议。因为SOAPDCOMCORBA在概念上有相同之处,所以很多人在问:“SOAP是怎样激活对象的?“SOAP在使用什么命名服务(Naming Service)?。或许在执行SOAP的过程当中会用到这些,但这些并不在SOAP规范要考虑的范畴之内。SOAP只是定义SOAP消息的XML格式(XML Format),如果你用一对SOAP标记(SOAP Elements)把XML文档括起来,那么这个就是一个SOAP消息,这不是很简单吗?
        SOAP
    规范还定义了怎样用XML来描述程序数据(Program Data,怎样执行RPCRemote Procedure Call)。这些可选的规范是为了构建RPC-style的应用程序(客户端SOAP消息包含函数名和在函数中用到的参数,而服务器端SOAP消息包含执行函数之后的结果)。大多数SOAP解决方案都支持RPC-style应用程序,因为很多程序员已对DCOMCORBA熟悉。SOAP还支持Document-style应用程序(SOAP消息只包含XML文本信息)。Document-style应用程序有很好的灵活性,所以很多用RPC很难构建的Web Service用这种方式构建。
       
    最后SOAP规范还定义了HTTP消息是怎样传输SOAP消息的。这并不代表SOAP只能用HTTP来作为传输协议,MSMQSMTPTCP/IP都可以做SOAP的传输协议。
       
    很多大公司根据SOAP规范,都开发出了自己的SOAP解决方案。这些解决方案都是相对于某种语言。比如说Microsoft SOAP toolkit2.0COM函数转换成SOAP消息,而Apache toolkitJAVA函数转换成SOAP消息。这样难免带来一些兼容性问题。
       
    现在SOAP的很多另人瞩目的特性已成为现实(SOAP已经运行于不同的硬件和软件平台),而且有70多个解决方案。之所以SOAP被人们所爱戴,是因为SOAP比其他同类技术(CORBADCE)简单易用。
       
    安全性对于应用程序来说是很重要的。那么SOAP的安全性如何呢?对于把HTTP作为传输协议的SOAP来说是没有问题的,因为HTTP协议已经有很好的安全构架。那么用其他传输协议会出现安全问题吗?不是的,你不必担心,因为已经有这方面的规范了。
    WSDL
    WSDL
    是一种XML文档,它定义SOAP消息和这些消息是怎样交换的。IDLInterface Description Language)是用于COMCORBA的,WSDL是用于SOAP的。WSDL是一种XML文档,所以我们可以阅读和编辑,但很多时候是用工具来创建、由程序来阅读。
      
    举个例子,你要使用供应商的Web Service构建应用程序。你可以向供应商索取使用Web Service的范例,然后按照范例来构建应用程序。这样可能出现意料不到的错误,比如,你在程序中使用的客户代码的数据类型是integer,而供应商使用的数据类型是string.WSDL详细定义客户端消息的格式,需要什么样的参数,这样可以避免不必要的错误。
    UDDI
    UDDI
    可以比喻成电话本,电话本里记录的是电话信息,而UDDI记录的是Web Service信息。你可以不把Web Service注册到UDDI。但如果要让全球的人知道你的Web Service,最好还是注册到UDDI
        UDDI
    目录说明文件也是一个XML文档,它包括三个部分。白页(White Paper说明提供Web Service的公司(人)信息,比如说名称、地址和联系方式等等。黄页(Yellow Paper说明UDDI目录的分类,比如说金融、服务和印刷等等。绿页(green Paper说明接口(Web Service 提供的)的详细信息。

        UDDI
    提供多种查询方式,来帮助你找到需要的Web Service。如果你查询与财务有关的Web Service,那么UDDI会提供详细的信息。

     

     

    一个小例子:

    代码
    using System;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    [WebService(Namespace
    = "http://127.0.0.1/")] //调用此web service的地址
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Service : System.Web.Services.WebService
    {
    public Service () {
    //如果使用设计的组件,请取消注释以下行
    //InitializeComponent();
    }
    //[WebMethod]
    //public string HelloWorld() {
    // return "Hello World";
    //}

    /// <summary>
    /// 判断一个数是不是质数
    /// </summary>
    /// <param name="number">要判断的数</param>
    /// <returns>返回结果</returns>
    [WebMethod(Description = "判断一个数是不是质数")] //声明此函数为web service方法,可以供外 界调用
    public string IsPrimeNumber(int number)
    {
    // 以下为算法,貌似不是最优的
    string value = "";
    if (number <= 0)
    {
    value
    = number.ToString() + "is not prime number";
    return value;
    }
    else
    {
    for (int i = 2; i < number / 2; i++)
    {
    if (number % i == 0)
    {
    value
    = number.ToString() + "is not prime number";
    return value;
    }
    }
    value
    = number.ToString() + "is prime number";
    return value;
    }

    }

    }
    代码
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="show.aspx.cs" Inherits="show" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>无标题页</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    请输入要判断的整数:
    <asp:TextBox ID="TextBox1" runat="server" Width="98px"></asp:TextBox><br />
    <asp:Button ID="Button1" runat="server" Text="确定 " OnClick="Button1_Click" /> <br />
    <asp:Label ID="Label1" runat="server"></asp:Label></div>
    </form>
    </body>
    </html>
    代码
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    public partial
    class show : System.Web.UI.Page
    {
    protected void Page_Load(
    object sender, EventArgs e)
    {
    }
    protected void Button1_Click(
    object sender, EventArgs e)
    {
    int number = Convert.ToInt32(TextBox1.Text); //获取文本框的值,并转化 为int型
    WebReference.Service se = new WebReference.Service(); //实例化要调用的 webservice对象
    Label1.Text = se.IsPrimeNumber(number); //调用webservice的函数,输出结 果
    }
    }

     

  • 相关阅读:
    登入界面的创建
    什么是IO流 以及文件输入输出
    java 的面向对象
    Mac 终端命令大全
    jQuery 的属性
    商城管理系统
    Java IO学习第二天部分详解
    Java IO学习第一天部分详解
    用JAVA描述一个车与修车厂两个事物
    JAVA基础(数组)数组排序和查找数组中是否还有某一个数
  • 原文地址:https://www.cnblogs.com/linzheng/p/1945863.html
Copyright © 2011-2022 走看看