Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 关于基于API的应用程序开发的困惑_Ruby On Rails_Api_Go - Fatal编程技术网

Ruby on rails 关于基于API的应用程序开发的困惑

Ruby on rails 关于基于API的应用程序开发的困惑,ruby-on-rails,api,go,Ruby On Rails,Api,Go,传统上,我使用RubyonRails构建应用程序,很少提取服务。我现在正在进入一个更易于管理和性能更好的领域(SOA w/API) 我所困惑的是,如果我在像Go这样的东西中构建一个API服务器,我到底会失去什么。假设我有一个文章模型,那么通过系统的旅程会是什么样子?我指的是ORM、控制器、api等 如果我在Go中有一个API,ORM是在API的级别上,还是仍然可以使用Rails(与API对话)?那么控制器呢?我不知道这个堆栈是否有意义: 转到API服务器 Rails作为应用服务器 我所关心的

传统上,我使用RubyonRails构建应用程序,很少提取服务。我现在正在进入一个更易于管理和性能更好的领域(SOA w/API)

我所困惑的是,如果我在像Go这样的东西中构建一个API服务器,我到底会失去什么。假设我有一个文章模型,那么通过系统的旅程会是什么样子?我指的是ORM、控制器、api等

如果我在Go中有一个API,ORM是在API的级别上,还是仍然可以使用Rails(与API对话)?那么控制器呢?我不知道这个堆栈是否有意义:

  • 转到API服务器
  • Rails作为应用服务器

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

对于SOA,我不会说这一定是Go或Ruby/Rails特有的。如果你只是使用Ruby或者自己去的话也是一样的。归根结底就是应用程序的架构。您可以使用Ruby或Go实现SOA

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

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

要克服的最大障碍是最初的计划,尤其是第一次。你把事情分解到什么程度?什么东西应该分开?如果你没有找到正确的平衡点,你最终可能会失去利益

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

SubmitEntry
GetEntry
SearchEntries
GetComments
SubmitComment
总的来说,你的服务完成了所有的工作。字体端应用程序只是一个GUI。有了MVC,您的前端仍然可以有一个模型——它只是进行API调用,而不是数据库调用

至于使用哪种语言,那真的取决于你。围棋是一门神奇的语言。它的社区发展很快,但还很年轻。您可能无法在Ruby中找到一个本来可以使用的包。你可能最终不得不自己写。话虽如此,围棋还是很有潜力的,写起来也很有趣


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

通过转向“SOA”,您试图解决的难点是什么?非常感谢!这将非常有帮助。关于这一点,我还有另一个问题。假设我使用了一个使用api的模型,如果该模型是rails这样的框架(在应用服务器上运行)的一部分,我会不会失去使用api的好处?我问这个问题的原因是因为这意味着:
client->appserver(rails)->api->database
,而不是:
client->appserver->database
。如果我通过应用服务器访问api,性能会有多大好处?@Zenph延迟取决于每个“服务器”的物理位置。您的
app server->api->database
堆栈可能位于LAN/VLAN上。我们在谈几秒钟。您的
应用程序服务器
可以缓存来自
api
的结果,就像您从
数据库
缓存结果一样。如果
appserver
使用特定的
api
,它不必关心如何使用,只需要关心它需要做什么。您还可以编写多个
app server
s来与相同的
api
通信,甚至向用户公开
api
。例如,如果您决定从MySQL更改为MongoDB,那么只需更改
api
内部。