我已经使用Spring制作了一个RESTFul Web服务,供各种移动客户端使用。现在,如果将来我需要建立一个Web门户来实现相同的功能,这将是一个更合适的选择,为什么?请尽可能提供适当的引用
选项1:我创建了一个新的webapp,它将使用以前制作的RESTFul Web服务 选项2:我使用先前为RESTFul编写的代码库(可能需要在控制器层进行一些修改)并将这些JAVA代码与新的webapp集成,从而创建一个新的webapp。
哪种更好或推荐的方法,为什么?如果可能,请提供引用。
感谢。
答案 0 :(得分:1)
选项1将避免代码重复,但会强制您使用相应的性能惩罚进行远程调用。
选项2将在两个项目上重复代码,这不是一个好主意。
我建议您使用选项3,包括分解您的第一个项目,并将公共代码放在jar上,以便从REST API项目和Web应用程序项目中引用。
答案 1 :(得分:0)
只有你能真正回答这个问题,因为你有更多关于项目的信息,而不是我们(或你提供的)。这两个选项都是有效的,其选择取决于项目的具体情况。更重要的是,决策应该是最有利于用户的决策。
话虽如此,我已经多次出现过这种情况,而且我已经选择了两种选择。两者都有效,但根据我的经验,我会比选项2更频繁地选择选项1。我使用Grails或现代的javascript框架(如Angular JS)来生成一个仅使用客户端的应用程序来消耗您的Web服务。这样做的好处是体积小,模块化,允许您“吃自己的狗粮”,并为其他人提供示例代码,用于编写应用程序来使用您的Web服务。
答案 2 :(得分:0)
以下是我的观点:
选项1:这是一个不错的选择,它将具有基于服务的依赖性,如果服务中的任何实现更改,将避免更改webapp代码。但是,这将在新的webapp中添加额外的翻译。
选项2:这将在服务和客户端(新的webapp)之间紧密耦合。如果不对新应用进行更改,客户端和服务器无法独立发展。项目中将会有不断的代码更改。
我建议您使用选项1.此外,我对RESTful服务设计提出了建议。它可以设计为具有所有控制器的接口或从现有控制器中提取接口,并且可以作为EJB暴露给内部客户端(如新的webapp)。这样,可以使用RESTful和EJB以相同的实现方式公开相同的服务。