对基于API的应用程序开发的困惑

时间:2013-08-03 11:58:07

标签: ruby-on-rails api go

传统上,我使用Ruby on Rails构建应用程序,很少提取服务。我现在正在进入一些更易于管理和更高效的方面(SOA w / API)。

我感到困惑的是,如果我在像Go这样的东西中构建一个API服务器,我到底输了什么。假设我有一个文章模型,通过系统会有什么样的旅程?就此而言,我的意思是ORM,控制器,api等。

如果我在Go中有API,那么ORM是否在API级别上,或者我是否仍然可以使用Rails(可以与API通信)?然后控制器怎么样?如果这个堆栈甚至有意义,我就迷失了:

  • 作为API服务器
  • Rails作为应用程序服务器

我关心的是,如果采用这种方法,我是否会丢失Rails附带的许多功能,例如迁移。

1 个答案:

答案 0 :(得分:1)

使用SOA,我不会说这必然是Go或Ruby / Rails特有的。如果您只是自己使用Ruby或Go,那将是相同的。它归结为如何您的应用程序的架构。你可以用Ruby或Go来做SOA。

面向服务的体系结构有很多好处。

  • 明确责任分离
  • 不同的团队可以处理不同的组件
  • 简化应用程序架构代码
  • 可以降低开发和管理成本
  • 配置灵活性
  • 有针对性的绩效监控
  • 简化/渐进式软件更新
  • 固有服务文档(godoc从源代码生成)
  • 有针对性的单元测试(服务是否有效?)
  • 更好的可扩展性

您可以为该列表添加更多好处。

要克服的最大障碍是初步规划,尤其是第一次。你打破了多远?什么东西应该分开?如果找不到合适的平衡点,最终可能会失去利益。

至于设计SOA架构的如何,这实际上取决于。如果我正在构建包含文章和评论的博客服务,您可以使用以下API方法:

SubmitEntry
GetEntry
SearchEntries
GetComments
SubmitComment

一般的想法是你的服务做/做所有的工作。 font-end应用程序只是一个GUI。使用MVC,您的前端仍然可以拥有一个模型 - 它只会进行API调用而不是数据库调用。

至于使用什么语言,这真的取决于你。 Go是一种令人惊叹的语言。它的社区发展很快,但它很年轻。您可能无法在Ruby中找到原本可以使用的软件包。您可能最终必须自己编写。话虽如此,Go有很大的潜力,写作很有趣!

个人经验:我工作的公司过去常常使用PHP。一年前,我们决定需要做出改变,我们决定选择Go。我们不得不自己写一些图书馆,但总的来说这是令人惊叹的一年。我们现在只使用Go(使用一些C / C ++)。