2

我在一个构建了企业 SaaS 解决方案的小型组织中工作。到目前为止,我们的工作流程还没有编程接口。我们正在转向一种模型,该模型允许最终用户以编程方式执行任何可以在 UI 中完成的操作。我正在寻找有关您将用于构建该编程层的语言/框架的建议。

从组织的角度来看,我希望当前的 UI 团队也拥有 API 的所有权。该团队熟悉 PHP、Rails 和 Javascript。我们当前的后端代码是用 Scala 编写的。我倾向于不在 Scala 中开发 API,因为它似乎不是适合这项工作的工具,而且 UI 团队缺乏围绕它的主题专业知识。

从功能的角度来看,大多数 API 将是相当简单的数据库操作 (CRUD),可能会在顶部应用一些简单的业务逻辑(例如搜索)。

我对使用 Node.js 有点感兴趣,因为团队中的每个人都非常擅长 Javascript。话虽如此,我不只是想跳上半新技术的潮流。因为它是企业软件,所以单元测试框架、可重用性和可扩展性也是重要的考虑因素。

有什么建议么?

4

2 回答 2

2

我意识到这个问题是关于技术选项的,但有一个基本问题似乎非常重要:

从组织的角度来看,我希望当前的 UI 团队也拥有 API 的所有权。

虽然这听起来是一种合乎逻辑的方法,但除非你的 UI 团队由真正可靠的工程师组成,否则它可能效果不佳。SaaS API 开发可以说是现代软件设计中最具挑战性的方面之一。一个好的 API 会让每个人的生活更轻松,而一个糟糕的 API 会让你的系统崩溃,让你完全不知道为什么。

举个简单的例子,如果你没有以正确的方式解决最终用户的需求,你很可能会在他们身上强加许多n+1 问题(因此,也就是在你身上)。

有很多关于如何设计优秀 API的优秀材料,甚至更多关于设计糟糕 API 的陷阱的资料。一般来说,与我合作过的大多数 UI 开发人员,尤其是那些只熟悉脚本语言的开发人员,都不是我会委托进行 API 设计的人。相反,我会将它们用作客户(在 Scrum 意义上),通过描述最终用户的需求来指导设计。

于 2013-04-02T22:58:10.907 回答
1

我在之前的项目中遇到过类似的情况,我们最终使用了Esper和我们自己使用ANTLR 3.0编写的 DSL的组合。我们对使用全功能运行时最大的担忧是对用户代码进行沙箱处理。

也就是说,我认为 Node.JS 将是更容易沙箱的一种,它符合您的需求。也许使用这样的东西:http: //gf3.github.com/sandbox/或查看Cloud9 的代码以了解它们如何保证安全。我也喜欢 Node.js,您可以使用Ace为您的用户提供一个非常漂亮的编辑器。

另请查看这篇文章:如何在 node.js 沙箱中安全地运行用户提交的脚本?

于 2013-03-20T00:49:50.407 回答