WebService基础概要

一、 Web Service的简介 
1、 什么是Web Service 
Web services是建立可互操作的分布式应用程序的新平台。 
Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。 
Web service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,Web service平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。 
基础的 Web Services 平台是 XML + HTTP。 
HTTP 协议是最常用的因特网协议。 
XML 提供了一种可用于不同的平台和编程语言之间的语言。 
Web services 平台是简单的可共同操作的消息收发框架。它仍然缺少许多诸如安全和路由等重要的特性。但是,一旦 SOAP 变得更加高级,这些事项就会得到解决。 
Web services 有望使应用程序更加容易通信。 
★ Web services 把 Web 应用程序提升到了另外一个层面 
通过使用 Web services,您的应用程序可向全世界发布功能或消息。 
Web services 使用 XML 来编解码数据,并使用 SOAP 借由开放的协议来传输数据。 
通过 Web services,您的会计部门的 Win 2k 服务器可与 IT 供应商的 UNIX 服务器进行连接。 
★ Web services 有两种类型的应用 
可重复使用的应用程序组件 
有一些功能是不同的应用程序常常会用到的。那么为什么要周而复始地开发它们呢? 
Web services 可以把应用程序组件作为服务来提供,比如汇率转换、天气预报或者甚至是语言翻译等等。 
比较理想的情况是,每种应用程序组件只有一个最优秀的版本,这样任何人都可以在其应用程序中使用它。 
连接现有的软件 
通过为不同的应用程序提供一种链接其数据的途径,Web services有助于解决协同工作的问题。 
通过使用 Web services,您可以在不同的应用程序与平台之间来交换数据。 
★ Web Services 拥有两种基本的元素。 
它们是:SOAP及WSDL
(1)什么是 SOAP? 
n SOAP 指简易对象访问协议 
n SOAP 是一种通信协议 
n SOAP 用于应用程序之间的通信 
n SOAP 是一种用于发送消息的格式 
n SOAP 被设计用来通过因特网进行通信 
n SOAP 独立于平台 
n SOAP 独立于语言 
n SOAP 基于 XML 
n SOAP 很简单并可扩展 
n SOAP 允许您绕过防火墙 
n SOAP 将作为 W3C 标准来发展 
(2)什么是 WSDL? 
WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。 
n WSDL 指网络服务描述语言 
n WSDL 使用 XML 编写 
n WSDL 是一种 XML 文档 
n WSDL 用于描述网络服务 
n WSDL 也可用于定位网络服务 
n WSDL 还不是 W3C 标准 
2、 什么是JWS 
         JWS(Java Web Service)是Java应用平台上专门用于开发Web服务系统及面向服务系统的产品,它的最新版本是2.0,Java EE 5和Java SE 6都对JWS 2.0提供支持。 
         在JWS 2.0,Java定义了一系列新的标准,JMS本身也包含了一些工具,如JAX-WS 2.0,JAXB 2.0,JAXP 1.4,SAAJ 1.3以及WS-Metadata等。 
         面向服务的系统往往由多个具有不同的子功能的独立组件构成,通过他们之间良好的相互协作,可以实现复杂的需求。面向服务系统的这个特点,要求独立组建之间有公共的接口,这些用于交换数据的公共接口有良好的定义。由于要实现组件之间的数据通信,这些具有良好定义的接口就必须要被别的组件识别并正确理解,才能实现协作。 
         在定义了公共的接口后,还存在具体的数据交换问题,即双方需要遵循一个共同的数据交换标准,这个数据交换标准称为协议。要在独立的组件之间进行通信,需要一系列标准来严格规定数据通信的格式和规则。 
         Web Service的出现解决了上述问题,利用WSDL定义统一的接口格式,用SOAP消息统一输入/输出参数的统一格式。SOAP消息可以由多种途径传递,比如,通过HTTP,SMTP及JMS协议传递。以HTTP为例,在服务使用端,WSDL的接口定义可以通过HTTP-GET请求获取,而SOAP应答消息及回复消息的传输可以通过HTTP-POST请求来实现。这样,基于WSDL和SOAP消息机制就可以满足面向服务应用系统开发的需求。 
         Web Service平台架构主要由三部分构成:序列化及反序列化子系统、调用子系统及发布子系统。这三个子系统并不受具体语言的限制,也不受平台和框架的限制,无论使用Java语言还是.NET语言,无论使用Axis平台还是JWS来开发web服务,都会涉及这三个最基本的功能模块。 
(1)序列化及反序列化 
             在JMS中将一个Java对象转化为一个XML元素的过程,称为序列化。反之将一个XML元素转化为相应的Java 对象的过程,称为反序列化。序列化和反序列化的过程要依赖于Java类和XML-Scheme之间的映射关系,JWS有独立 的序列化和反序列化子系统用来负责完成这些映射及转化。 
在web服务的客户端,序列化过程将参数转化为xml结点,进而封装成Soap请求消息,发送至服务器端的web服务端点。获得返回值时,反序列化过程启动,它将返回值从SOAP消息中指定的xml结点中取出,然后将它转化为客户端相对应的Java对象。 转化规则的定义在JWS中是通过JAXB的注释来完成的。新版的JAXB简化了绑定规则的描述,它允许直接将规则以注解的形式写入Java类。 
例如: 
@Entity 
@Name("hotel") 
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER) 
@XmlType(name="", propOrder = { 
    "id", 
    "img", 
    "name", 
    "address", 
    "city", 
    "state", 
    "zip", 
    "country", 
    "price", 
    "ipAddress" 
}) 
@XmlRootElement(name="Hotel") 
public class Hotel implements Serializable 

   private Long id; 
   private String img; 
   private String name; 
   private String address; 
   private String city; 
   private String state; 
   private String zip; 
   private String country; 
   private BigDecimal price; 
   private String ipAddress = "192.168.1.112"; 

@Id @GeneratedValue 
   public Long getId() 
   { 
      return id; 
   } 
   public void setId(Long id) 
   { 
      this.id = id; 
   } 
   
@Length(max = 50) 
@NotNull 
public String getImg() { 
return img; 


public void setImg(String img) { 
this.img = img; 


@Length(max=50) @NotNull 
   public String getName() 
   { 
      return name; 
   } 
   public void setName(String name) 
   { 
      this.name = name; 
   } 
   
   @Length(max=100) @NotNull 
   public String getAddress() 
   { 
      return address; 
   } 
   public void setAddress(String address) 
   { 
      this.address = address; 
   } 
   
   @Length(max=40) @NotNull 
   public String getCity() 
   { 
      return city; 
   } 
   public void setCity(String city) 
   { 
      this.city = city; 
   } 
   
   @Length(min=4, max=6) @NotNull 
   public String getZip() 
   { 
      return zip; 
   } 
   public void setZip(String zip) 
   { 
      this.zip = zip; 
   } 
   
   @Length(min=2, max=10) @NotNull 
   public String getState() 
   { 
      return state; 
   } 
   public void setState(String state) 
   { 
      this.state = state; 
   } 
   
   @Length(min=2, max=40) @NotNull 
   public String getCountry() 
   { 
      return country; 
   } 
   public void setCountry(String country) 
   { 
      this.country = country; 
   } 

   @Column(precision=6, scale=2) 
   public BigDecimal getPrice() 
   { 
      return price; 
   } 
   public void setPrice(BigDecimal price) 
   { 
      this.price = price; 
   } 
   @Transient 
   public String getIpAddress() { 
   return ipAddress; 
   } 
   public void setIpAddress(String ipAddress) { 
   this.ipAddress = ipAddress; 
   } 
   @Override 
   public String toString() 
   { 
      return "Hotel(" + name + "," + address + "," + city + "," + zip + ")"; 
   } 


(2)服务调用的过程 
          在面向服务的分布式系统中,一般将传统的客户服务器框架中的客户端Client称为服务的消费者,而将服务器端称为服务的提供者。 
          按照现在的web服务标准,一个服务被调用时,在服务的提供端大致的处理过程如下: 
①接受并预处理SOAP请求消息,例如效验,处理SOAP消息报文头。 
②从消息中获取该消息希望调用的接口和具体操作。 
③利用web服务提供的支持,找到具体的实现对象,并调用该对象的接口。这个对象可以由不同的语言实现。JWS支持从WSDL到Java的映射,可以通过WSDL找到与它相对应的Java服务端点实现类。 
④使用序列化工具的反序列化过程,将SOAP请求消息中的服务请求参数取出,传递给步骤3中的目标对象的相应函数。 
⑤目标Java对象执行相应的操作,将计算的结果以对象形式返回。 
⑥使用序列化工具的序列化过程,根据wsdl中的定义,将步骤5中的结果对象序列化成XML元素,并封装到SOAP回复消 
息中。 
⑦将步骤6中的SOAP回复消息发送回服务调用端。 
与之对应的,在服务使用端的调用过程如下: 
①首先创建服务端点接口对象SEI(Service Endpoint Interface),在Web服务客户端一般都会有相应的工厂类完成SEI对象的实例化。在JWS中,SEI对象一般是由Java代理来实现的。 
②客户端通过SEI调用其中封装的web服务接口。 
③利用序列化工具的序列化过程,根据WSDL的定义,将客户端的调用接口的参数转化成XML元素,再将该元素封装在SOAP请求消息里。 
④在同步模式下,在SOAP请求消息发出后,客户端会等待SOAP应答消息;异步模式下,客户端顺序执行后续代码,直到通过监听器接收到SOAP请求消息里。 
⑤解析从服务器端获得的SOAP应答消息,使用序列化工具中的反序列化过程,将SOAP应答消息中的数据转化成客户端对象,该对象的值就是被调用服务的返回值。 
(3)web服务的发布 
    以JMS为例,web服务发布系统的主要功能 
①以URL的形式公开被发布的WEB服务的WSDL文件,并绑定SOAP请求消息和Java目标类。 
②发布JAVA目标文件(例如Java Object文件,WAR文件,JAR文件及相关配置文件等)。 
③配置序列化和反序列化子系统。 
④配置web服务端点监听器和SOAP消息预处理进程。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
使用 JavaScript 编写的 Squareshooter 游戏及其源代码   项目:使用 JavaScript 编写的 Squareshooter 游戏(附源代码) 这款游戏是双人游戏。这是一款使用 JavaScript 编写的射击游戏,带有门户和强化道具。在这里,每个玩家都必须控制方形盒子(作为射手)。这款射击游戏的主要目标是射击对手玩家以求生存。当它射击对手时,它会获得一分。 游戏制作 该游戏仅使用 HTML 和 JavaScript 开发。该游戏的 PC 控制也很简单。 对于玩家 1: T:朝你上次动作的方向射击 A:向左移动 D:向右移动 W:向上移动 S:向下移动 对于玩家2: L:朝你上次移动的方向射击 左箭头:向左移动 右箭头:向右移动 向上箭头:向上移动 向下箭头:向下移动 游戏会一直进行,直到您成功射击对手或对手射击您为止。游戏得分显示在顶部。所有游戏功能均由 JavaScript 设置,而布局和其他次要功能则由 HTML 设置。 如何运行该项目? 要运行此项目,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox。要运行此游戏,首先,通过单击 index.html 文件在浏览器中打开项目。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值