【问题标题】:Sharing entities between App Engine modules在 App Engine 模块之间共享实体
【发布时间】:2016-03-21 08:28:10
【问题描述】:

我正在从 Eclipse 迁移到 Android Studio,并且有一个连接到 AppEngine 的 Android 应用程序。 我已将服务器端分成两个模块(用于端点和面向用户的请求的默认模块)和用于后端内容的“管理”模块。 现在这两个模块都需要使用实体。 (后端模块通常负责将这些实体保存到 DB,而前端默认模块是使用这些实体将数据返回给 Android 的模块)。

在 Android Studio 中的这两个模块之间共享这些实体类的最佳方式是什么?(还要确保这些类得到增强等)。我不希望在默认模块和管理员中都有重复的类。 也许在两者之间共享一个通用的“java”模块(但不确定类增强是否有效)。或者管理模块不应该使用实体,而是使用其他持久性方式?

欣赏你的想法。

【问题讨论】:

    标签: google-app-engine jpa android-studio


    【解决方案1】:

    虽然可能有不共享代码的原因,但我个人更喜欢 DRY。

    我用 Python 后端解决了这个问题,方法是将模型定义文件放在应用程序目录app/models.yaml 中并将其符号链接到每个模块子目录app/module_blah/models.yaml,因此确保所有模块看到相同的模型定义。在部署时,符号链接会自动替换为被符号链接的文件的实际内容。来自appcfg.py update

    该命令遵循符号链接并递归地将所有文件上传到 服务器。临时或源代码控制文件,例如 foo~、.svn/* 是 跳过。

    可能需要注意同时部署所有模块。

    我使用相同的技术跨模块共享整个库和通用代码,方法是根据需要将app/lib/libX 子目录符号链接到所需的app/module_blah/lib/libX

    不确定这种技术是否可以在 Java 中使用。

    【讨论】:

    • 谢谢,这是一个有趣的想法!会试一试..幸运的是我在ubuntu上
    • 我最终最终将符号链接直接指向模型文件夹(对 yaml 没有更改),并且至少代码编辑在两个模块之间共享。谢谢
    • 谢谢!任何详细说明“符号链接会自动替换为被符号链接的文件的实际内容”的文档链接?
    • 用指向文档的指针和相关引用更新了答案。
    • 我认为如果 Datastore 本身支持此功能会很有趣。在 Python 中,您可以使用 ndb.Model._lookup_model('Animal') 执行类似的操作(请参阅 cloud.google.com/appengine/docs/standard/python/ndb/modelclass),但仅当应用程序已导入模型时才支持此操作,这有点违背目的。不知道以后会不会支持这种功能?
    猜你喜欢
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 2014-09-08
    • 1970-01-01
    相关资源
    最近更新 更多