2013-03-19 64 views
2

我在一個建立了企業SaaS解決方案的小型組織中工作。直到這一點,我們的工作流程沒有編程接口。我們正在轉向一種模式,這將允許最終用戶以編程方式執行任何可以在UI中完成的任務。我正在尋找用於構建該程序層的語言/框架方面的建議。SaaS API選擇哪種語言?

從組織角度來看,我希望當前的UI團隊也擁有API的所有權。該團隊熟悉PHP,Rails和Javascript。我們當前的後端代碼是用Scala編寫的。我傾向於不使用Scala中的API,因爲它看起來並不是這個工作的正確工具,並且在UI團隊中缺乏圍繞它的主題專業知識。

從功能的角度來看,大部分API都是相當簡單的數據庫操作(CRUD),可能有一些簡單的業務邏輯應用於頂層(例如搜索)。

我對使用Node.js感興趣,因爲團隊中的每個人都非常喜歡Javascript。這就是說,我不只是想跳上半新技術的潮流。因爲它是企業軟件,單元測試框架,可重用性和可擴展性也都是重要的考慮因素。

有什麼建議嗎?

回答

1

在之前的項目中,我遇到了類似的情況,最後我們用Esper和我們自己的DSL編寫的組合使用ANTLR 3.0。我們最關心的是如何使用完全的功能運行時,對用戶的代碼進行沙箱處理。

這就是說,我認爲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?

2

我意識到這個問題是關於技術選擇,但有似乎真的很重要叫出關心的基本問題:我想

從組織的角度看目前的UI團隊也擁有API的所有權。

雖然這聽起來像是一種合乎邏輯的方法,但它可能無法正常工作,除非您的UI團隊由非常紮實的工程師組成。 SaaS API開發可以說是現代軟件設計中最具挑戰性的方面之一。一個偉大的API將使每個人的生活更輕鬆,而一個糟糕的API會讓你的系統癱瘓,讓你完全不知道爲什麼。

作爲一個簡單的例子,如果你不解決在正確的道路最終用戶的需求,你可能會迫使他們的一些n+1 problems(因此,在你。)

有一堆關於how to design great APIs的優秀材料,甚至更多關於設計糟糕設計的缺陷。一般來說,我所使用的大多數UI開發人員,特別是那些只熟悉腳本語言的開發人員,不是我將委託給API設計的人員。相反,我會利用它們作爲通過描述最終用戶需求指導設計的客戶(從Scrum意義上來說)。