0

我是那些过去大部分时间都在使用 .exe 和 .jar 的经典本地程序员之一。在过去的一年里,我已经将自己投入到那些让我印象深刻的 Web 框架和技术的世界中。在过去的 1.5 个月里,我爱上了 Go,因为它的严格性以及它看起来是多么“独立”。所以现在到了真正的问题......

  • Go app engine 应用,我们为什么需要这个?

  • 选择包装应用程序(框架)的区别和理由是什么?

我假设它的目的是将应用程序中的一些通信加载到包装器中,但遗憾的是,我似乎无法(通过文档和讨论)弄清楚这种调制背后的具体目的是什么。

向您的方向致以最诚挚的问候和网络击掌!

4

2 回答 2

4

这确实是两个不同的问题。

1. 为什么选择 GAE?

由你决定。GAE 提供基于云的托管,您可以付费使用。它有点类似于亚马逊网络服务。你的 Go 应用程序将被上传到 GAE,在那里它提供你的网络服务,你的用户可以做很多美妙的事情。同时,您永远不需要知道在任何给定时间哪个实际服务器正在执行服务 - 应用程序可以在其服务器之间动态迁移。GAE 在保持服务器安全、备份等方面为您提供了较长的正常运行时间和较低的工作量。它还可以灵活地应对负载激增。

相反,您可能更喜欢租用私人服务器(例如在 Rackspace)或仅租用虚拟机。您最好是一名 Linux 专家(在Serverfault获得大量帮助),并且您必须自己完成备份、防火墙等工作。它的成本可能会(少得多)。或者更多。

2. 选择框架?

net/http API 允许您编写 HTTP 服务器代码来完成任何您想做的事情。但是你必须做很多艰苦的工作。在相反的极端,像Revel这样的框架使快速服务器开发成为可能,只要它能做你想做的事情。如果你偏离了它提供的功能,你可能需要做大量的挖掘来找出如何扩展框架。

其他有趣的工具包包括GorillaGocraft WebGoji。就复杂性而言,它们位于 Revel 和基本的 net/http 之间。

于 2013-06-11T18:02:07.163 回答
1

为了回答您的第二个问题,这里有一些使用框架(例如,狂欢)与更简单的工具包(例如,大猩猩)的优缺点

一般来说,使用框架的优点是:

  • 它提供了许多子包来处理重要的与 Web 相关的子任务,如模板、以指定格式(如 json 或 xml)生成数据、查询转义等。
  • 它处理样板http处理
  • 它(希望)强制执行最佳实践,例如转义字符串
  • 它通过在您处理请求的方式中实施一致的设计模式来帮助您管理复杂性

使用框架的缺点:

  • 框架往往是“固执己见”的,这意味着你必须先接受它们的一般哲学并理解它们的核心概念,然后才能使用它们;对于很多框架来说,这可能是相当多的精神开销
  • 额外的抽象层,这意味着你离真正发生的事情又迈出了一步,如果出现问题,将会有更多的东西需要理解和调试
  • 在框架中做一些不是标准用例的事情可能很脆弱而且很难
  • 未来的可维护性:大多数框架的寿命都不长。Django 和 Rails 已经存在了很长时间,但是在它们之前有一个巨大的框架墓地。事后看来是 20/20,但从一开始就很难选择合适的马。

推荐

很难提前打电话。这在很大程度上取决于您的问题的具体情况,但我会说在 Go 的情况下,选择更简单的选项。其他语言框架的大部分附加值是它们包含处理重要任务的有用子包,但 Go 已经在其标准库中包含了很多这些(例如,encoding/json、net/http、net /url,文本/模板)。我只使用 Gorilla 工具包和 go 标准库构建了一个相当复杂的 Web 应用程序,它非常好,最好的部分是,它非常容易理解代码的作用,我可以向其他人解释它而无需要求他们首先阅读一些第三方框架的大量关于页面。

如果您想了解其他人如何使用 Gorilla,您可以尝试查看真实世界的使用示例。将其与人们如何使用更复杂的框架并选择您更喜欢的框架进行比较。

于 2013-09-12T03:58:31.453 回答