这个问题来自我的webapp,一个用Go编写的提要阅读器。代码可在http://github.com/matthewbauer/rivulet获得,但这不是回答问题所必需的。
我有一个用Go编写的web应用程序在Google的App Engine上运行。它使用常见的常见App Engine库,如数据存储区,内存缓存和用户。
有没有办法让我的用户在不破坏App Engine兼容性的情况下自行运行此应用程序?
Go now提供build constraints,根据目标构建平台排除/包含文件:
// +build !appengine
所以,我知道这是可能的。但是,我最大的问题是我的库依赖于App Engine:数据存储区,内存缓存和用户。我知道其他库提供了数据存储和内存缓存,我可以自己实现用户,但是我该怎么做呢?
我知道我可以让他们使用SDK设置开发服务器,但对于某些用户来说可能太过涉及。我想要一个普通Go项目提供的单个可执行文件。有可能吗?
如果有任何例子,我还没有找到它们;任何App Engine独立的webapps的例子将不胜感激。我可以通过实例学习。
答案 0 :(得分:4)
您可能会重构代码。
基本的经验法则是您依赖于AppEngine软件包的任何地方,根据您使用它的方式定义您自己的界面。这样您就可以将应用程序与appengine库分离。
一旦定义了这些接口,就可以开始提供满足接口的替代方案。您将能够插入满足接口的任何数据存储区或Memcache,并且您的应用程序既可以在appengine上运行,也可以作为独立选项运行。