webservice学习历程(1)

本周任务:了解服务相关基本概念,WebService服务跑通并发布在网页上

1.SOA基本概念

SOA是一种面向服务的体系架构。一般的软件体系结构有C/S,基于web平台的B/S技术(J2EE+.NET——>SOA架构)

三层架构(3-tierarchitecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

SCA:服务组件架构,描述了利用SOA构建应用程序和系统的模型

SDO:服务数据对象,简化和统一了处理数据的方式

BPM:业务流程管理,企业各种业务环节整合的全面管理模式

SOA的核心体现在企业应用或者业务功能上的"重用"和"互操作",而不再把IT与业务对立起来,这可以被视为在IT驱动业务的方向上迈出的重要一步。

     SOAP(简单对象访问协议):

Ø 简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息;

Ø SOAP=RPC+HTTP+XML。

2.SOA演变过程

三层架构向SOA体系转变

EAI->P2P->SOA

EAI用于解决信息孤岛问题

3.服务的概念

      服务的概念:通过规范化的描述来表征,对外提供访问地址,并可被重复使用的业务功能单元。

     服务是SOA的核心:

Ø 一个“服务”定义了一个与业务功能或业务数据相关的接口,以及约束这个接口的契约,如服务质量要求、业务规则、安全性要求、法律法规的遵循、关键业绩指标(Key Performance Indicator,KPI)等;

 

Ø 业务被划分为粗粒度的业务服务和业务流程;业务服务相对独立、自包含、可重用,由一个或者多个分布的系统所实现,而业务流程由服务组装而来;

 

Ø 具体的服务实现不依赖特定实现语言与工具。

Ø 技术和位置的透明性,使得服务的请求者和提供者之间高度解耦。

 

 

 

从服务的角度来看SOA——本质上是服务的集合。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完善、独立于其他服务所处环境和状态的函数。

4.不同角度看SOA

1) SOA要素

 

     从程序员的角度,SOA是一种全新的开发技术,新的组件模型,比如说Web Service;

     从架构设计师的角度,SOA就是一种新的设计模式,方法学;

     从业务分析人员的角度,SOA就是基于标准的业务应用服务。从概念的角度,SOA是一种构造分布式系统的方法,它将业务应用功能以服务的形式提供给最终用户应用或其他服务。

 

2)SOA体系结构模式:

1.    简单的webservice调用

2.    企业服务总线ESB异构系统集成为业务过程

3)SOA实现方式

3.    适配器模式——二次封装遗留系统的功能,开放接口

4.    发布-访问模式(WSDL+UDDI+SOAP)

5.    以上两种缺点是耦合度过大,解决方法,将绑定关系抽取出来

6.    服务代理(复杂,修改麻烦)

7.    服务集成器(降低耦合度,集成大力度的服务,集成器依靠配置信息分别调用小粒度的服务,通过修改配置做到变更)不足:服务之间独立存在,关系复杂。

8.    ESB服务总线——ESB是一种在松散耦合的服务和应用之间标准的集成方式。ESB的作用在于实现服务间智能化集成与管理的中介

5.webservice服务发布实践

 

 

 

 

web service 的基本协议有SOAP,WSDL,UDDI

 

5.1实现原理

 

1.   UDDI相当于webservice的黄页

 

2.   JAX(Java Api for Xml)-WS规范是一组XML web services的JAVA API。JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。

 

3.   在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。

 

4.   在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。当然JAX-WS 也提供了一组针对底层消息进行操作的API调用,你可以通过Dispatch 直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。通过web service所提供的互操作环境,我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作。JAX-WS2.0 (JSR 224)是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing层,使用的是the Streaming API for XML(StAX, JSR 173),同时它还完全支持schema规范。

 

5.2 Webservice服务发布流程

环境:win10+myeclipse10+JDK1.8

        使用jdk自带的Endpoint类来发服务,创建类hello.java

 

运行代码,发布服务

 

l  使用wsimport命令来生成客户端代码:

l  打开Cmd,输入默认路径

C:\Users\11966\AppData\Local\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_64_1.6.0.013\bin>

l  解析wsdl文件

wsimport -s C:\Users\11966\Desktop-p ws -keep http://localhost:9090/hello/hello?wsdl

其中 –s解析包存放路径  -keep 访问wsdl文件

l  编写测试代码

l  新建一个客户端工程java_jdk,将得到的代码拷入工程后,新建一个Test_Client类

 

 

 

通过运行Test_Client文件可得到控制台反馈如下:

 

 

Ø  还可以通过点击myeclipse的这个图标到浏览器中进行调用这个服务,在右上角选择wsdl的图标,然后点击坐上角的WSDL Main,输入wsdl的地址,点击Go

l  点击方法sayHello

 

l  点击Add,添加参数

 

l  点击Go得到结果,测试成功

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值