有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用WSDL生成REST客户端会是错误的方向吗?

我打算为内联网创建一个相当简单的web服务。该服务最终将成为数据库的接口,使我能够跟踪公司内部的各种工具正在做什么。我想我想要一个web服务,这样组织中的各种工具(以及不同的语言)就可以轻松地更新数据库,而不需要知道模式

我已经阅读了许多搜索https://stackoverflow.com/search?q=soap+rest时出现的REST vs SOAP相关问题,但我不确定是否找到了答案

我的困境似乎是,我想要REST的简单性,同时还要具备WSDL的代码生成能力,这似乎意味着SOAP。对我来说,各种内部工具(JAVA、Perl、Python、PHP、C++)能够与该服务进行对话是非常重要的,而且当WSDL路由为我手动重写/维护每种语言的接口层时,这似乎很愚蠢。据我所知,如果WS需要更改,您将更新WSDL,重新生成客户机存根,并对使用存根的代码进行任何必要的更改(无论如何都需要这样做)

例如,假设我有一个用JAVA编写的工具,它利用RESTful web服务。我想象这个工具将有特定的代码来处理特定的URL,启动请求,处理响应,如果我愿意的话,将其转换成一些数据结构,等等。现在让我们假设我还有一个Perl工具来做同样的事情。现在我需要Perl代码来做同样的事情,让特定URL上的请求得到响应,在他们的情况下做些事情,等等。因此,在C++和Python和C.*中,代码不能共享,最终我会用一个包装类/方法来隐藏大量的丑陋。我更愿意在一个类上调用一个函数,该类返回封装在对象中的数据,而不必担心URL、参数、响应等。当然,在任何特定的地方可能都没有太多代码,但随着时间的推移,它开始累积。在每个工具上乘以这个数,现在当我对服务进行更改时,我必须更新每个CRUD操作中的URL以及所有相关内容。我想我可以想象,有了WSDL,这就是为您完成的方面。您的代码只是与存根进行交互。存根干什么,谁在乎呢?URL、参数、响应——如果有任何更改,只需从WSDL重新生成存根即可。如果这个过程导致代码中断,那就这样吧,但至少我不必更新所有处理请求和响应细节的代码。这真的不是问题吗?也许我需要做的只是创建一个服务和几个客户,看看我真正面对的是什么

虽然我是一个经验丰富的程序员,有java、perl、python、C++等经验,这是我第一次考虑编写WS,并且没有其他WSS的经验,所以我正在寻找一些指导。我是否只是使用了WSDL/SOAP,而忘记了大家所说的REST是多么流行、简单和有用


共 (2) 个答案

  1. # 1 楼答案

    仅供参考——REST确实有一个类似WSDL的自动生成模式定义,名为WADL。但几乎没有人使用它

  2. # 2 楼答案

    福希尔

    我建议你不要为此费心去学习肥皂。Ws-*具有很高的学习曲线,而且(不必要的)复杂性可能会让你生不如死

    看看你的技能(Java、Perl、Python、C++),你应该对REST(或者至少基于HTTP)方法非常满意。而且:你会很快得到结果

    正如S.洛特所说,不要担心代码生成。你不需要它

    如有疑问,我建议您加入雅虎集团的rest讨论: http://tech.groups.yahoo.com/group/rest-discuss/ 你通常会得到立即的帮助,一切都在那里休息

    就我个人而言,我还没有看到任何可以从使用WS-*中受益的用例