我正在开发移动/VOIP 域中的应用程序。这对我来说真的是一个灰色地带。以下是有关该应用程序的一些详细信息:
- 这基本上就像自动充值/预付费移动服务
- 与我之前编写的 ERP 应用程序相比,将具有中等复杂性的逻辑。
- 响应中的视图部分将是纯文本,将作为 SMS/USSD pull 发送给用户,语音 XML (VXML) 将作为 IVR 响应发送给用户。
- 路由逻辑非常简单,因为对于每种类型的回复只有两到三个 URL 是重要的。
约束:
我们有在 Perl 中构建的核心系统(它是一个服务于许多其他 VOIP/移动相关服务的遗留系统),以及一个跟踪损益的会计系统,但它已经变得非常复杂。所以我们决定单独做这个应用,只使用 SMS/USSD 和 IVR。但是,此应用程序的每个用户都必须是核心系统的注册用户,以用于会计目的;这我们可以通过 API 调用轻松实现。
现在,为了发送 IVR 和 USSD 的回复/响应,我们需要在提供这些设施的供应商处部署应用程序。但是我们不希望总是需要登录到他们的服务器以获取每日报告和会计资料,因为对于我们的每个客户,我们将有不同的 USSD/SMS/IVR 系统流程。
所以,我们决定这个新应用确实会分成两个子应用。
- 一个应用程序将处理具有 USSD/SMS/IVR 域的用户接口,并将部署在供应商的服务器上,我们将其称为“客户端软件”。
- 第二个应用程序将处理所有核心业务逻辑和报告系统,并将部署在我们的服务器上,我们将拥有完全访问权限。我们将其称为“中间件”。
申请的基本流程:
- 用户拨打简码。
- 呼叫登陆我们的供应商服务器,客户端应用程序将在其中处理请求并将其注册为本地数据库中的用户。
- 客户端也会对中间件进行 API 调用。在那边注册这个用户以及核心业务逻辑及时自动充值等。
- 然后,中间件还将对核心系统进行 API 调用,以便在该处注册该用户以及用于记帐目的。
现在,将有许多这样的客户端应用程序与单个中间件应用程序交互。我们决定用 Ruby 构建这些应用程序。我会为此遵循 RESTful 架构,因为涉及到很多 API 调用。
在这三个框架中,Rails、Padrino或Sinatra,它们中的任何一个特别适合这个项目吗?如果可能的话,我将不胜感激详细的相关利弊。