为第三方创建/公开 Web 服务的设计决策

Posted

技术标签:

【中文标题】为第三方创建/公开 Web 服务的设计决策【英文标题】:Design Decision for Creating/Exposing Webservices for thrid party 【发布时间】:2012-03-26 09:54:36 【问题描述】:

我们正在开发与旅游领域相关的基于 Java 的 CMS,并且正在考虑公开 Web 服务,以便感兴趣的第三方可以利用它们从我们的系统中获取数据/内容以在门户/应用程序中发布

我不确定我们应该如何公开这些 Web 服务,也无法清楚地了解设计方面。

由于我们有 Action 类(控制器)来处理视图并将数据发送回视图,这些 Action 类将负责与 Facade 层进行交互。

有人可以建议我什么应该是最好的方法。

    我们是否也应该将 Action 类公开为 Rest 接口。 我们是否应该创建一个单独的一组应该公开的类。 我们应该继续使用 Rest 样式还是基于 SOAP 的方法

我的问题有点主观,但到目前为止我还没有任何方向,我不确定我可以在这里放任何其他信息

更新

到目前为止,我们还没有考虑预订门票等,但大部分内容都与仅从系统中获取内容有关。 但将来我们可能会提供一些选项,向第三方提供一些可以在那里销售的产品

【问题讨论】:

【参考方案1】:

首先你可以看看 Difference between REST and WebServices

那么您必须知道,第三方是否能够更改您这边的某些数据(注册、身份验证、订票等)。在这种情况下,我更喜欢使用 REST。

在我看来,您应该创建一些类,这些类将负责使用您的 Action 类,并且它们还必须实现一些安全功能。我认为您的操作是内部的东西,必须在更高级别上实施安全性。

如果访问是只读的(比如获取 XXXX 类型的所有数据),那么 SOAP 也适用。

所以我的建议: 2. 单独的类集 3. 用户 REST - 虽然它似乎更灵活。

【讨论】:

感谢您的输入,基本上 Action 类是 Struts2 Action(MVC 框架),是的,从 UI 来看,我们有 Spring 安全性。【参考方案2】:

如果您想节省时间和精力开销,请将操作类公开为 URL。

但是,从长远来看,REST API 将是您的最佳选择,因为它们具有可扩展性,并且如果您希望用户在以后通过 API 更新/创建数据。

【讨论】:

以上是关于为第三方创建/公开 Web 服务的设计决策的主要内容,如果未能解决你的问题,请参考以下文章

如何在业务逻辑层设计数据传输对象

Web入门基础360网络安全大学Web基础公开课知识点总结(基础篇)

基于web的满意度调查问卷源码功能说明

Visual Studio第三方插件创建

Axis2如何限制一个Web服务

如何在没有第三方服务的情况下在开发过程中为 webhook 公开本地服务器?