Ruby on rails 关于基于API的应用程序开发的困惑
传统上,我使用RubyonRails构建应用程序,很少提取服务。我现在正在进入一个更易于管理和性能更好的领域(SOA w/API) 我所困惑的是,如果我在像Go这样的东西中构建一个API服务器,我到底会失去什么。假设我有一个文章模型,那么通过系统的旅程会是什么样子?我指的是ORM、控制器、api等 如果我在Go中有一个API,ORM是在API的级别上,还是仍然可以使用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作为应用服务器 我所关心的
- 转到API服务器
- Rails作为应用服务器
我所关心的是,如果我采用这种方法,我是否会丢失Rails附带的很多功能,比如迁移。对于SOA,我不会说这一定是Go或Ruby/Rails特有的。如果你只是使用Ruby或者自己去的话也是一样的。归根结底就是应用程序的架构。您可以使用Ruby或Go实现SOA 面向服务的体系结构有很多好处
- 明确责任划分
- 不同的团队可以处理不同的组件
- 简化的应用程序架构代码
- 可以降低开发和管理成本
- 配置灵活性
- 有针对性的性能监控
- 简化/渐进式软件更新
- 固有服务文档(godoc从源代码生成)
- 目标单元测试(服务是否有效?)
- 更好的可扩展性
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
内部。