Java与.NET的SOA互操作简易教程

在本文中,我们打算展示一下如何使用简单的技术加上以文档为中心的方式 带来有价值的业务服务,而无须使用专有的中间件,也不必引入Web服务栈的复 杂性。我们的灵感来自于REST的架构风格,以及把XML移到HTTP协议之上的能力 。

Web服务的方式

介绍我们这个方式的最好办法就是将它和一个简单的Web服务例子相对比。假 设有一个简单的天气服务,暴露出一个名为“WeatherQuery”的Web方法,这个 方法返回一个对象,包含温度和气压值。在通常情况下,人们拿现成代码,使用 工具来暴露方法,并生成WSDL。

如果你相信这个骗局,那么要做的无非就是找到一个WSDL在Java下的等价工 具,然后生成存根(Stub)代码。

不巧的是,事情并没有那么简单,WSDL是一个概括性的标准,而且实际上范 围到可以让人自由诠释。在我们的例子里,我们发现.NET强制使用基于文档的方 法,而Java工具则采用了相反的RPC方法。此外,我们还发现以下方面存在问题 :命名空间混淆,Schema的包含,以及工具将WSDL切分成若干独立部分。简而言 之,这项技术已经开始把注意力放在我们试图解决的实际问题之外了。

除了这些问题,我们还发现Web服务的工具之间存在不一致性。例如,对于自 动发布的WSDL文档,不同版本的Internet Information Server和Web Services Enhancements之间,还有它们的Java等价产品,彼此之间只能部分兼容。


有些东西今天七拼八凑起来可以工作,但到了明天,如果服务的后续版本需 要更复杂的Web方法时就得抛锚。这些东西真是令我们倍感厌烦。

更RESTful的风格

上面的方法里存在两个关键性假设:首先,仅暴露一个已有方法调用就足以 给我们带来一个有意义的服务;其次,使用工具能使通过Web服务访问到这个服 务的工作变成小菜一碟。

我们可以把请求看做一个包含请求的类型还有相应参数的文档,而不是考虑 请求的参数和返回的类型。把这个文档当成对试图建模的业务过程中契约的一部 分的描述。如果我们以相同的WeatherQuery方法为例,用常见的XML来描述它, 那么就可以得到类似下面的东西——

时间: 2024-10-31 19:58:28

Java与.NET的SOA互操作简易教程的相关文章

PS线形图标简易教程

  线形图标简易教程         注:更多精彩教程请关注三联photoshop教程栏目,三联PS群:339853166欢迎你的加入 分类: PS入门教程 ps图标制作教程

自制Windows镜像为Mac安装双系统简易教程

  苹果Mac的OS X系统并非每个人都用得惯,不少人在购买Mac电脑之后第一件事就是先装上Windows系统.今天,小编就给大家带来网友提供的自制Windows镜像给Mac安装双系统的简易教程,一起来看看吧. 通常,Mac用户想要安装Windows系统的话,第一时间想到的就是Boot Camp这款能让你安装并运行Windows的应用软件,但是使用这个软件最大的问题是,你需要用它把镜像文件(所谓镜像,是把一系列文件按照某种特定格式制作成单一文件,最基本的特点是可以被特定软件识别并且可以直接刻录到

移动开发之【微信小程序】的原理与权限问题以及相关的简易教程

这几天圈子里到处都在传播着这样一个东西,微信公众平台提供了一种新的开放能力,开发者可以快速开发一个小程序,取名曰:微信公众平台-小程序 据说取代移动开发安卓和苹果,那这个东东究竟是干吗用的?但很多人觉得是网页版应用. 有的人很鸡冻,但是--最后文章会提及具体的权限开放问题,所以,还是保持一颗冷静的比较好. 那我们先来看看组件和API开放了哪些服务: 视图容器:视图(View).滚动视图.Swiper 基础内容:图标.文本.进度条 表单组件:按钮.表单等等 操作反馈 导航 媒体组建:音频.图片.视

JAVA中如何运用SOA

问题描述 在JAVA中如何运用SOA,就是SOA具体的是什么?怎么在JAVA中与其它代码连接

Java实现数据库连接池简易教程_java

一.引言 池化技术在Java中应用的很广泛,简而论之,使用对象池存储某个实例数受限制的实例,开发者从对象池中获取实例,使用完之后再换回对象池,从而在一定程度上减少了系统频繁创建对象销毁对象的开销.Java线程池和数据库连接池就是典型的应用,但并非所有的对象都适合拿来池化,对于创建开销比较小的对象拿来池化反而会影响性能,因为维护对象池也需要一定的资源开销,对于创建开销较大,又频繁创建使用的对象,采用池化技术会极大提高性能. 业界有很多成熟的数据库连接池,比如C3P0,DBCP,Proxool以及阿

Activiti 简易教程二 version5.10升级version5.12.1

一搭建环境 1.1 JDK 6+ 1.2 Ant 1.8.1+ 1.3 Eclipse 3.7+ 1.4 Activiti -eclipse designer插件安装 1.4.1 先安装GEF插件 1.4.2 安装SVN插件 1.4.3安装Maven插件 1.4.4 最后安装Activiti -eclipse designer 二开始activiti 5.12.1的第一个demo 2.1 建立activiti-demo工程,选择Activiti Project 2.2 将activiti-dem

Java中的数组基础知识学习教程_java

数字 通常情况下,当我们处理数字时,使用原始数据类型,如 byte,int,long,double 等. 示例 int i = 5000; float gpa = 13.65; byte mask = 0xaf; 然而,在开发中,我们会遇到需要使用对象而不是原始数据类型的情况.为了实现这个, Java 为每个原始数据类型提供包装类. 所有的包装类 (Integer, Long, Byte, Double, Float, Short) 是抽象类 Number 的子类. 这种包装是由编译器处理,这个

Java开发者结合Node.js编程入门教程_java

首先, 我必须得承认,作为一个有着十多年开发经验的java开发者,我已经形成了解决绝大部分问题的固有套路,尽管它们很多时候显得笨重和繁琐. 比如说如果要读取一个文件,那应该就是初始化一个BufferedReader 实例并传入一个FileReader,这几乎是顺理成章的,我在很多自认为算得上"企业级"的项目中编写这样的代码并且很享受这个过程,可以说我就是一个对其他语言不屑一顾的java脑残粉.      如果你正在阅读这篇博文,你可能已经陷入了我多年前早就陷入的一个误区,作为一名合格的

Solr JAVA客户端SolrJ 4.9使用示例教程

简介         SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.SolrJ针对Solr提供了Rest 的HTTP接口进行了封装,SolrJ底层是通过使用httpClient中的方法来完成Solr的操作. SolrJ/Solr 跨版本兼容性     SolrJ通常向后保持兼容性,可以使用新版本的SolrJ访问较旧的Solr,反之亦然.建议使用同Solr server同版本的SolrJ,      详见http://wiki.apache.o