当前位置:编程学习 > 网站相关 >>

Web Services相关基础概念整理

今早西安很冷,冷的让人有点感觉像是世界易做图。

整理下WebService方面的知识吧,顺便给项目添加些天气预报、时间校正等功能,其实是实在不想写业务内容相关的代码了。


好,开始,从一道面试题开始:

[plain] 
问:WEB SERVICE 名词解释。JSWDL 开发包的介绍。JAXP 、JAXM 的解释。SOAP 、UDDI,WSDL 解释。  
 
答:Web ServiceWeb Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵 
守具体的技术规范,这些规范使得Web  Service能与其他兼容的组件进行互操作。   
JAXP(Java API for XML Parsing)  定义了在 Java 中使用 DOM, SAX, XSLT 的通用的接口。 
这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需 
要修改代码。   
JAXM(Java API fo r XML Messaging)  是为SOAP 通信提供访问方法和传输机制的API。   
WSDL 是一种 XML  格式,用于将网络服务描述为一组端点,这些端点对包含面向文档 
信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然 
后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为 
抽象端点(服务)。   
SOAP 即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信 
息的轻量级协议。   
UDDI  的目的是为电子商务建立标准;UDDI 是一套基于Web 的、分布式的、为 Web   
Service 提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供 
的Web  Service注册,以使别的企业能够发现的访问协议的实现标准。  

有些名词,需要再理解一下:
[plain] 
Web Services 平台元素:SOAP、WSDL 以及 UDDI。 
 
什么是 SOAP? 
基本的 Web services 平台是 XML + HTTP。 
 
•SOAP 指简易对象访问协议 
•SOAP 是一种通信协议 
•SOAP 用于应用程序之间的通信 
•SOAP 是一种用于发送消息的格式 
•SOAP 被设计用来通过因特网进行通信 
•SOAP 独立于平台 
•SOAP 独立于语言 
•SOAP 基于 XML 
•SOAP 很简单并可扩展 
•SOAP 允许您绕过防火墙 
•SOAP 将作为 W3C 标准来发展 
 
什么是 WSDL? 
WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。 
 
•WSDL 指网络服务描述语言 
•WSDL 使用 XML 编写 
•WSDL 是一种 XML 文档 
•WSDL 用于描述网络服务 
•WSDL 也可用于定位网络服务 
•WSDL 还不是 W3C 标准 
 
什么是UDDI? 
UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。 
 
•UDDI 指通用的描述、发现以及整合(Universal Description, Discovery and Integration)。 
•UDDI 是一种用于存储有关 web services 的信息的目录。 
•UDDI 是一种由 WSDL 描述的网络服务接口目录。 
•UDDI 经由 SOAP 进行通迅。 
•UDDI 被构建于 Microsoft .NET 平台之中。 

有点很空虚的感觉,实现一个例子,可能就懂什么是WebService,看源码:
[java] 
package dec; 
 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.UnsupportedEncodingException; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLConnection; 
import java.util.ArrayList; 
import java.util.List; 
 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
 
import org.w3c.dom.DOMException; 
import org.w3c.dom.Document; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import org.xml.sax.SAXException; 
 
/**
 * 
 * 
 * <p>
 * Title: 天气预报测试代码 /p>
 * 
 * <p>
 * Description: 示例 业务类
 * </p>
 * 
 * <p>
 * Copyright: Copyright (c) 2012
 * </p>
 * 
 * @author dml@2012-12-10
 * @version 1.0
 */ 
 
public class WeatherReport { 
    private static String SERVICES_HOST = "www.webxml.com.cn"; 
    private static String WEATHER_SERVICES_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/"; 
    private static String PROVINCE_CODE_URL = WEATHER_SERVICES_URL 
            + "getRegionProvince"; 
    private static String CITY_CODE_URL = WEATHER_SERVICES_URL 
            + "getSupportCityString?theRegionCode="; 
    private static String WEATHER_QUERY_URL = WEATHER_SERVICES_URL 
            + "getWeather?theUserID=&theCityCode="; 
 
    private WeatherReport() { 
    } 
 
    public static void main(String[] args) throws Exception { 
        int provinceCode = getProvinceCode("陕西");  
        int cityCode = getCityCode(provinceCode, "西安");  
        List<String> weatherList = getWeather(cityCode); 
        for (String weather : weatherList) { 
            System.out.println(weather); 
            System.out.println("========="); 
        } 
    } 
 
    public static int getProvinceCode(String provinceName) { 
        Document document; 
        DocumentBuilderFactory documentBF = DocumentBuilderFactory 
                .newInstance(); 
        documentBF.setNamespaceAware(true); 
        int provinceCode = 0; 
        try { 
            DocumentBuilder documentB = documentBF.newDocumentBuilder(); 
            InputStream inputStream = getSoapInputStream(PROVINCE_CODE_URL); // 具体webService相关 
            document = documentB.parse(inputStream); 
            NodeList nodeList = document.getElementsByTagName("string"); // 具体webService相关 
            int len = nodeList.getLength(); 
            for (int i = 0; i < len; i++) { 
                Node n = nodeList.item(i); 
      

补充:Web开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,