2010-03-28 178 views
5

前言我是网络开发新手。我正在围绕有价值的文档库(初始CRUD能力)创建一组核心的RESTful Web服务。在理论上,我在理论上创建了一个完美可重用和可扩展的后端,供将来未预料到的应用程序使用。创建Web服务的最佳实践

我的问题围绕着这样做的最佳做法。我最初的要求是我也创造了一个独特的前端。我会将前端和后端完全分开的项目来提高重用性。这会增加开销。

查看使用GWT,Restlet和Java EE技术堆栈(如果这会影响安装程序的话)。

回答

2

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

除非您有这些其他访问方法的用例,否则请不要立即构建它们。您可以在需要时进行构建。

最简单的添加界面是基于Web的界面,其中您的Web应用程序与核心API在相同的JVM中运行。如果这适用于你的用例,我会这样做。建立一个单独的控制台应用程序,通过REST(或其他)协议访问您的核心API是更多的工作..

+0

你是在谈论实际与数据库交互的Java层是否正确? – Holograham 2010-03-28 20:33:14

+0

正确。与数据库进行交互并执行业务逻辑,验证逻辑等。 – 2010-03-28 20:34:38

+0

这个答案很好。我唯一要补充的是考虑你的部署/实现问题 - 你很高兴你的视图层和你的业务/数据层在同一个JVM上运行吗?或者,例如,您的数据层是否需要坐在防火墙后面?如果这些对你来说并不重要,通过一切手段把你的重点放在设计一个好的API上,并在以后留下奇特的东西。 – 2010-03-29 11:10:54

1

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

+0

谢谢你会阅读...虽然这是否意味着我完全拙劣的问题? – Holograham 2010-03-28 19:38:17

+0

好的:P这绝对是一篇富有洞察力的文章。 – Holograham 2010-03-28 19:55:43

0

如果您知道您将要使用GWT作为前端,您可能需要考虑使用GWT-RPC而不是REST。更多讨论here。然而,如果您认为您最终可能希望通过REST API公开您的数据,或者在前端使用不同的技术,那么REST可能是更好的选择。

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

+0

谢谢,我已经考虑过,REST是基于可重用性要求的最终决定。 – Holograham 2010-03-28 19:48:04

0

一位同事和我写了一个GWT系统,使用单独的项目为前端和后端。保持代码执行的地方非常明确是很有帮助的。但我不确定我是否会在未来的系统中进行分离。

此外,由于您是网络开发新手,我不认为您应该期望做出完美可重复使用的后端。你将会学到很多东西。我认为敏捷编码人员会推荐一种迭代方法(a)让一个小方面工作,然后(b)重构它以使它变得美丽。

1

如果您想使用基于REST的后端服务,您应该使用RestyGWT项目,该项目允许您使用GWT-RPC编程风格来访问基于JSON的宁静服务。

使用基于REST的JSON服务优于传统的GWT-RPC服务的好处是,这些服务可以被其他客户端甚至混搭使用。