Web Service之介绍

为什么要用webservice?究其原因肯定是其存在市场需求,人们需要这样的技术出现来解救他们于重重阻碍之中。其中很重要的用途是满足SOA的需要。

SOA(service-orientedarchitecture)面向服务的体系结构,它是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。需要时通过网络访问这些服务和任务。这个网络可以是本地网络、Internet,也可以分散于各地且采用不同的技术,通过对来自不同地方的服务进行组合,可让最终用户感觉似乎这些服务就安装在本地桌面上一样。可以对这些服务进行结合,以完成特定的业务任务,从而让您的业务快速适应不断变化的客观条件和需求。

既然涉及到不同服务的结合,必然需要不同服务之间的通信。但程序往往受限于平台和语言,使通信变的复杂。软件行业存在这样的事实:跨多个操作系统、编程语言和硬件平台集成软件应用程序不可能由任何一种专门的环境来解决。传统上,这个问题一直是一个紧耦合问题,调用远程网络的应用程序通过自己发出的函数调用和请求的参数与远程网络紧密地联系在一起。在 Web 服务出现之前,在大多数系统上,采用的是固定的接口,但对于不断变化的环境或需求,这样做缺乏灵活性或适用性。

         经过不断的尝试和总结,出现了web 服务概念。使用 Web 服务,应用程序可以与平台和编程语言无关的方式相互通信。Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作。它使用基于 XML 语言的协议来描述要执行的操作或者要与另一个 Web 服务交换的数据。在面向服务的体系结构(Service-Oriented Architecture,SOA)中,一组以这种方式交互的Web 服务定义了特定的 Web 服务应用程序。

         Web 服务所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web 服务可以在任何支持这些标准的环境(Windows,Linux)中使用。

           实际上,Web Service 最基本的组成部分为服务的提供者(Service Provider)和服务的请求者(Service Requester)。这看起来很像 C/S 架构的软件,与之不同的是,WebService 两端的应用是通过基于标准的 XML 格式的协议进行通信的,这种最常用的协议就是 SOAP(Simple Object Access Protocol)。当然,webservices 不简单地只是按这种方式进行通信。按照 Web Service 的相关标准描述,服务的提供者应该首先通过 WSDL(Web Service Definition Language)和 UDDI (UniversalDescription, Discovery, and Integration)发布它所提供的服务到一个统注册这些服务信息的存储库中去。这样,服务的请求者就也可以通过 WSDL 和 UDDI 发现到服务提供者提供的服务,并可以通过应用的调用方法来使用这个服务了。

            对于web service,如果人工去创建和解析基于 XML 格式的 SOAP 消息一个非常复杂的过程。还好不同的语言对web service都进行了实现,让我们更加方便地使用web service。

             对于java,最先是应运而生的规范是 JAX-RPC 1.0这个标准化成就是建立在WSDL 1.1 和 SOAP 1.1 的基础上的。它最重要的成就之一就是它定义了一个标准,该标准用于将 WSDL 文档(它表示了服务描述)映射为其 Java 表示(服务端点、存根、绑定以及 Java 类型),反之亦然。

            主要解决了以下问题:

           将 XML 类型映射为 Java 类型

          将抽象的 WSDL 定义(端口类型、操作和消息)映射为 Java 接口和 Java 类。

          将具体的 WSDL 定义(端口、绑定和服务)映射为 Java 类。

         大约1年之后, 编写此规范的 JavaCommunity Process (JCP) 人员望构建一个更好的版本:JAX-RPC 2.0。其主要目标是与行业方向保持一致,但行业中不仅只使用 RPC Web 服务,还使用面向消息的 Web 服务。因此从名称中去掉了“RPC”,取而代之的是“WS”。因此 JAX-RPC 1.1 的后续版本是 JAX-WS 2.0——Java API for XML-based Web services。

         JAX-WS在jdk1.6之后就有了自带的实现,不过实现很简单。基本上就只能够传递SOAP协议格式的消息。如果我们需要其他的服务,比如我想让JAX-WS与Spring集成。那么这种解决方案是采用框架,支持JAX-WS的框架有AXIS2和CXF以及XFire 。

        注:

        1. SOAP协议(SimpleObject Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。

        2. WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。

        3.JAX-WS 2.0与JAX-RPC 1.0的区别:

         相同部分:

           JAX-WS 仍然支持 SOAP 1.1over HTTP 1.1,因此互操作性将不会受到影响,仍然可以在网上传递相同的消息。

           JAX-WS 仍然支持 WSDL 1.1,因此您所学到的有关该规范的知识仍然有用。

        区别部分:

        SOAP 1.2

        JAX-RPC 和 JAX-WS 都支持 SOAP 1.1。JAX-WS 还支持 SOAP 1.2。

         XML/HTTP

         WSDL 1.1 规范在 HTTP 绑定中定义,这意味着利用此规范可以在不使用 SOAP 的情况下通过 HTTP 发送 XML 消息。JAX-RPC 忽略了HTTP 绑定。而 JAX-WS 添加了对其的支持。

WS-I Basic Profile

JAX-RPC 支持 WS-I BasicProfile (BP) V1.0。JAX-WS 支持 BP 1.1。(WS-I 即 Web 服务互操作性组织。)

新 Java 功能

JAX-RPC 映射到 Java 1.4。JAX-WS 映射到 Java 5.0。JAX-WS 依赖于 Java 5.0 中的很多新功能。

Java EE 5 是 J2EE 1.4 的后续版本,添加了对JAX-WS 的支持,但仍然支持 JAX-RPC,这可能会对 Web 服务新手造成混淆。

数据映射模型

JAX-RPC 具有自己的映射模型,此模型大约涵盖了所有模式类型中的 90%。它没有涵盖的部分映射到了 javax.xml.soap.SOAPElement。

JAX-WS 的数据映射模型是 JAXB。JAXB 可保证所有 XML 模式的映射。

接口映射模型

JAX-WS 的基本接口映射模型与JAX-RPC 的区别并不大,不过二者之间存在以下差异:

JAX-WS 的模型使用新的 Java5.0 功能。

JAX-WS 的模型引入了异步功能。

动态编程模型

JAX-WS 的动态客户机模型与JAX-RPC 的对应模型差别很大。很多更改都是为了认可行业需求:

引入了面向消息的功能。

引入了动态异步功能。

JAX-WS 还添加了动态服务器模型,而JAX-RPC 则没有此模型。

消息传输优化机制(Message Transmission Optimization Mechanism,MTOM)

JAX-WS 通过 JAXB 添加了对新附件规范 MTOM的支持。Microsoft 从来没有给 SOAP 添加附件规范;但似乎大家都支持 MTOM,因此应该能够实现附件互操作性。

处理程序模型

从 JAX-RPC 到 JAX-WS 的过程中,处理程序模型发生了很大的变化。

JAX-RPC 处理程序依赖于 SAAJ1.2。JAX-WS 处理程序依赖于新的 SAAJ 1.3 规范。

 

         参考:

1.      SOA and web services 新手入门http://www.ibm.com/developerworks/cn/webservices/newto/websvc.html

2.      Web 服务提示与技巧:JAX-RPC 与 JAX-WS 的比较http://www.ibm.com/developerworks/cn/webservices/ws-tip-jaxwsrpc.html


深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值