【问题标题】:silly yet sensible concern about single page web application architecture [closed]对单页 Web 应用程序架构的愚蠢但明智的担忧 [关闭]
【发布时间】:2013-07-18 07:29:03
【问题描述】:

我正在启动一个新的网络应用程序,我有一个非常愚蠢的担忧,我想我会向你们所有人澄清。

此应用程序将是一个单页网络应用程序,将以 Html、JS/Flex 作为前端和 PHP 作为后端进行开发。所以我有两个选择

  1. 将所有应用程序逻辑保留在客户端,即 (JS/Flex),并使用 PHP 仅将数据输入和输出到数据库。
  2. 仅对 UI 使用 JS/Flex,并将所有应用程序逻辑保留在 PHP 中,将作为独立服务使用。

两者各有优缺点

  • 如果我选择第一个选项,应用程序的用户体验会很流畅。 (因为这涉及的客户端服务器交互非常少)
  • 如果我选择第二个选项,应用程序逻辑将存在于 PHP 中,稍后我可以将其公开为 API,以防我希望其他人使用相同的 API 并构建自定义应用程序。

但我无法就两者的优缺点进行争论并最终确定一个。请帮忙,希望您在开发生涯中一定遇到过类似的问题。

提前致谢!

【问题讨论】:

  • 这取决于应用程序。如果某些数据需要持久化,那么您当然应该将其存储在服务器端。如果不是,本地数据库确实更好。
  • 使用适当的单页应用程序,您可以使后端成为您从前端调用的 api。这叫吃自己的狗粮。
  • 你也可以发布一个客户端的api。
  • @abc123 你应该展开并发布它作为答案......这是正确的。
  • @Orangepill 在这种情况下,客户端 API 的真正含义是什么?

标签: php javascript apache-flex laravel single-page-application


【解决方案1】:

有很多 design patterns 但是,由于您有兴趣使 API 以后最适合您的可能性是您的 选项 2。

仅对 UI 使用 JS/Flex,并将所有应用程序逻辑保留在 PHP 中,将作为独立服务使用。

只需使用以下技术之一为单页应用程序前端 UI 制作前端:


然后将您的所有业务逻辑转换为以PHPPython 或任何其他backend language 编写的RESTful API 调用。

如果这些服务允许完整的CRUD 而不仅仅是Read,我建议使用OAuth 来保护您的服务,只允许授权用户使用Create, Update, and Delete。您可以使用OAuth PHP library

这样做的原因是它允许您创建任何其他应用程序,而只需重建 UI,而不必用每种语言重新制作业务逻辑 (C, C++, objective C, C#, Python, PHP, JavaScript, Ruby, etc.)。然后,当您向公众发布API 时,他们将使用有效的用户名和密码(由用户提供)调用您的OAuth service,并且由于您现在拥有eating your own dog food,因此能够制作功能丰富的全功能应用程序。这是一个非常重要的概念,尽管开发可能需要更长的时间,但您不必re-architectre-developre-factor 大量代码。

【讨论】:

    【解决方案2】:

    出于以下原因,我建议并更喜欢option 2 1.如您所说,您可以稍后公开API。 2. 应用逻辑全部由PHP处理,安全性更高。

    【讨论】:

    • 没有什么能阻止他使用选项一并从前面的代码中利用他自己的 api。
    • 感谢鲁尼什!没错。你觉得这有什么其他好处吗?由于选项 2 可能会稍微影响用户体验,因此我正在寻找能够弥补缺点的可靠优势。
    • 我不确定您的应用程序是什么以及如何使用它。但坚实的优势是 API。因为一旦你拥有一个完整的 API,你就可以使用相同的 API 构建不同的移动应用程序、平板电脑应用程序和当然网络应用程序。
    • @Runish,但是我同意方法2,但是如果现在更需要用户体验并且只考虑API,那么首先可能是更实用的方法。
    • @kuldeep 是的,它当然取决于您的应用程序究竟更优先考虑什么。我们只是在谈论这两种选择的优势。
    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2011-10-23
    相关资源
    最近更新 更多