架构最佳实践:Rails 和移动/Web 应用程序

Posted

技术标签:

【中文标题】架构最佳实践:Rails 和移动/Web 应用程序【英文标题】:Architecture Best Practice: Rails and Mobile/Web App 【发布时间】:2012-01-31 13:43:44 【问题描述】:

我在 Rails (3.1) 上构建了一个面向浏览器的 Web 应用程序。我也想让网络应用的一些功能在移动设备上可用。

另外...

1.) 为每个设备供应商构建本机应用程序并使用 JSON/XML 与我的 Rails Web 应用程序交互,...

我正在考虑通过重用控制器/模型并添加一些针对移动设备的新视图(在屏幕尺寸等方面......),尽可能多地重用我的 rails 应用程序中已经实现的业务逻辑。

通过这种方法,我看到了两种选择:

2.) 让最终用户在移动浏览器中访问面向移动设备的 rails 应用程序部分。

3.) 设置原生移动应用包装器,例如使用 PhoneGap,并参考用于 2.) 的 rails 应用程序的相同部分。

3.) 的优点是我可以重用我的 rails web 应用程序的业务逻辑,并同时为移动设备拥有一个“幻影”本机应用程序。 (我使用术语“幻像”是因为除了包装器之外,它并不是真正的原生,这种方法实际上只是模仿原生应用。)

问题1:除了1.)到3.)还有其他选择吗?

关于 3.)

问题 2:Apple 是否接受将此类应用(远程获取大部分内容)上传到应用商店?

-> 如果是这样,我会感到惊讶,因为它允许人们在没有 Apple 通知的情况下更改应用程序的大部分内容。

问题 3:从架构/技术的角度来看,是否建议远程获取预渲染的 html/js 以在构建于例如之上的“幻像”本机移动应用程序中执行PhoneGap?

-> 在本机移动应用程序中设置一个独立的客户端应用程序(可能使用backbone.js),将所有html,css,js保存在移动应用程序本地,并使用与后端通信不是更好吗? JSON/XML 之类的?

【问题讨论】:

【参考方案1】:

我认为这是一个很好的问题,而且我最近遇到了类似的困难。我最终将 (Q3) vaadin 与 touchkit 一起使用。如果你做的是免费的,那很好,但如果你做的是商业,那就有点贵了(尽管你可能买得起)。我意识到这与 Rails 无关,但我仍然假设问题的要点是我应该构建使用 Web 服务/中间件的本机应用程序还是使用纯 Web 应用程序。

RE(Q2),在我对这项当前技术的搜索过程中,我确实阅读了一些文章,暗示苹果不允许使用 web 应用程序样式。如,应用程序仅屏蔽加载远程 Web 应用程序的浏览器窗口。从本质上讲,我认为就苹果而言,您需要将功能绑定到他们同意的内容。这并不会真正影响网络应用程序,因为您当然可以直接从浏览器访问它们。

RE(Q1),我能看到的唯一选择是不同的中间件(例如 MQ、SOAP 等)。

【讨论】:

以上是关于架构最佳实践:Rails 和移动/Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

转 Web程序优化的最佳实践:Cookie图片及移动应用篇

同时从移动设备和 Web 刷新 JWT 令牌的最佳实践

函数计算搭建小程序Web应用后端服务

转 Web程序优化的最佳实践:JavaScript和CSS篇

Rails 3 应用程序/用户设置最佳实践?

谷歌应用引擎:隐藏 Rails 密钥的最佳实践?