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