【问题标题】:Webservice or Webapp?网络服务还是网络应用?
【发布时间】:2014-03-04 12:28:23
【问题描述】:

我已经使用 Spring 制作了一个 RESTFul Web 服务,供各种移动客户端使用。现在,如果将来我需要制作一个门户网站来实现相同的功能,这将是一个更合适的选择,为什么?如果可能,请提供适当的引用

选项 1:我创建一个新的 webapp,它将使用之前创建的 RESTFul webservices 选项 2:我使用之前为 RESTFul 制作的代码库(可能需要在控制器层进行一些修改)制作一个新的 webapp,并将这些 JAVA 代码与新的 webapp 集成。

哪种方法更好或更推荐,为什么?如果可能的话,也请提供引用。

谢谢。

【问题讨论】:

    标签: java spring web-services rest web-applications


    【解决方案1】:

    选项 1 将避免代码重复,但会强制您进行远程调用并带来相应的性能损失。

    选项 2 将在两个项目上重复代码,这不是一个好主意。

    我建议您使用选项 3,包括分解您的第一个项目,并将通用代码放在一个 jar 中,以便从 REST API 项目和 Web 应用程序项目中引用。

    【讨论】:

    • 不,操作员说选项 2 只会添加到现有代码库中,因此不会有重复。它本质上只是简单地添加更多的端点,这些端点恰好产生 HTML 而不是 JSON 或 XML。
    • 实际上,OP 有点含糊,因此您的解释可能是有效的。正如您所解释的那样,“新 webapp”建议了一个新的代码库,但我怀疑他的意思是添加到现有的代码库中。
    • 添加代码将添加更多端点,如 nickdos 所述。您能否提供更多有关您建议的选项 3 的信息?也许一个链接可以让我更深入地了解这个想法。
    【解决方案2】:

    只有您才能真正回答这个问题,因为您对项目的了解比我们(或您提供的)多得多。这两个选项都是有效的,其选择取决于项目的具体情况。更重要的是,该决定应该是对用户最有利的决定。

    话虽如此,我已经多次遇到这种情况,并且我已经选择了两种选择。两者都有效,但根据我的经验,我会更频繁地选择选项 1 而不是选项 2。我会使用 Grails 或现代 javascript 框架(如 Angular JS)来生成一个仅使用您的 Web 服务的客户端应用程序。这具有小型和模块化的优点,允许您“吃自己的狗粮”,并提供示例代码供其他人用来编写应用程序来使用您的 Web 服务。

    【讨论】:

      【解决方案3】:

      以下是我的观点:

      选项 1:这是一个不错的选项,它将具有基于服务的依赖关系,如果服务中的任何实现发生更改,它将避免更改 webapp 代码。然而,它会在新的 webapp 中添加额外的翻译。

      选项 2:这将在服务和客户端(新 web 应用程序)之间紧密耦合。如果不更改新应用程序,客户端和服务器就无法独立发展。两个项目中都会有不断的代码更改。

      我建议您使用选项 1。此外,我对 RESTful 服务设计有一些建议。它可以为所有控制器设计接口,也可以从现有控制器中提取接口,这些接口可以作为 EJB 公开给内部客户端,如新的 webapp。这样可以使用具有相同实现的 RESTful 和 EJB 公开相同的服务。

      【讨论】:

      • 您能否提供有关如何为所有控制器设计接口或从现有控制器中提取接口的任何见解。以及如何暴露它?我是 J2EE 的新手,所以我没有太多的知识。如果您可以提供任何指向示例的链接将会很有帮助..
      • @NayanjyotiDeka 是的,您可以参考我的示例项目 github.com/sachinb4u/emp-service。它具有设计为接口的 RESTful Web 服务,该接口也公开为无状态 EJB。
      猜你喜欢
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      相关资源
      最近更新 更多