转载自: http://www.blogjava.net/nikita/archive/2008/10/05/232573.html
简单的说, 就是客户端根据WSDL 生成 SOAP 的请求消息, 通过 HTTP 传输方式(也可以是其它传输方式, 如 FTP 或STMP 等,目前 HTTP 传输方式已经成为 J2EE Web Service 的标准)传给对方, 服务方实现服务请求, 将结果以 SOAP 的消息格式返回给客户端。
如果人工去创建和解析基于 XML 格式的 SOAP 消息还是一个非常复杂的过程, 这样 JAX-RPC 应时而生, 他实现了J2EE Web Sercive 的远程分布式调用。
JAX - RPC :Java APIs for XML-Based Remote Procedure Call. 它本质上是另一种RMI。 只是 JAX-RPC 以 SOAP 作为通信协议, RMI 以 RMI- IIOP或者 RMI - JRMP为通信协议。
Web Service 的基本结构图.jpg
客户端需要根据 WSDL 创建客户端 Java 程序, 其中包括 Stub 程序。 客户端调用相应的Stub 程序, 进一步调用JAX- RPC 运行环境创建 SOAP 请求消息, 通过 HTTP 传输给服务器端。
Web 服务器端的JAX-RPC 运行环境在收到 SOAP 请求消息后, 对 SOAP 的 XML 内容进行解析, 再通过 Tie 来调用服务接口实现类。(无状态会话 Bean 或者 Java 对象) ,得到结果后, 创建SOAP 响应消息返回给客户端。
客户端基于JAX- RPC 实现远程分布式调用的基本原理
(1)通过 JAX-RPC 创建 SOAP 请求消息
(2)通过 JAX- RPC 将 SOAP 请求消息送到服务地址
(3)通过 JAX- RPC 解析 SOAP 请求消息
服务器端基于 JAX-RPC 实现远程分布式调用的基本原理
服务器端的 JAX-RPC 的运行环境在收到了基于 XML 格式的SOAP 请求消息后, 会调用服务器端的 JAX-RPC Tie 对象的相应服务接口方法checkUserLogin, 将上面的基于 XML 格式的 SOAP 请求消息中的参数值映射为 Java 对象类传给 Tie 对象的接口方法, 将 loginName 和 password 都转化为 Java 的String 类型。 这是前述的 WSDL 中所定义的类型。
利用设计模式
设计模式在设计Webservice的时候显然可以起到相当大的作用。设计模式的主要目的就是为解决某些在类似环境下的相像问题提供已有的较为成熟的设计方案。在这里,只简单的提及一些很常用的模式,让我们了解到模式在Webservice中可以起到的作用。
Adapter :为内部系统提供一个不同的接口
Façade: 封装复杂的内部实现,提供一系列简单的接口
Proxy: 作为其他对象的代理,代替它提供服务
Adapter模式用于将一个组件的接口转化成客户所需要的样子,这里的客户就是Webservice。一个常见的情况就是将原有的老的系统包装成一个Webservice。比如现在使用的是J2EE的平台,而原来有一个C++的系统实现了某些功能,现在需要将它发布成Webservice,那么就需要利用JNI技术做一个Adapter,为原来的C++组件提供一个Java的接口,然后再转化为Webservice。
Façade模式用于构建粗粒度的服务,它包装了细粒度的服务,从而为复杂的系统提供了一个简单的接口。在J2EE中,Session Bean就象是一个Façade,而Entity Bean则是细粒度的服务。在Webservice中也一样,使用Façade模式可以将已有的组件的功能发挥殆尽。
Proxy 模式用于充当其他对象的代理,类似于中间人的作用,将处理工作从一个对象传递到另一个对象。在Webservice中,它主要用于隐藏Soap消息构造的过程。也可以用于模拟对象(Mock Object)的创建。
以上仅仅是一些可以用于Webservice开发的模式,如果你熟练的将这些模式应用于Webservice开发,你将会发现开发Webservice应用,将好像做一种特殊的面向对象设计。
l 安全
Webservice为作为方便的服务被用广大领域使用的同时,也成为了黑客们的美食。在这里,本文将就目前对Webservice安全所能做的改进做简单介绍。
在Webservice中的安全主要分为以下三个方面。
传输 SSL/HTTPS 对连接加密,而不是传输数据
消息 数据加密(XML Encryption) 数字签名(XML-DSIG)
底层架构 利用应用服务安全机制
传输时的安全是最容易被加入到你的Webservice应用中的,利用现有的SSL 和HTTPS协议,就可以很容易的获得连接过程中的安全。
然而这种安全实现方法有两个弱点。一是它只能保证数据传输的安全,而不是数据本身的安全,数据一旦到达某地,那么就可以被任何人所查看。而在Webservice中,一份数据可能到达多个地方,而这份数据却不该被所有的接受者所查看。二是它提供的是要么全有要么全无的保护,你不能选择哪部分数据要被保护,而这种可选择性也是在Webservice中所常要用到的。
第二层的保护是对于消息本身的保护。你可以使用已有的XML安全扩展标准,实现数字签名的功能,从而保证你的消息是来自特定方并没有被修改过。XML文件的加密技术从更大程度上加强了Webservice的安全,它能够定制数据传输到后,能否被接受者所查看,进一步完善了传输后的安全,业界也在不断的制定Webservice的安全标准,比如SAML 和 WS-Security。
最后一层保护就是依靠底层架构的安全,这更多的来自于操作系统和某些中间件的保护。比如在J2EE中,主持Webservice的应用服务器。目前很多的J2EE应用服务器都支持Java Authentication and Authorization Service (JAAS),这是最近被加入到J2SE 1.4当中的。利用主持Webservice的服务器,实现一些安全机制这是很自然的做法。另一种利用底层架构的安全方法就是,做一个独立的负责安全的服务器,Webservice的使用者和创建者都需要与之取得安全信任。
分享到:
相关推荐
分布式服务框架原理与实践是IT领域中一个至关重要的主题,特别是在大数据、云计算和微服务架构盛行的今天。这本书由李林锋撰写,旨在为开发者提供深入理解分布式系统开发的理论基础和实践经验。以下是对该书内容的...
Web Service原理及应用 Web Service是一种基于互联网的、平台无关的、标准化的接口技术,它允许不同的...理解和掌握Web Service的原理和应用,对于IT从业者来说至关重要,尤其是在构建分布式、跨平台的应用场景下。
C# Web Service是一种基于.NET Framework的开发技术,用于创建分布式应用程序,使得不同系统间能够通过互联网进行通信。...通过理解并掌握Web Service的原理和实现,开发者能够创建出高效、安全的分布式系统。
Web Service 使用 XML 来描述数据,SOAP 来实现远程过程调用,WSDL 来描述服务接口。 1.1 Web Service 原理及技术支持 1.1.1 XML 和 XSD XML(Extensible Markup Language)是一种标记语言,用来描述数据的结构和...
ASP.NET Web Service是一种基于.NET Framework的简单方法,用于构建可跨平台、跨语言通信的Web...通过学习这个例子,初学者可以理解Web Service的基本原理,掌握创建和调用服务的方法,为进阶的Web开发打下坚实的基础。
2. **实现接口**:创建一个类实现定义的接口,实现服务的具体逻辑。 ```java @WebService(endpointInterface = "com.example.MyWebService") public class MyWebServiceImpl implements MyWebService { @...
【标题】:“Dubbo + ZooKeeper 分布式服务” 【内容】: 在现代软件开发中,分布式服务架构已经成为大型系统设计的重要组成部分。Dubbo 和 ZooKeeper 是两种在分布式环境中广泛使用的开源工具,它们分别承担了...
阿里分布式数据库服务(Alibaba Distributed Relational Database Service,简称DRDS)是阿里巴巴集团推出的一种基于MySQL协议的分布式关系型数据库解决方案。它允许用户在不改变原有应用程序结构的前提下,实现...
理解Web Service的基本原理,熟悉PB11的API和工具,以及遵循良好的编程和设计原则,将有助于提升开发效率和应用质量。 总结,PB11提供了强大的Web Service开发功能,让开发者能够轻松地构建和整合分布式系统。通过...
Web Service,是一种基于网络的、松散耦合的服务架构模式,它允许不同的应用程序之间交换数据和服务,无需知道对方的内部实现细节。通过XML-RPC(XML Remote Procedure Call)或SOAP作为通信手段,Web Service使得...
总结来说,本文重点讨论了Java Servlet技术在分布式异构数据库Web访问中的应用,介绍了Servlet的体系架构和三层Client/Servlet结构的工作原理,以及它如何在处理分布式数据库访问时发挥作用。这项技术的运用有助于...
SOA架构的核心是通过Web服务(WebService)向外界提供API接口,从而实现跨平台、跨语言的应用程序交互。SOA的灵活性和可扩展性使其成为设计异构数据同步模型的理想选择。 本文所提出的WLDSS模型(Web-level Data ...
SOAP则是一种协议,它利用XML来封装请求和响应消息,从而实现服务调用。 #### 二、分布式互操作GIS的关键特征 **2.1 分布式特性** 分布式GIS利用Web Service技术,能够跨越不同的物理位置和组织边界,将多个GIS...
- **企业级集成**:在企业内部或企业之间实现服务的集成。 - **移动互联网中的应用**:如运营商的SP(Service Provider)接口,这些接口通常基于Web Service技术实现,用于提供短信、彩信等增值服务。 #### 三、Web...
在本“Web Service开发指南”中,我们将深入探讨Web服务的概念、工作原理、开发过程以及相关的技术和工具。 1. Web Service简介 Web Service是一种通过统一的接口标准(如SOAP,简单对象访问协议)来交换结构化信息...
Web服务是一种基于网络的软件应用程序接口,它允许不同的系统之间进行数据...随着技术的发展,Web服务现在更多地采用RESTful API的方式,但基本原理和过程依然相似。学习和掌握这些技能将使你在IT行业中更具竞争力。
首先,了解Web Service的基本原理是必要的。Web Service通常使用SOAP(Simple Object Access Protocol)协议传输数据,通过HTTP协议进行通信,这使得跨平台交互成为可能。WSDL(Web Services Description Language)...
2. 实现服务:创建实现接口的Java类,这里会包含实际的服务逻辑。 3. 注解服务:使用XFire提供的注解(如@WebService)标记接口和实现类,以指定服务的元数据。 4. 创建服务端点:使用XFire的Server类创建服务端点,...
了解和掌握Web Service的基本工作原理、优势以及开发步骤,对于构建分布式、可互操作的应用程序至关重要。在实际项目中,Web Service可以极大地提高系统的灵活性和可扩展性,降低集成成本,是现代企业级应用开发的...
- 通过本书的学习,开发者可以深入了解SOAP Web Service的工作原理,掌握其实现方法,为构建高效、可靠的分布式应用打下坚实的基础。 - 随着技术的发展,虽然Web Service的形式可能发生变化,但其核心思想和设计原则...