我在一个已经构建了企业SaaS解决方案的小型组织中工作。到目前为止,我们的工作流程还没有编程接口。我们正在转向一种模型,该模型允许最终用户以编程方式执行任何可在UI中完成的操作。我正在寻找用于构建该程序化层的语言/框架的建议。
从组织的角度来看,我希望当前的UI团队也拥有API的所有权。该团队熟悉PHP,Rails和Javascript。我们当前的后端代码是用Scala编写的。我倾向于不在Scala中使用API,因为它似乎不适合工作,并且在UI团队中缺乏主题专业知识。
从功能的角度来看,大多数API都是相当简单的数据库操作(CRUD),可能在顶部应用了一些简单的业务逻辑(例如搜索)。
我对使用Node.js感到有点兴趣,因为团队中的每个人都非常强大的Javascript。话虽这么说,我不只是想跳上半新技术的潮流。因为它是企业软件,所以单元测试框架,可重用性和可扩展性也都是重要的考虑因素。
有什么建议吗?
答案 0 :(得分:2)
我意识到这个问题是关于技术选择的,但是有一个基本的问题似乎非常重要:
从组织的角度来看,我希望当前的UI团队也拥有API的所有权。
虽然这听起来像是一种逻辑方法,但除非你的UI团队由真正扎实的工程师组成,否则它可能效果不佳。 SaaS API开发可以说是现代软件设计中最具挑战性的方面之一。一个优秀的API将使每个人的生活更轻松,而一个糟糕的API会让你的系统瘫痪,让你完全不知道为什么。
作为一个简单的例子,如果你没有以正确的方式解决最终用户的需求,你可能会对它们施加一些n+1 problems(因此,对你而言)。
关于how to design great APIs,有很多很棒的材料,甚至更多关于设计坏文章的陷阱。一般来说,我与之合作的大多数UI开发人员,特别是那些只熟悉脚本语言的人,都不是我委托给API设计的人。相反,我会将它们用作客户(在Scrum意义上),通过描述最终用户需求来指导设计。
答案 1 :(得分:1)
我在之前的项目中遇到过类似的问题,最后我们使用Esper的组合和我们自己使用ANTLR 3.0编写的DSL。使用完全功能运行时的最大问题是对用户代码进行沙盒化。
那就是说,我认为Node.JS将是沙箱更容易的一个,它符合您的需求。也许使用这样的东西:http://gf3.github.com/sandbox/或查看Cloud9's code以了解它们如何保证安全。我也喜欢使用Node.js,您可以使用Ace为您的用户提供一个非常漂亮的编辑器。
另请查看此帖子:How to run user-submitted scripts securely in a node.js sandbox?