创建Web服务的最佳实践

6
作为前言,我是新手网站开发者。我正在考虑创建一组RESTful网络服务,围绕一个有价值的文档库(最初的CRUD功能)。这样做理论上会创建一个完美可重用和可扩展的后端,未来可以被意想不到的应用程序所使用。
我的问题集中在如何最佳实践。我的初始需求也要求我创建一个独特的前端。我应该将前端和后端完全分离成两个项目以增强可重用性吗?这会增加开销。
如果使用GWT、Restlet和Java EE技术栈,是否会影响设置方式,请您指导。
5个回答

3

最重要的是设计一个干净的Java API - 独立于REST、RMI或你想使用的任何协议。从一个干净的Java API开始,你可以支持任何访问方法。

除非你有这些其他访问方法的用例,否则现在不要构建它们。当需要时再构建。

最初添加的最简单的接口是基于Web的接口,其中你的Web应用程序在同一个JVM中运行作为你的核心API。如果对你的用例有效,我会这样做。通过REST(或其他)协议访问你的核心API的单独控制台应用程序需要更多的工作。


你是在谈论与数据库实际交互的Java层,对吗? - Holograham
正确。与数据库交互并执行您的业务逻辑、验证逻辑等。 - Marcus Leon
这个答案很好。我唯一想补充的是要考虑部署/实现方面的问题 - 你是否愿意让你的视图层在与业务/数据层相同的JVM中运行?或者,例如,你的数据层需要坐落在防火墙后面吗?如果这些对你不重要,那么请把重点放在设计一个好的API上,把奇特的东西留到以后。 - Steven Mackenzie

1
Martin Fowler不久前撰写了一篇关于REST基础的非常好的文章:Richardson Maturity Model。我发现它对于理解REST的原则非常有帮助。

谢谢,我会阅读的...不过这是否意味着我完全搞砸了这个问题? - Holograham
啊,好的 :P 这绝对是一篇有见地的文章。 - Holograham

1
如果您想使用基于REST的后端服务,应该使用RestyGWT项目,它允许您使用GWT-RPC编程风格来访问基于JSON的RESTful服务。
使用基于REST的JSON服务而不是传统的GWT-RPC服务的好处在于这些服务可以更容易地被其他客户端或甚至混搭使用。

0

如果你知道前端将会使用GWT,那么考虑使用GWT-RPC而不是REST。更多的讨论在这里

然而,如果你认为最终可能需要通过REST API公开数据,或者在前端使用不同的技术,那么REST可能是更好的选择。

gwt-rest项目也可能会有所帮助。


谢谢,我已经考虑了两种方式,基于可重用性的要求,最终决定采用REST。 - Holograham

0
一位同事和我使用前端和后端的分离项目编写了一个GWT系统,这对于明确代码执行位置非常有帮助。但我不确定在未来的系统中是否还需要这样分离。
此外,考虑到您是新手网站开发,我认为您不应期望制作完全可重用的后端。您将在学习过程中获得很多经验。我认为敏捷程序员会建议采用迭代方法:(a)使小方面工作,然后(b)重构它以使其优美。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接