1

这个问题来自我的 webapp,一个用 Go 编写的提要阅读器。该代码可在http://github.com/matthewbauer/rivulet获得,尽管这对于回答问题不是必需的。

我有一个用 Go 编写的 webapp,它在 Google 的 App Engine 上运行。它使用常用的 App Engine 库,如数据存储区、内存缓存和用户。

有什么方法可以让我的用户在不破坏 App Engine 兼容性的情况下自行运行此应用程序?

Go 现在提供基于目标构建平台排除/包含文件的构建约束:

// +build !appengine

所以,我知道这是可能的。但是,我最大的问题是依赖于 App Engine 的库:datastore、memcache 和 user。我知道其他库提供数据存储和内存缓存,我可以自己实现用户,但我将如何包装它呢?

我知道我可以让他们使用 SDK 设置开发服务器,但这可能对某些用户来说过于复杂。我想要一个普通 Go 项目提供的单个可执行文件。那可能吗?

如果存在任何示例,我还没有找到它们;任何 App Engine 独立 web 应用的示例将不胜感激。我可以通过例子来学习。

4

1 回答 1

4

你可能会重构你的代码。

基本的经验法则是在任何你依赖 AppEngine 包的地方定义你自己的界面来使用它。这将允许您将应用程序与 appengine 库分离。

一旦定义了这些接口,就可以开始提供满足这些接口的替代方案。您将能够插入任何满足接口的 Datastore 或 Memcache,并且您的应用程序将能够在 appengine 上运行或作为独立的替代方案运行。

于 2013-07-05T06:01:14.930 回答