文档章节

新手初识webservice-理论篇

路飞
 路飞
发布于 2012/04/08 22:59
字数 1745
阅读 2446
收藏 37

工作中接触到了一些webservice应用,进而想整理出一些东西,给组里如我一样的毛头小伙子分享下,后来觉得在OSC一直默默潜水了快两年了,好像没留下过什么有价值的东西,就顺路记在这里吧,望老鸟和高手多多批评指正,新手多多交流~

暂时写了两篇草稿,第一篇是理论篇,介绍了我所认识的webservice,主要摘录了Andrew830314#163.com的《Java的webservice支持》的部分内容,然后加上了我自己对webservice的一些理解,不求多详细复杂,只希望有JavaWeb基础但没有 webservice基础的开发人员,对 webservice有一个初步的认识,知道它是什么,有什么,做什么的;第二篇是实践篇,介绍了我用cxf做的一个demo,主要参考了http://cxf.apache.org/,力求例子简单直观,让开发人员知道怎样使用最基本的webservice,为掌握 webservice开发预热。

 

正文如下

SOA(Service-Oriented Architecture)面向服务架构,将应用程序的不同功能单元通过中立的契约(独立于硬件平台、操作系统、编程语言和应用)联系起来。 
@路飞    例如一个iphone上的在线销售系统:服务端基于Java,部署在Linux服务器上,提供了某功能X,例如根据输入的商品ID和数量,从商品库中检索单价,然后计算总额,最后输出总额;客户端基于Object-C,是安装在iphone上的app,提供了某功能Y,例如根据用户选择的商品及其数量,告诉客户所选商品的总额;这里,Y功能需要通过中立的契约(穿越了Linux和IOS,穿越了Java和Object-C)来与X功能通信,从而使整个应用程序完整。
@路飞    PS 关于iphone和Object-C完全是我杜撰的,我对iphone和Object-C一无所知,这里只是为了说明“中立的契约”,以及赶时髦。。。要是这个例子有问题,可以换成Windows和.NET。。。。。。
 
目前来说,webservice是SOA的一种较好的实现方式,webservice采用HTTP作为传输协议,SOAP(Simple Object Access Protocol)作为传输消息的格式。但webservice并不是完全符合SOA的概念,因为SOAP协议是webservice的特有协议,并未符合SOA的传输协议透明化的要求。
 
@路飞    webservice这个东西基本实现了上面“中立的契约”的功能:“SOAP作为传输消息的格式”,SOAP格式其实是使用了xml这种跨平台的文件格式,即webservice传输的消息被解析成xml格式,然后“webservice采用HTTP作为传输协议”,http协议当然各个平台都支持了,于是从传输通道到传输的内容都实现了跨平台。具体细节如SOAP传输消息的格式暂时还请不要太深究,我的经验是没亲身试用之前越想得多越不利于深入学习。。。
@路飞    “并未符合SOA的传输协议透明化的要求”这一点,我理解的也不很清楚,下面是一点不成熟的看法:SOAP是webservice的消息传输格式,X功能和Y功能想要使用webservice进行通信,就必须针对SOAP格式进行额外的开发工作,而不能直接使用对所有平台都透明的消息传输格式格式(如http,即不仅使用http做传输通道,还直接使用它的消息格式携带信息,而不是先转成SOAP格式再让http传输(最新研究 JAX-RS发现这个webservice好像差不多实现了,需要进一步确认)(果然是知道的越多,才发现自己无知的越多,JAX-RS刚看到不久,结果引出了这个不好处理的问题,对新手的建议是这部分了解下就可以了,我们的目的是掌握webservice的最小功能,其他的功能等有基础了再进一步学习))。可是既然想通过“中立的契约”跨平台交互,这种本地适应化工作不是必须的么,“传输协议透明化”是为了追求本地适应化的最小工作量么? 
@路飞    我工作中接触到的webservice的中立性主要体现在了跨应用上,即主要用于不同的Java应用进行交互,如服务端和客户端是两个不同的应用,然后客户端通过webservice调用服务端的某核心功能,跨硬件平台、编程语言这种复杂应用还没接触到~

@路飞    总结一下,我所理解的最小功能的webservice,就是A和B两个java应用,其中A为服务端server,对外提供了某项功能的webservice接口,B为客户端Client,需要调用这个webservice接口实现某业务。这其中涉及到的东西包括A如何把自己的普通方法对外暴露成webservice接口,以及B如何使用别的应用(A)的接口为自己的业务工作。这些东西在第二篇实践篇中将会有一个详细的demo级别的demo为大家做介绍,该demo的最低技能要求为:1、知道什么是javaweb的MVC分层,2、知道Spring配置IOC是什么。实践篇还在修改中,希望尽快发出来,敬请期待~

下面是一些更抽象(至少对于我是。。。)的东西,新手建议了解下就可以了

PS    现在还只接触了JAX-WS,在实践篇介绍的demo也是基于JAX-WS的,JAX-RS在学习中,可能在实践篇2.0会介绍
 
Java中共有三种WebService规范,分别是
    JAX-WS(Java API For XML-WebService)
    JAXM&SAAJ(Java API For XML Message)
    JAX-RS,是Java针对REST(Representation State Transfer)制定的服务规范
JAX-WS和JAXM&SAAJ都是基于SOAP的web服务,相比之下JAXM&SAAJ暴露了SOAP更多的底层细节,如果想控制SOAP消息的更多细节,可以使用;而JAX-WS更加抽象,隐藏了更多的细节,更加面向对象,实现时基本不需要关系SOAP的任何细节。
JAX-RS    REST是一种软件架构模式,不是像SOAP那样本身承载着一种消息协议。REST中重要的两个概念就是资源定位和资源操作,而HTTP协议恰好完整的提供了这两个要点,HTTP协议中的URI可以完成资源定位,GET、POST、OPTION等方法可以完成资源操作,因此REST完全依赖HTTP协议就可以完成Web服务,而不像SOAP协议那样只利用HTTP的传输特性,定位与操作由SOAP协议自身完成。



看的累了吧,休息下,来个小福利
http://www.o2gzs.com/ooxx

© 著作权归作者所有

路飞

路飞

粉丝 15
博文 4
码字总数 8080
作品 0
浦东
程序员
私信 提问
加载中

评论(16)

错觉
错觉
写的不错
被风遗忘
被风遗忘
我也是直接就看下面了.
路飞
路飞 博主

引用来自“happycai”的评论

楼主实战篇速度的啊,强烈期待小福利啊。噢买噶。

?已经发了的啊。。。
http://my.oschina.net/achi/blog/53227
happycai
happycai
楼主实战篇速度的啊,强烈期待小福利啊。噢买噶。
路飞
路飞 博主

引用来自“王振威”的评论

实践篇速度的啊

不好意思哈,这两天病倒了。。。而且项目忙,刚下班到家现在。。。争取今晚熬夜发出来吧~
王振威
王振威
实践篇速度的啊
四顾剑
四顾剑
来看姑娘的
路飞
路飞 博主

引用来自“郑少文(jacob)”的评论

楼主可以讲讲关于webservice安全性方面的东西吗?急需啊?

不好意思啊这个我也不懂,工作中我做的是client的东西,而且server和client是同一个内网的,安全性方面我还没接触过
小文大哥哥
小文大哥哥
楼主可以讲讲关于webservice安全性方面的东西吗?急需啊?
d
desertsurge
太瘦了
新手初识webservice-实践篇

理论背景:《新手初识webservice-理论篇》http://my.oschina.net/achi/blog/52766 编程语言:Java 必要技能:JavaWeb,MVC,Spring IOC 情景假设:你刚用Java做了个网上店铺,用了servlet,MVC...

路飞
2012/04/12
8.9K
5
转Elasticsearch顶尖高手系列课程

Elasticsearch,是目前行业中非常热门的一个技术。Elasticsearch是一种分布式的海量数据搜索与分析的技术,可以用于电商网站、门户网站、企业IT系统等各种场景下的搜索引擎,也可以用于对海量...

小花卷juan
2017/06/24
126
0
史上最简单的 GitHub 教程

温馨提示:本系列博文已经同步到 GitHub,如有需要的话,欢迎大家到「github-tutorial」进行和操作! 1 简介   GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的...

qq_35246620
2017/03/27
0
0
HTML 5视频教程系列之JavaScript学习篇-何韬-专题视频课程

HTML 5视频教程系列之JavaScript学习篇—52816人已学习 课程介绍 HTML 5视频教程系列中JavaScript开发的基础知识讲解及学习。 课程收益 通过自学视频掌握HTML 5开发手机应用和手机游戏的技能...

pkutao
2015/02/10
0
0
ECharts简单Demo之WEBFORM版本

前言 本来今天上午已经快写完了,一个ctrl+w关闭了,草稿箱不知道怎么回事,没有保存OO “…下午边看LPL比赛又重写一次。 这篇博文应该是在2016年就完成的,因为种种原因耽误了。本来想实现一...

andrewniu
2017/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
1K
20
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
16
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部